Original Post
Hello, I've just been hired as a game programmer to use and improve an existing engine. Unfortunatly the current state of the engine seems like a total mess to me. As this is my first employment in the game industry I'm quite unsure what should be changed how to improve the situation. So I'm going to ask you. I'll give an overview of the current situation followed by some questions. It would be great if you could spend the time to read it through. As of yet only one programmer (called Mr. G. from now on) worked on the project. He coded the engine and a scene editor for external artists. The most awkward thing to me is that the scene editor (which is quite limited and buggy) does produce C++ source code that gets compile into the engine. Mr. G. used the scene editor for basic scene setup and edited the generated C++ code by hand. The internal structure is something wildly grown. There is some base mesh class containing OpenGL code and a limited number of derived classes for special cases. There is some kind of hirarchy that will cause problems when used excessivly as it wasn't designed for that. The problem is that the only person who can actually use this stuff is Mr. G. But soon an artist will be hired to setup scenes and I doubt that he or she will be able to do anything with that scene editor. Furthermore it's not possible to develop a better scene editor while improving the engine at the same time as they are to tightly coupled - remember: the scene editor generates code that requires to match the engine's internal classes and such. I think a complete redesign would be best. I really don't see a lot worth keeping. So my question is: Which design do you recommend in that case? After reading some articles about game engine design I think a new engine should: 1. Put graphics API dependent code in a renderer class and use the visitor pattern. Although it might not be necessary for now it's not that much extra work and allows support for different render paths. 2. Establish some scene graph like structure using the composite pattern. May be a transform hirarchy tree with links into an object list. An attribute stack for rendering the tree seems like a good idea, too. 3. Skip this C++ code generation and establish a working arts pipeline. I'm unsure how to do this. Is a scene editor really needed or should scenes be modelled in 3DSMax? Or should the artist define positions and animations using a script? Thanks for you endurance to read this far. I hope the information I gave is enough for you to give me some advice. May be I should add that this is only a graphics/sound engine with spare user interaction for small scenes on low end systems. Thank you for helping me. Regards Markus