Langjam Gamejam
Source: Dev.to
Day 1
Suicmez, the Language
Suicmez underwent PDD (panic‑driven development). After two speedruns of implementing languages from scratch—both in Rust—I slapped together a lexer and a parser in about two hours. The practice paid off, but the project turned out to be more challenging than expected.
Performance
For any non‑trivial game, a bloated DSL that consumes gigabytes of RAM and runs at 2 FPS is unacceptable. The previous speedruns used tree‑walked interpreters (one even got a JIT after the run). Suicmez considered three execution strategies:
- Bytecode VM
- JIT using Cranelift
- Compiling to C
A robust typechecker was also required; insufficient inference would force unnecessary annotations, while an overly complex one would delay the project indefinitely. After the typechecker, the runtime, built‑ins, and FFI support needed to be implemented before any game work could begin.
Hopium
Realizing the scope was too large for one person, I looked for a teammate. Fortunately, Nishi joined the effort.
What We Did
We discussed the game plan and how the compiler would interact with the rest of the system. Nishi initially considered using his graphics library, Milsko, but the required math work was prohibitive, so we switched to Raylib.
Nishi split the game work into three sections:
- Rendering
- Collisions
- Networking
He also started a networking library for the game, libfishsoup.
Day 2
The Best Team Ever
Wildered and El1i0r soon joined.
- El1i0r contributed deep PLTDI theory knowledge, helping refine language design and correcting earlier decisions.
- Wildered built a generational garbage collector tailored to our needs and worked on code generation.
We set clear goals for both the language and the game. Performance concerns led us to reject a bytecode VM, and the complexity of a JIT pushed us toward a C backend as the “Goldilocks” solution.
Days 3‑4‑5
We decided on a multiplayer 3D FPS where the last player standing wins.
- Wildered’s GC performed flawlessly.
- I focused on Suicmez’s standard library.
- The project used ODE for physics and Raylib for rendering.
In hindsight, we regretted not choosing a full engine, but the commitment was already deep.
Near day 5 we discovered that Suicmez’s high‑level abstractions hindered C interop, so Wildered and I spent a night adding low‑level features.




Days 6 and 7
Our target was to finish by Day 6, but shader errors pushed work into Day 7.

The terrain initially appeared as a green blob, but we resolved the issue and the game ran smoothly. In the final 15 hours we deployed the game on Nishi’s VPS and prepared the submission.
We had a lot of fun throughout the jam and wrapped up with a play‑testing session—though we all agree we still have a lot to improve in the game.