Thanks for your detailed comment.
I am not trying to create a specific "game focussed" engine. I am a student ... I shall be joining for my master's in Computer Science shortly. The only reason I want to delve into this huge effort is that a) it'll provide me a glimpse of how professional games are made & b) give me experience of working on a medium sized software project. So the engine I had in mind was not one that would blow Unreal away :-) Rather, I was thinking along the lines of something small .. something that would perform all the "key" jobs - yet leave out the frills like GUI libs, 3D content importers/exporters etc. In fact, since the engine is not meant for commercial titles, I am initially not even planning to include n/w support - just sound, graphics and input. So don't get me wrong here ... I know that making an industrial quality engine by yourself is suicide and I am not trying to do that :-)
Anyways, about the list of engines that you provided ... I checked up the weblinks ... is there some engine that also provides a design document .. something that I could read apart from the code to understand the design philosophies behind it?
Regards.
Main Topics
Browse All Topics





by: mvoelkerPosted on 2003-08-11 at 04:50:31ID: 9121472
Hi - I don't want to discourage you or anything, but you don't want to write a game enginge yourself, even if you only implement the 3D part. There are several reason why you should reconsider your attempt:
.net also open source, but focused on 3D provides torque game engine, not free, but source available. 100$/developer
1. It's a huge effort that a dedicated and talented team can spend years upon.
2. There is already in indefinite number of engines out there, so what's the need of yet another one?
3. There is no such thing like a universal game engine. Every engine has its strenghts and weaknesses and tends to be optimized for a specific type of game.
4. You need knowledge and/or expertise in many fields like 3D, Audio/Sound, Networking, Compiler theory (parsers, lexers for an embedded script language), Animation, Physics AND large scale software design.
If you still think that developing a good game engine still is for you, I recommend taking a look at the existing engines and tinker with those first, before you dive into creating your own engine. As I said, you'll need a really good reason for a task like this. By learning the other engines and their limitations, you'll get a feeling for what would make *your* engine *better* than the rest. Maybe they lack support for your unique game-genre, or do not support technical feature X which you desperately need. As you see, having a strong idea of the kind of game you want to develop is very important.
The problem you have mentioned is maybe *the* key problem in developing a game engine. You'll want a modular approach, so you can start simple and make the engine grow as your needs grow. Unfortunately there is no 'recipe' for creating a good engine design beyond those of software engineering in larger projects: Divide your large project into smaller modules applying information hiding and abstraction. During the development, keep interaction (APIs) between modules as simple as possible, extending them only when absolutely necessary.
The Core
For starters, a reasonable approach might be to divide your project into functional modules, tied together by a 'core' engine. The core would handle timing, events, memory management, (asynchronous) i/o, maybe a script engine and would generally be responsible for 'driving' the game. The core engine would then make use of several modules to render the gameplay (video, audio), communicate (if it's a network game) and user input.
The Modules
Modules would include a 2D/3D engine for display including importers/exporters for your 3D data. There may be sub-engines like animation, FX (particles, explosions, water), physics (collision detection, vehicle physics, rigid body dynamics,...), a gui-library for in-game guis, a landscape engine to generate landscapes and maybe a vegetation engine. You will also need an audio module for rendering effects (including EAX and 3D effects, ambient sounds) and music, a network module to communicate with other players/clients/servers.
The Tools
You will also need some tools to create game content and get it into your game so your engine can use it. The tools should make direct use of the game API, so you avoid extra steps and compatibility issues in content creation.
You might want to take a look at
http://www.nevrax.org a complete open source engine for 3D MMOGs
http://crystal.sourceforge
http://www.qubesoft.com free, but without source, fairly complete, but single-player focus
http://www.garagegames.com
Hope that helps, feel free to ask for clarification.
- michael