War Crimes

My entry for Ludum Dare 44 in April 2019. The theme this time around was "Your life is currency".

War Crimes is a 3D bullet-hell shooter made in Unity. It was made during the designated 48 hours by only one person in all departments. This take on the theme sees the player using fuel for their tank as both currency, health, and as fuel (deducted slowly as you move). In other words, there is only one resource in this game.

The enemies are randomly generated stat-wise based on how far away the player currently is from the central upgrade depot. The enemies can also utilize more or less the same upgrades as you do as the player.

The available upgrades and enemies had to be balanced against each other, as well as the costs of said upgrades. With the very short time available for development, this balance is not perfectly tuned, but adequate in that it provides a constant challenge if the player seeks it.


Something that must be taken into consideration when making bullet-hell-type games is readability - in other words, does the player understand what the objects on the screen mean?

In this capacity, the game was both successful and unsuccesful. Much care was taken that the objects did not blend with the background, however, as the color of the enemies is randomized, by pure chance, sometimes the enemies are particularly well camouflaged. In the later revision of the game, the tanks have more readable shapes which helped mitigate the problem.

Sound Design

Ludum Dare Compo rules that the contestant has to make everything themselves. This includes - of course - sound. The sounds in this game are important to signal to the player what is going on on- and especially off-screen. Using samples of everyday household items and mixed in Audacity, the sounds of War Crimes serve to give the player spacial awareness. The different sounds signpost an enemy firing, launching a missile, or being hit.


In the compo version, there were two major issues: enemies spawning off-screen behind the player, and that the player was uncertain whether they landed their shots because of a lack of hit feedback. These two things were later fixed by adding a radar upgrade that points towards enemies, and a function that makes all hit objects flash yellow if they take damage. The system is still not perfect, but plays a lot more intuitively.

Play in browser here!
LD Page


My entry for Ludum Dare 41 in April 2018. The theme this time around was "Combine 2 Incompatible Genres".

Heartache is a 2D platformer-meets-tower defense-game made in Unity. It was made during the designated 48 hours by only one person in all departments. The game focuses on balance and fun, while keeping the scope minimal. There are three different enemy types, and four different towers to build. To reinforce the tower defense-mechanics, the enemies cannot harm the player character, only the heart.

The enemies scale as you get further into the game, and the amount of enemies and the amount of coins they drop also scale based on a formula. The game has no win-state and is in theory endless. While this was never intended, some players have completed hundreds of waves in the game.

Game Design

Heartache combines platforming and tower defense. The most important thing in a 2D platformer is the tightness of the controls and jumps of the character. Because of this, a lot of time went into making sure the controls felt right. In a tower-defense game, the whole interest comes from the strategy of placing different towers in different locations. Since time is a precious resource in a Ludum Dare competition, a small amount of towers which played very differently from one another were devised.

Play in browser here!
LD Page


Baltica is a cartoony fantasy-renaissace city-builder made in Unity. It is currently being developed by a team of 5 Norwegian indies, where Øivin has done all the programming, as well as parts of the game design, UX design, graphic design and particle systems.

Baltica is a game about building and defending your city - all the way from a small settlement, up to a proud city state. It is being developed part-time, and has currently some features completed, including building, resource gathering, and rudimentary combat.

Programming Challenges

  • In Baltica, there are many factions of enemies, and different types of attacks. These are balanced against each other with a tag-based system.
  • Resources are persistent in the world, meaning that a plank put in a specific warehouse needs to be retrieved from that warehouse. A system is in place to make workers intelligently locate and move resources to where they are needed.
  • All characters in Baltica employ pathfinding. The navmesh has to be updated regurarly when buildings are placed.
  • Ranged units need to fire at moving targets. In order to have a chance of hitting, they currently predict where the target is headed based on its current movement.
  • In Baltica there is an emphasis on creativity and building the town you want. This is why we implemented the ability of curving walls when placing them. This modifies the mesh in real-time while approximating its hitbox when the building is placed.

© Copyright 2019