I want to write my own game engine.
There are a number of good engines around (and I've lost count how many times people have insisted that Unity is the only choice) but I feel like writing my own will be beneficial for a couple reasons of reasons at least.
Number one is learning more about C# and the .net ecosystem. I've only really touched on C# for a few tiny projects over the years so it will be a fun challenge to learning something largely new to me.
And number two is the element of control. By writing my own, I won't have to worry about the complicated licensing that usually sneaks in behind the big engines.
To be honest, I've been thinking about writing an engine for a little while now (as many of the pages in my notebook would attest to) so it will be rewarding to finally start writing actual code for it.
I'll be using the MonoGame library to handle most of the super low level stuff so that should make some things easier.
My thoughts on the basic structure are probably similar to most other ECS based engines.
- A game will have scenes. - Each scene will have entities and systems. - Entities contain components that are just data continers and have no logic. - Systems read in entities that contain given components and perform logic on them. - Cameras/renderers then do any rendering
It sounds like a lot of work to even get the basic stuff happening but, as they say, "A year from now you'll wish you started today."
So the journey starts today.