Over the last year I've been experimenting with writing my own home game engine, initially I spent time writing my own line rendering and then a wrapper with SDL2 all using my own mathematics library as a refresher.
So here we see I have multiple pipelines & render passes. It's creating and submitting multiple command buffers, I have integrated ImGui very roughly too.
I'm strongly following this online tutorial.
Though I also have the Vulkan Programming Guide official book and I'm writing my own functions as I go so the porting to the existing Home Engine API is minimal (or rather as minimal as I can get it).
One of the key pieces of tech in the base engine (driven happily by DirectX 11 when I switch to it) is a full camera fly mode system and a scenegraph rendering models. I've also got a python driven exporter written for my own model format from Blender (and desperately need to get better with using Blender). And I have a Python driven project generator (which calls down into CMake quite neatly).
The engine is structured into six major modules:
Base - which contains a host of utility functions, data types and tooling assistance.
Ecs - yes, I'm writing my own Entity Component System.
Renderer - The abstract renderer API which the application level creates and uses in the main game loop.
Application - Main app & game loop, I'm using SDL2 as the main interface here for input & window management in a cross platform manner too.
Physics - A basic hand written rigid body physics implementation, at the moment it really only supports rays, cubes and sphere intersection tests and I'm thinking of shopping around for an off the shelf something.
Game - Contains specific game logic, like spawning, camera controls, input mapping and uses base to provide timing.
This is all very rough and ready, it's a project to keep me interested in my craft really.
And putting Vulkan into the mix has been a real nice way to resurrect where things where, as you may gather I had the DirectX 11 and basic camera system all working in October 2021; but I've been a busy boy since then, both with work, life and moving house....
Now the new office is done and I'm building models in real life, I figured it'd be a nice time to build them in virtual spaces too.
P.S. I have no idea why some blocks are in white backgrounds, very annoying of Blogger to do that?
No comments:
Post a Comment