Walgelijk is a small C# 2D game engine made specifically for my own comfort. I designed this game engine out of frustration. It isn’t and will never be ‘better’ than Unity or Unreal or Godot or whatever, and it was never meant to be. Its only purpose is to make game development more fun for me by decreasing the amount of time I spend fighting the application someone else built.
I can’t overstate how much nicer it is to work in an environment that I feel like I created. When something doesn’t work the way I expect it to, I fix it. When a feature is missing, I implement it. There is no confusion or frustration.
Honestly, there aren’t many reasons why anyone else should ever use Walgelijk, but I imagine that some people can learn from it and use the source code to more easily mod the games I make using it.
Walgelijk consists of numerous packages alongside the main engine module. All of these modules are still actively in development and some of them are still unfinished.
Walgelijk.OpenTK is an implementation of the backend using OpenTK, a C# library that provides OpenGL and OpenAL bindings, and does cross-platform windowing and input. This package provides a backend for windowing, input, audio, and rendering.
Walgelijk.SimpleDrawing is an immediate mode drawing library specifically for Walgelijk. It exists because I really like the way IMGUIs let you construct user interfaces and I wanted to extend the concept to all rendering.
Walgelijk.Onion is an IMGUI library specifically for Walgelijk. I wrote it because I didn’t like the way ‘Dear ImGui’ interfaced with rendering and input and I became frustrated, so I wrote my own. It’s worse by all measures, inevitably, but it’s mine and I love working with it.
Walgelijk.Prism is a (as of yet) barebones 3D module. It provides a 3D camera, transforms, and other 3D utilities. It is simple without being limiting.
Walgelijk.AssetManager adds an asset managing system that is more functional than the Walgelijk basic resource manager. It provides functionality to deal with asset packages created by Walgelijk.AssetPackageBuilder. It is currently still in development.
Walgelijk.Physics has a generous name, as this package only provides broad and narrow phase collision detection, point overlap, circle overlap, box overlap, and raycasting. It’s fast and flexible, but also limited. Despite the narrow scope, I use it in pretty much all of my projects and it has never made me feel like I’m missing something.
Walgelijk.OpenTK.MotionTK adds video playback functionality to the Walgelijk.OpenTK package using a modified version of MotionTK. I wrote this because MotionTK no longer works and I needed video playback for a game. I wish video wasn’t so complicated, because there is no way in hell I’m going to use any ffmpeg binding and there’s no chance I’m writing a video decoder either. I will wait for Quite OK Video format.
Walgelijk.ParticleSystem provides a fast and modular 2D particle system. Since you can implement custom modules, it can be used for any particle effect imaginable. Inspired by Nurose’s particle system.
Walgelijk.Localisation adds straightforward localisation functionality. Designed specifically for use in Walgelijk. It’s technically just a fancy dictionary.