A Gnarly Game for Ludum Dare 43 in 54kb!
Adam Lastowka and I created Omnibar as our entry into the Ludum Dare 43 game jam. I decided to try and make my entry under 64kb, as Adam and I had recently started working on a 4k demo project, and I was particularly excited about the graphics work we had been doing on it. The theme for this jam was "sacrifices must be made". I decided to implement this theme by creating a simple first-person shooter with a single bar that's your health, ammo, and xp bar - sacrifice your health by playing aggressively, or sacrifice your speed to save your health by playing cautiously.
Omnibar was created almost entirely using C, C++, and GLSL. All of the rendering takes place in a fragment shader. This shader uses a number of signed distance functions (SDFs) to define the world and its geometry. The rendering is done by raymarching through the SDF field. When appropriate, shadow rays and a reflection ray are also casted from the initial ray hit. The physics is a very lightweight engine simulating spheres in a world defined by the same SDF that defines the world's geometry. Part of this process was defining a lightweight header file defining vec2, vec3, vec4, and a number of glsl builtins. This let me copy and paste the world SDF with minimal tweaks (mostly changing swizzles into function calls). The awesome music was composed by Adam Lastowka using the V2 synthesizer. This produces a pair of assembly files that can be linked in alongside an .obj file to play the music.
View on github View submission on Ludum Dare
Check out the gnarly graphics made with SDFs and raymarching!
Sacrifice your health, sacrifice your speed!