Game Engine Design


04-01-2011 21:23:33

Hi all,

So the time has come and some old friends and myself are going to try and build a little game. Now I will try to use the skills I have been learning slowly for the past two years... :-)

I was wondering if anyone would have some insights or advice to share in the area of how to design the core game engine, i.e the thing that strings together Mogre with a physics library, sound lib, GUI etc, and most importantly updates the game state all the time.

For examples, some questions that I have in mind:
  1. Should I aim to update the game state as fast as I can (i.e run game logic in a frame listener)? Or should I aim to call the update method every set interval?[/*:m]
  2. But shold a big list of all game objects iterate it each game tick and call something like Update() (even if its empty), or should I aim to reduce the iterations by having smaller collections of clear per-frame roles? i.e Moveable objects, Gamelogic objects, collidable objects.[/*:m]
  3. (kind of a followup of the previous question) Should I try and avoid polymorphism and virtual methods for performance? i.e should I have a collection of IMoveable objects with a Move() method, or separate collections: LinearMovement, BallisticMovement, etc and iterate each one?[/*:m][/list:u]

    And so on...

    Please feel free to share any thoughts or point me in the direction of any good material on this topic that I've missed.


04-01-2011 23:16:56

My main thoughs are:
It's a huge task to create a whole game engine.

I worry much about that you will spend huge time and you end up with a nonready project.
There are details like add-on interaction, world and behaviour editors, etc. This sounds not impressive, but such things can be the bigger part of such a project.

There can be many different kind of game types. I don't think you can make an engine for all of them. The question is, which types of games it should create.

Additionally don't forget the whole documentation effort. The internal one and the end users one.

Some years ago there was a game engine which used Ogre as central core. The project died.
The same also happened to much smaller projects. (e.g. scene managers, editors, mesh viewers, ...)

I don't want to bite you, but keep in mind that this can quickly get an overkill and ends up with demotivation and wasted time.
Yes you have helping friends, but they could get lost after some months.

I know 2 game engines based on Ogre which are still active.
Maybe invite the authors to a discussion. They should know best, what are the problems.
* Alimer Engine
* NeoAxis Engine


05-01-2011 01:04:21

I found an other game(?) engine:
* Paradise Framework

I suppose you like to create your own engine.
An other option could be to combine forces and get involved to development of an other one.

Maybe it's also useful to have a look to these editors:

EGO Game Editor: For outdoor map creation. Support of terrain, light, sound, fog, animation, Hydrax (water), Caelum (sky), etc.

Glue Editor - indoor map editor (open source, using Ogre engine, written in C#)


05-01-2011 18:58:54

I don't think you understood my intention when I said "Game Engine" Beauty. I have no intention of trying to create a very generic reusable game engine to be released and used by the general public.

I'm simply talking about a bespoke compilation of Mogre with a selection of its addons for a very specific game. Maybe if you read it as ""game engine" for only this one game" it would make more sense? I'm just asking about the best way to manage things like game objects, maps, game logic, etc.