Standards for a Game Engine

77abcbc6d0ef4d3c469206319922a05f
0
MikeS 101 Jun 01, 2006 at 20:49

I’m going to be creating my own engine soon, but I wonder what the standards are these days. Obviously some effects like HDR, parralax mapping etc. are overkill for a hobbyist engine. However, certain things like billboarding and a decent culling system are always expected. I’d even consider bump mapping, cube mapping, sphere mapping, and environment mapping as a standards as far as pixel shader support.

What other things would you expect from a engine? What are your expectations for a basic game engine.

Thanks,
Mike

14 Replies

Please log in or register to post a reply.

6b7e1a4b42e4b47d92fdef8bf2bd8e2c
0
Jare 101 Jun 01, 2006 at 23:39

@MikeS

What other things would you expect from a engine? What are your expectations for a basic game engine.

Vector / math libraries, input system, memory allocator with debugging, file system with packed file support (Zip pref), sound system with support for streaming compressed files (Ogg pref), GUI system, entity framework, scripting language (Lua pref), maybe a network system…

Oh, and a graphics engine as well. ;)

645241d4114b5f320750e369ade08e84
0
alexndr 101 Jun 02, 2006 at 06:53

Jare, why Zip is preffered?

4e70f904a74bd2aa8773733b25b77d41
0
SigKILL 101 Jun 02, 2006 at 09:08

@Jare

Vector / math libraries, input system, memory allocator with debugging, file system with packed file support (Zip pref), sound system with support for streaming compressed files (Ogg pref), GUI system, entity framework, scripting language (Lua pref), maybe a network system… Oh, and a graphics engine as well. ;)

From a basic engine I would expect something to handle input, graphics, sound and an entity framework. Seems like your expectations includes somewhat more features than found in many commercial engines.

6b7e1a4b42e4b47d92fdef8bf2bd8e2c
0
Jare 101 Jun 02, 2006 at 09:49

The preferences I wrote up there are just that, preferences, based on my personal opinion as well a good general level of usability (zero cost, commercial-friendly license, simple yet well featured, stable and already proven in large projects, well supported, etc).

Sig, my post was aimed at stressing the difference between a graphics engine (what the OP seemed interested in) and a game engine (what he was asking about). I included those based on the OP’s feature list: I wouldn’t consider bump mapping more “basic” than memory management or scripting, but YMMV.

137d9910616ff40a2ae4dce1608742fc
0
Mark 101 Jun 02, 2006 at 11:06

This is the feature list from my initial game framework;

Texture format importers.
Materials system (and setup for shader parameters, lightmaps, fullbright surfaces [skies], environment mapped surfaces, caustic effects, transparent, translucent surfaces).

Model format.
Keyframed animation (frame interpolation).
Per frame bounding boxes.

Scene management (loads and runs a given map)
Scene partitioning (manual portals here).
Static lighting solution (lightmaps in my case)
Object shadows.
Dynamic world lighting.
Dynamic object lighting.
Collision detection (object vs world, object vs object)
Simple physics. (Gravity, inertia).
Time based movement.

Game logic. (updating AI and responding to collisions, updating animations).
Entity system (C++ but it’s quite well isolated from the rest of the core code. Should be simple and tidy for a third party to modify game stuff. Could compile this section into a .DLL?).

GUI.
Windowing system. (Buttons, sliding controls, dragable items, text controls).
Font support.
Text formatting. (Alignment, clipping region, colours, language)
Render to texture (GUI map displays, energy bars)

Mouse input.
Keyboard input.

Large pack file type format. (After thought. All file interaction through a file_buffer wrapper, which I’ll update to use a single packed file when everything else is done.)

Tools.
Bitmapped font generator. (Glyph texture, spacing data).
Model convertor (Milkshape, MDL in, custom model format out)
Map generator (Q3A BSP in, custom lightmaps built, collision data, partitioning out).
Texture convertor. (BMP, TGA in. Flags applied [mip mapping, clamping], custom texture format out).

I’ve no plans to implement network code, sound or music, since I’ve already got too much on my plate :) I hope some of this is helpful. It might be overly detailed, but it’s basically a running summary of the features I’ve had to add (some still W.I.P) to get a mock-up game running.

E54629ba7ececd78c241651d26cb8903
0
CobraLionz 101 Jun 02, 2006 at 12:43

@MikeS

I’m going to be creating my own engine soon, but I wonder what the standards are these days. Obviously some effects like HDR, parralax mapping etc. are overkill for a hobbyist engine. However, certain things like billboarding and a decent culling system are always expected. I’d even consider bump mapping, cube mapping, sphere mapping, and environment mapping as a standards as far as pixel shader support.

What other things would you expect from a engine? What are your expectations for a basic game engine.

Thanks,
Mike

You are just spewing buzzwords you don’t understand. HDR and parallax mapping are very easy to implement. I suggest you do some research.

A9102969e779768e6f0b8cb87e864c94
0
dave_ 101 Jun 02, 2006 at 13:50

@alexndr

Jare, why Zip is preffered?

I cant say what Jare’s reasons are but for me, Zip is prefered as it allows you to get around console manufacturers crappy file systems. It also abstracts away the differences.
Although, its not as much of a problem on nextgen.@MikeS

What other things would you expect from a engine? What are your expectations for a basic game engine.

Thats very much how long is a piece of string question. It entirely depends on your requirements. I’ve made games with very few features from an engine point of view. All you need is something to handle input and some way of outputting that onto the screen to create a game.

77abcbc6d0ef4d3c469206319922a05f
0
MikeS 101 Jun 02, 2006 at 22:09

Thanks for the input Jare.

Thanks SigKILL.

Thanks Mark, that’s an awesome list and a good guideline for me to use.

@CobraLionz
Perhaps, as I admit I have never implemented them into an engine. However, adding these effects to an engine requires extra passes in the renderer, which adds more depth and sophistication to the engine. I’m asking whether or not you’d expect these features in a standard hobbyist engine.

Thanks Dave.

Thanks everyone.

:)

6f0a333c785da81d479a0f58c2ccb203
0
monjardin 102 Jun 03, 2006 at 16:28

As a hobbyist, I would want to know why I should use a new engine versus the several stable varieties already available. ;)

If I were interested in creating an engine, I would look for a niche in which to specialize. Trying to cater to ever possible genre can be an overwhelming task for an individual. In other words, imagine a game and then list everything you would need to make that particular game.

Just my humble opinions… :blush:

4e70f904a74bd2aa8773733b25b77d41
0
SigKILL 101 Jun 03, 2006 at 17:15

@monjardin

As a hobbyist, I would want to know why I should use a new engine versus the several stable varieties already available. ;)

He would probably want to do it because it is fun(tm). Another reason might be to learn, but learning is also fun. There seems to be some people spreading rumors that making an engine is hard and boring. I disagree.

A8433b04cb41dd57113740b779f61acb
0
Reedbeta 167 Jun 03, 2006 at 18:57

@SigKILL

There seems to be some people spreading rumors that making an engine is hard and boring. I disagree.

“Novice programmers think programming is hard. Good programmers think programming is easy. Great programmers know programming is hard.”

I’m not sure who said that, but I agree…making a little hobby engine may not be too hard, but making a good engine is quite difficult. As for boring, obviously it depends on your point of view, but I’d argue that things like memory management code, geometry (vector/matrix) classes, virtual file-systems, and so forth that make the basis of a modern engine are relatively boring to implement :)

4e70f904a74bd2aa8773733b25b77d41
0
SigKILL 101 Jun 03, 2006 at 21:53

@Reedbeta

“Novice programmers think programming is hard. Good programmers think programming is easy. Great programmers know programming is hard.” I’m not sure who said that, but I agree…making a little hobby engine may not be too hard, but making a good engine is quite difficult. As for boring, obviously it depends on your point of view, but I’d argue that things like memory management code, geometry (vector/matrix) classes, virtual file-systems, and so forth that make the basis of a modern engine are relatively boring to implement ;)

I think math is hard. However, I would say Galois theory is easy, but only because I know the theory of schemes is way harder. Wheter something should be classified as hard or not is always in a relative context. The topic was started by someone wanting to make a basic engine. Seems like people forgot that…

People seem to proclaim that making an engine is close to impossible (even though Egerter is able to make a living of it). Maybe I´m just seeing the results of the java schools: http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

6f0a333c785da81d479a0f58c2ccb203
0
monjardin 102 Jun 03, 2006 at 23:10

@SigKILL

He would probably want to do it because it is fun(tm). Another reason might be to learn, but learning is also fun.

I was questioning why another hobbyist would want to use the OP’s new engine. I was not questioning his reasons for wanting to build his/her own engine. To the contrary, I would like to encourage the OP to do so. My point is that it needs something special for someone else to want to use it. A hobbyist trying to out-feature Ogre is in for a disappointment.

77abcbc6d0ef4d3c469206319922a05f
0
MikeS 101 Jun 04, 2006 at 14:51

Hello all,

To anwser the general question of why I want to make an engine. Obviously, what I make will most likely never be as powerful as OGRE, given that

a.) I’m out manned.
b.) currently out planned.
c.) less experience.

The reasons I want to create an engine however, is to have a general purpose engine to help speed up game development. I like what someone mentioned above about designing for a niche market, and that’s probably what I’ll do. Certainly games like RPG, FPS, and adventure have more in common then with RTS, Turn-based, and puzzle games. :)

Why anyone else would want to use my engine is honostly up to them. Simplicity is the most important thing for me when designing, so that means I’d feature a smaller command set then most engines to get the jobs necessary done, thus only the standard things you’d expect from an engine.

:)