Invasion
bartron on 12/18/2023
After I made a side scrolling platform game, I wanted to experiment and learn basic 3d rendering, so I made a basic first person shooter. It's similar in capabilities to doom and has a map editor styled from the Hammer Editor from Half Life. The game is implemented in C# using Silk.net, which allowed me to use OpenGL and OpenAL for the graphics + audio. I used Avalonia for the cross platform game editor.
The game editor is also responsible for taking the shape + light information, and generating quads & light map generation. The game renderer is pretty basic, featuring a single shader program that handles both the UI and 3d camera. I learned too late in development how to do multi-texture shaders, so this source code is good pretty much as a very basic rendering example. The enemies are sprites are bill-boarded like doom, however, I didn't implement directional facing or animations due to lack of graphics. That code is still in the engine however.
The game has 6 levels and takes you from a suburban neighbourhood to a military base to an alien planet. It features 7 weapons and a variety of enemies. The textures & sounds are from creative common sources, while the sprites & music are from Earthbound & Chrono Trigger.
Controls are:
- Movement - WASD
- Shoot - left click
- Reload - R
- Use - E
- Full Screen Toggle - `
- Menu / Cancel - Escape
FYI, the Mac version isn't signed, so you may have to remove the security attributes on the app:
xattr -rd com.apple.quarantine Invasion.app