What I thought might be a cool idea is to create a dev log all about making a game engine from start to finish, I'm not talking just a simple triangle in OpenGL.. I'm talking about everything, from building the API around the renderer to particles / phsyx / post processing and even advanced features, I one day want to implement like a cut down V-ray rendering mechanism.
I'll include everything, all the trials and tribulations. The points of utter frustration, the days where I worked so long I can't even remember my name the next day.. I'll approach it from a beginners perspective.
Why not just use a tutorial?
Well, I'm not going to release all the code because it'll one day be a commercial engine. Even though it's me on my own doing it out of work, also what tutorials generally don't give you is the headache of debugging. They don't include common issues and things you may come across, neither do they go into the actual experience of doing all of this.
What's my experience?
I've been a hobbyist / professional developer / engineer for 14 years, spanning across multiple different sectors including games / telecommunications / retail etc.
Am I a beginner?
Ummm, yes and no.. I've done many projects large and small, I've built engine frameworks (or rip-offs for learning) and worked on games as a developer and artist. But I will be starting from scratch to create a modular engine with as little interclass dependency as possible. So additions and features don't need a re-write, the whole cause of a previous failure. This is a new one for me too, so it'll be very interesting.
Can I do this?
Yes, if you put the time in.. It's hard work and in many years I have never seen a genius programmer neither have I ever seen someone build an engine with no experience of game creation before. I have seen slackers and hard workers with a thirst for knowledge..
The code and target
The point in this is to create a modern OpenGL framework, I'll introduce you to the framework / concepts and tools. What I want from my code is:
> Little in the way of bugs
> Easy for others to understand
> Maintainable easy framework which can suitably modified
> Doesn't crash
I'm not proud and I'm a human, I don't care if someone thinks my code is crap or not.. I do care about my end users.
Where to start:
Might be a nice introduction, go play a game.. Your favorite game (yes you heard me), instead of focusing on how fun it is.. Start thinking about how it's put together.. I'm talking make notes on what happens when you press a key and you move forward, what happens when a GUI menu item is clicked etc. etc.
There's a name for what happens, you move forward (Transformation), you rotate (Quaternion transform), you press a key (Event).. Think about the logic..
If I get hit, then I loose life.. Hmm you say an if statement..
Also a primer on how this all came to be might be a good idea:
What language do I choose?
Well being honest, the language is kind of irrelevant in the whole scheme of things. But I will be choosing C++, I'll be straight up and say I don't really like C++.. A lot of the quirks infernally annoy me, on basic render tests there has been near 0 impact on performance on a modern PC between C++ and C# with garbage collection.
Because most of the source examples I have reverse engineered are in C++, even from the Nvidia developers framework, also you might as well get used to it as GLSL shaders are in C anyway.. it's easy to find a deferred rendering example in C++.. But using an OpenTK wrapper and using C# examples are scarce and it can become painful. Also for better or worse, it's what I'm used to.
Will I use libraries?
Of course I will, you'd be mad to create an input and sound library.. Even if you're in a team of 20, any shortcut, ANYTHING that can make your life easier use it.. Building an engine is hard enough and takes years, let's not add to the pain. Everything else is all us, the renderer, shader and toolset will be done by us.
What do I get out of this?
I'm starting from scratch and it's a give and take scenario, some Guru's on here might help me in certain area's.
I hope this is a good introduction and I'm looking forward to updating as I go along.
Edited by ShadowKGames, 19 January 2014 - 11:34 AM.