RSSAmplifier

Blog

Jakub's tech blog

Recent content on Jakub's tech blog

jakubtomsu.github.ioRSS feed ↗13 posts

Latest posts

You don't need free lists!

Pool-like datastructures are incredibly practical, especially when combined with generational handles . They let you have an array of reusable item slots, but crucially all actions such as insertions, removals and lookups are always O(1) , including worst case! (Assuming you preallocate all buffers) The usual way to implement the slot-reuse mechanism is to store some kind of a list of currently…

Odin compilation speed tips

Compilation speed is really important . If you hit build and it takes so long it pulls you out of the flow and you start scrolling twitter, that’s a problem. So what can we do to compile Odin programs faster? Here I’ll try to explain some ways of troubleshooting Odin compile times and ways to improve them. TL;DR Use faster linkers There is a -show-debug-messages flag to dump things…

Coroutine-less way to visualize iterations

Let&rsquo;s say you&rsquo;re working on a procgen system, or a similar problem where you combine multiple iterative algorithms to get visual results. It could look something like this: 1 // Imagine this is for a tile-based 2D game or something 2 generate_level :: proc ( some_params : ...) { 3 some_temp_state_1 , some_temp_state_2 : int 4 for i in 0 ..< N { 5 // generate land tiles ... 6 } 7 for…

Gameplay code validation and catching NaNs

I recently ran into a NaN propagation bug in my gameplay code, which required a bit more effort than usual. Often, those problems are straightforward to solve: it&rsquo;s just a forgotten zero-check before dividing, normalizing zero-length vector, etc. I almost always find it immediately by looking through my most recent changes. But this time I had no idea! So I came up with a simple way to help…

Fixed timestep without interpolation

Some time ago I wrote a blog post about the tick setup in my engine, why and how I use fixed timestep update loops. It also explained how to actually use it in practice when dealing with input etc. The general idea is this: the game would keep an accumulator timer and only simulate steps with a constant delta time, which is great for stability and predictability. This was mostly inspired by server…

Logo Design behind-the-scenes

Note: this was initially supposed to be my first supporter-only Patreon post. But their tools for writing posts kinda suck so I thought hey, let&rsquo;s just release it for free. Anyway it would mean a lot to me if you decided to support me anyway! Here is my Patreon link This is an behind-the-scenes look at my design process for the first iteration of a logo for my new game, BEHEADER.

Reliable fixed timestep & inputs

Fix your Timestep! is an amazing article by Glenn Fiedler about fixed timestep update loops for games and physics simulations. It explains how to properly accumulate a timer and run ticks with a fixed delta time within your main loop. But it seems like it&rsquo;s mostly targeted at physics simulations, and it doesn&rsquo;t cover a few things you need to make your entire game run on fixed…

Simple Undo/Redo System in Odin

This is a short blog post about something I&rsquo;ve had to implement recently: editor undo/redo functionality. A few weeks ago I started working on a new project, it&rsquo;s a 3D FPS game inspired by Quake and other &rsquo;90s shooters. The world is a 16x16x16 uniform grid of blocks, and it loops infinitely. Here is a clip of the game prototype: This is a small boomer shooter prototype I've been…

Solar Storm Rendering

Solar Storm is an upcoming tactical sci-fi artillery game. It’s a solo project I’ve been writing in a custom engine for the last ~4 months. It’s inspired by local multiplayer games from the 90s like Scorched Earth (1991) and Worms (1995). The entire game is written from scratch in the Odin programming language . Play Solar Storm on Steam and Join our Discord! The game engine is built with the help…

Dungeon of Quake Alpha

Dungeon of Quake is a Quake-like FPS, using Odin and Raylib github DoQ is currently in Alpha version - there are still a lot of bugs to fix and features to add. The initial development took ~1 month. screenshots dqmake DQMake is a super-simple tool for editing DoQ maps.

Reverse engineering Unity games

Few months ago, I made a level editor mod for Shady Knight , an action game with lots of movement, parkour and combat. I thought I could share a few things related to reverse engineering the game and modding. accessing source code For a game, all of the gameplay source code is stored in \SomeGame\SomeGame_Data\Managed\Assembly-CSharp.dll . This is a dll (dynamically-linked library), which is…

Projects

This is an overview of some of the projects I&rsquo;ve done. Games Solar Storm Steam My first commercial game, and the first game I realeased on Steam. I made it in 4 months in a custom game engine built with Odin and Sokol. Hyper Heist itch.io Hardcore fast-paced cyberpunk platformer. Submission to SpeedJam 1 organized by ScoreSpace, ended up #3rd overall and #1 organizers choice. No-Gun Shotgun…

Solar Storm

Solar Storm Press Kit About Solar Storm is a turn-based scifi artillery game, inspired by 90s local-multiplayer games like Scorched Earth and Worms. Solar Storm releases on Steam April 3rd 2024 with Windows support. Fully Destructible Procedural Maps Each battle takes place in an unique, procedurally generated arena. There are a number of Biomes, where each one of them has unique characteristics.…