IdraEngine Project overview pt.1
So I'm making a game engine. Wooah!
No, really.... I'm making a game engine. Not a public engine that will be used by a large community, or something that can compete with all of the monsters out there like Unity3D. I'm making an engine for my own.
Why? First, I have no hurry to get a game complete and second, I'm quite more interested in learn how modern opengl works than making a playable game. Third, I think that I can't simply follow some tutorial and copy paste pieces of code in order to learn something. I have to refactor the whole thing, to think about connections between actors and calls. I have to write an engine. My engine.
And my engine has a name yet: IdraEngine (because it's always important pay attention to details, in inverse order of importance...)
Idra is the italian (like me) word for hydra, the mythological monster with a lot of heads. Like the engine, once completed.
Up to now it is formed by a bunch of static lib c++ projects and an executable project to use as Demo, to test features. Major feature now is rendering a textured quad.
The rendering part is composed by two project: one with abstract class definitions and one with opengl implementation. Maybe one day I'll add a DX implementation, who knows. I like to have decoupled tiers and work with the abstract definition in real projects (well, the textured quad demo currently ).
For the OS layer (you know, window creation, context, input, timer...) I choosed GLFW but, again, I separated the abstract class from the implementation, so that I have a IEWindow and a IEWindowGlfw in another project. Maybe a IEWindowSdl or a IEWindowSfml will come later.
I choosed to get rid of them because, anyhow, I don't like use the "using" command. So, instead of write continuously ie::Window, I simply write IEWindow. Each class or struct has the IE prefix.
Each class or struct comes with two typedefs: IEPName for pointers, IECPName for const pointers.
Not so clear even in my mind, but I dream that, at the end, it will make me able to:
- Load and render 3D scenes with fancy lighting effects
- Manage basic physic (collisions and gravity)
- Manage sound effects
- Manage entities with the Entity-System-Component paradigm
- Have a bunch of visual tools that generates app code for me, or at least the most boring parts
The Test Project (aka, the Real Game, aka The Thing That Will Never Happens)
Well, I have a game project in my mind in fact, and I would like to bring it to the light using IdraEngine: a space shooter with first person view in which you are a fighter pilot and fight only with giga-sized bosses, with emphasis on maneuvers and ship's energy managing: something like Luke flying across the Death Star, with laser cannons to dodge and enemy fighters to break down and a few weaker points to shoot at.
Enough words for now. I will post here the progresses, of course, or the record of the failure. Something fun, in any case.