I have found this Julia game.. cool!

I have found this super cool game wrote in Julia: https://rocketplumbergame.com/

Posting it here as I didn’t see a reference on it in this forum…

That is so cool. Absolutely love that a few julia games are around now. Would love to hear more about their experience and what they might be missing.

This is actually my game, I’m glad you guys think it’s cool!!!

I’m surprised you managed to find it. I’ve been kinda holding off on promoting too much as I’m working on a new release would rather people wait till then to play it as I think its made the game a lot more fun and interesting. I have made a few blog posts discussing how the game works and what the new gameplay is like if you’re interested!

@madppiper asked what I need. Assuming you mean on the language front, I actually think all the pieces are there to be able to make games in Julia if you are happy to get into the nitty-gritty of OpenGL, especially if its a technical or simulation oriented game. Rocket Plumber uses circuit simulation algorithms for its fluid system which was very nice to write in Julia and that’s why I’m using it it (although looking at the whole code-base that ended up as a smaller piece than I thought). It’s definitely not the easiest pathway to getting a game working but I have been having fun with it! There are 2 parts of the language/ecosystem developments iI have been keeping an eye on:

Compilations and packaging.
Tools like JuliaC and PackageCompiler are essential for serious games as you can’t expect everyone who plays your game to want to install Julia. I’m not currently using trim. I don’t actually think final bundles ending up a bit over 1 GB is that big a blocker for a game, but its something that I want to revisit, especially as more packages I depend on make themselves trim safe.

Alternate garbage collectors.
There’s some work that’s way above my pay-grade going on to integrate alternative garbage collectors from the ‘Memory Management Toolkit’ like ConcurentImmx as options in Julia. Long GC pauses are an issue for a game as they cause visible stutters. There’s a lot more work I can do in my code to reduce allocations, but having alternate garbage collectors that can reduce the pauses will also help a lot.

I plan to make a dedicated announcement post once I publish the next release, but if you want to follow the games progress directly feel free to join the mailing list!

Very cool! Have you experimented with disabling the GC and managing memory manually instead?

I’ve not tried disabling GC completely.

I use TimerOutputs.jl to profile the allocations across my code and that helps me to optimise the worst allocation offenders, while being able to use dynamic and allocating code in the less hot paths. When I optimise for it I find I can usually reduce the allocations a lot with buffer reuse and such, but getting rid of them all is a pretty hard constraint to meet and it would take a lot of time.

Might be worth me trying to manually trigger GC at less critical times like in between frames or when players open a menu or something, I’ve not tried that either.

That sounds better than disabling the garbage collector altogether. Also, if you use recent versions of Julia (like v1.12+), --gcthreads=4,1 helps a lot in my experience, if you do have enough spare threads around (40%+ saving of GC time in real-world workloads, of course details will vary with the workload and the resources available).