Tuesday, July 26, 2011

How this all works: Part 3

This time some more details about architecture of engine. First thing that I need to mention W.R.E. is not engine for L.B.A. project, I create tools that will be use in next productions. Because of that I take some decision that make it's structure more complicated but in the same time more flexible.

In this moment W.R.E. is based on four modules:
But as you see there is five elements :] Why ? Exe is only wrapper to game dll and do nothing else so I don't count it as module. Ok, so from begin:

  • W.R.E. - Is main part of engine it's managing window, taking care of rendering, physic, sounds, file, materials and things like that. 
  • Game Engine - It's the frame of game. Contain all templates for objects i.e. Models, Characters, Action objects. Other important function of this module is editor functionality.
  • Editor GUI - It's interface of editor based on Qt. It's mostly call function that are inside Game Engine.
  • Game - This is DLL so it could be simple connected to exe and editor. It's contain all definition of objects specific for game. 
As you can see when I will decide to create next production I will only change Game part and everything else will still be compatible with it. And this is one of my biggest goal in this structure. To be able quick create other game without rewriting everything.

In this place I don't know what to write more. Maybe you have some interesting thoughts about this structure or have even better in yours engine/game. If so share it, I will be glad to read it.

4 comments:

  1. I like the base structure idea. Is very wise to split things like that and have in mind that in future we can made use of it in another project.

    I don't know if you also care about cross-platform while developing but this can also trick things up in that structure.
    One year ago I start doing a 2D/3D engine from scratch and my initial concern was to get a nice structure to work on and be able to switch from platforms and also from systems (like rendering, sound, etc.)
    Not much was done with it, only an adventure game prototype because we (me and my college) moved to another platform and start working on top of XNA.

    Btw, I don't know if you already said it, but what exactly W.R.E. means?!

    ReplyDelete
  2. Right now my planed cross-platform is windows/linux/mac(if one day I will have one :]). But this platforms all share sdl/opengl/openal so all libs I use.

    Other thing I do to cross-platform are wrappers I use to renderer and sound system so I never call their app directly. This is more for future than now but it's nice things to think about so simple things from begin.

    Do you have any samples of this adventure game :>?

    W.R.E. means White Rabbit Engine. It's second name of engine, first was S2D engine which mean small 2D engine. But engine in this moment is not small and not 2D so I decided to change name on something more neutral. And this way come W.R.E.

    ReplyDelete
  3. Thats fair enough. At least with this 3 platforms you can build your structure to increase it for whatever you want.

    I just recently got a Mac, but didn't develop much on it, only some trials, but I?m really liking the experience.

    I may have it. I need to check if I have a recent binary since I don't have anymore the dev environment for it since I switch to XNA. Anyway, we only got 2 scenes since we were building the engine on top of this prototype.

    Thanks for explain me the engine's name.

    ReplyDelete
  4. You know all this platforms all very alike. Other thing when you have possibility to code engine on console then start fun :P

    And how is to switch to OS X ? Without Visual studio :P?

    I would be glad to see what you create on that engine :]

    ReplyDelete