Tobias Mock

@tjammer
0 Followers
56 Following
114 Posts
physicist turned software dev.
gamedev in my free time.
I'm also working on a language
codeberghttps://codeberg.org/tjammer
githubhttps://github.com/tjammer
@contextfree C++ leaks a bit, I see

The display hinge of my 12 year old cheap thinkpad finally gave in.
I decided to get a @frameworkcomputer as my new machine. Setup was a breeze and it looks and feels super nice.
I installed an atomic fedora version for the first time (kinonite 40, with plasma 6). The display + fractional scaling make everything look so crisp.

I will take a photo tomorrow when the sun is out.

I implemented soft shadows.
It works by raymarching the signed distance function of the player model, and produces really nice results.

This approach won't work for skinned meshes but if I stick to vehicles, I might be fine.

Also, I still don't really know what type of game this will be.

#indiedev #gamedev

@Codeberg Only building the package on main is the simplest solution if I have a place to upload and host packages. I don't have one and wanted to use codeberg for that, "releases" seemed the logical place for this.

If there is another way to upload something I'd be happy to learn about it. To create a release, I need a tag (https://codeberg.org/api/swagger#/repository/repoCreateRelease) and that brought me to the above question.

Forgejo API

@Codeberg Sure, I'm also doing my this in CI right now via API calls.

But I'm unsure how to tag those nightly releases. Do I just create a new tag at HEAD?

What I'm using right now is a "latest" tag, which I don't update, but I instead upload a new binary after each commit on main. This way, the release points to a commit which is not in sync with the binary :(

How does one correctly do nightly / latest releases?

The way releases work on @Codeberg, I need a tag to create a release. To re-tag HEAD with "latest" after each commit feels wrong, because I'd have to delete the old tag.

If I just use the date for tagging and create a brand new release with that tag, I would spam releases, which is also not what I want. Deleting every date-release but the latest is almost what I want, but then I don't have a stable download link.

What's the common approach?

@omniscient
2. There is no debug support at all right now. I want at least some back traces on out-of-bound accesses and signed integer overflows. Also, I want to see source locations in gdb. All of this is pretty well supported by llvm, I just have to find the time to work on it.

@omniscient Yeah, I'm pretty happy with it right now.

There are more or less only two topics where it really needs work:

1. Compilation of closures is brutally naive right now. In applications which make heavy use of function composition, like parser combinators or iterators with generator-like closures, closures tend to get heap-allocated a lot. Also, closed values aren't properly tracked by the borrow checker yet. This the big topics I want to tackle this year

@omniscient It's using raylib, but written in the language I've been working on. The language itself is written in OCaml though

I wrote a mini blog post on how I did vectors in #ocaml using a simple module functor. I shy away from using functors in general but it felt kinda nice and it is an easy to understand domain to teach others how they can be used.

https://blog.joshrowe.dev/posts/functors-for-linear-alg-operations/

Functors for N-dimension Vectors Operations