Can someone give me a list off all techniques I should learn to make a good looking but fast engine for a game, thanks.
Well, it depends of some caracteristics of your game, like the size of the frustum, the number of polygons on a scene, etc…
In order to make a really “good looking” game, you’ll want to have multi-texturing, dynamic lighting, a particle system for blood or lasers or anything else, transparent texture, a Z-Buffer, bilinear and trilinear filters, bump-mapping and maybe volumetric fog ?
Or you can take the specs of a Voodoo, and make an engine that supports all its features
thanks, but if i took the specs for a voodoo the game would only work with voodoo cards then right?
You don’t NEED bump-mapping, don’t even think about it if you are just starting It’s a VERY cool effect though
Taking things a step on from what it looks like a bit. A game shouldn’t be thought of a just the game engine.
First off you’ll need some kind of object loader to take models out of Max, Maya, Lightwave etc, and load them up into data with which you can write functions to draw your data. What format is up to you, but I’d recomend one that stores the normals.(for hard and soft edges) DXF’s may be the easiest to read, but is it really the best to make stuff look good?
Secondly you’ll need an texture loader of some sorts. Again, the format is up to you. TGA’s and BMP’s are two of the most commonly used and there are many example pieces of code.
Then you’ve got to think about how you are going to store this data. Are you going to store all of this in a struct for each of your objects?
in terms of collision detection and clipping algorithms, are you going to use a BSP tree or some simpler method such as grid based collisions?
You should really think about things like how am I going to create my levels? In my experiance, the more effort put into writing level and model editors benefits the overall look of the game much more than spending your time finding faster and faster algorithms for the game engine. Yeah, a super quick graphically stunning engine may look good, but if you’ve overlooked how to create and edit levels, it’ll mean some fairly bland looking environments, and a very fragmented game that isn’t very playable.
The best advice is to plan out what is needed and how it is all going to fit together before you start. If you’re a few months in and find that something you programmed on day one, is giving you problems with your latest bit of code, but you can’t remove it because its an integral part of the game engine, it’ll either involve a collosal amount of work to blag your way around it, or the same amount of work to rectify it.
I suggest starting with loading an object. Writing a texture loader. From then on, have an idea what other features you wish to get in, and build them up at the same rate. That way you’ll have a very neatly integrated engine. Its very hard to put a new feature in towards the completion of a project, if you haven’t made allowances from the start.
Concerning the object loader, DXF is definitely crap except if you want to calculate the normals yourself each time the game starts !
My advice (and I think most people will agree) is to use the .ASE format (ASCII Scene Export from 3DS Max R3). Although the specs can not be found on the web, you can understand it by exporting some simple models to this format. If you need the animated meshes from 3DS, then the .3DS format is better. I read long time ago (was it Coco who wrote that ?!?) that you should avoid trying to read .MAX format because of all the modifiers that are in…
Well, if you just started, try reading ASE files, that’s your best bet !
Whole heartedly agree with DXF’s.
Another good format to load is the .OBJ format as supported by softimage and Maya.
You can fairly easily blag as much or as little data from it as you want. (even nurbs and hierachies if you can be bothered).