• Advertisement
  • entries
  • comments
  • views

IdraEngine Project overview pt.1

Sign in to follow this  


So I'm making a game engine. Wooah! ph34r.png

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 cool.png (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.

[font='trebuchet ms']

Solution structure


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. ohmy.png

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 rolleyes.gif ).

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.

[font='trebuchet ms']



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.

[font='trebuchet ms']



Each class or struct comes with two typedefs: IEPName for pointers, IECPName for const pointers.

[font='trebuchet ms']

The Plan


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

    [font='trebuchet ms']The Test Project (aka, the Real Game, aka The Thing That Will Never Happens)[/font]

    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.
Sign in to follow this  


Recommended Comments

There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Advertisement