This is a sneak peek of a game I’m remaking called: Cosmic Invaders, originally built in Allegro from around 2006 (not by me). It’s sort of a pixel-art Invaders meets Tower Defense style game. I’ve updated the codebase to build against Zig 0.16.0 and the just released Raylib 6.0 release.
I haven’t touched this project in quite awhile but the upgrade to Zig 0.16.0 only took me about 20 minutes to get through the new build script changes. Most of the syntax works as is!
Raylib 6.0 from 5.5 was basically no changes for me.
I just finished rewriting about 15% of my runescape-like mmo; It was starting to feel necessary to switch to an ECS and 14kloc seems a better time than 20kloc(though, I don’t recommend switch at 14 either ). Currently, I’m using Raylib, DVUI for rendering and Godot as a scriptable Level Editor that exports zon files.
I’m very excited to switch to 0.16 for threading the ticking phases!
Our core functionality is written in C and C++. I hope I can replace the C part step by step with Zig. To test this out I’m implementing the two mentioned modules (one per Epic) in Zig. I hope we can use them in all apps then. The first app we’re using them is p≡p for iOS, which is written in Objective C and in Swift. The first impressions are quite positive.
Just a small tool that does Cartesian product (should’ve been named “cart”?) of words with, hopefully, a small memory footprint. Was made due to the fact that, at work, servers follow certain naming conventions, and I was tired of copying by hand or writing bash for-loops.
It tames the very old Excel C SDK to write custom functions and realtime data servers. A bit like Excel-DNA. (Yes, Excel underpins more of the financial world than anyone would care to admit). Although it is a relic, it is still the fastest way of extending (Windows) Excel. Microsoft even state this library as being unfeasible for most developers to use. I think Zig helps with that somewhat. comptime was an amazing help. It was my first adventure with Zig, so maybe that shows, but it works and is used heavily (not many bites from GitHub though). It also embeds Lua if you don’t want to write Zig. Still learning!
I know it’s topical at the moment, particularly around Zig, but Claude has been a huge help in a) assisting me learning the new ways of 0.16 and b) saving me from typing due to a recent stroke. I don’t think it falls under the vibe coded category. I am using it mainly for boring time consuming things that oft go neglected in small projects. Or to learn by example and make improvements and question why the LLM has done something dumb and in some cases rewrite.
As with all tools, it’s about having taste and knowing where they can assist.
pollux = require("pollux")
pollux.run(function(px) -- px is a handle to the event loop;
-- note that it is only available from inside pollux.run()
local futures = {}
for i = 1, #arg do
futures[i] = px:async(function()
px:sleep(tonumber(arg[i]))
print(tonumber(arg[i]))
end)
end
for i = 1, #futures do
futures[i]:await()
end
end)