What exactly is a game engine??

Started by
8 comments, last by Elite19 20 years, 6 months ago
Hi, I''m just strating to learn opengl in hope to someday make a 3d game. So far I can render triangles and stuff and i thought if opengl does all the rendering, what does a game engine do? Does it just split up your map and textures and tell opengl what to render?
--------------------------------------------------------------------- There are 10 types of people in this world, those that understand binary and those who don't.
Advertisement
Your game engine is the encapsulation of all the different parts.

Let''s say you have a render engine(using OpenGL in your case), a physics engine, sound, input, AI and network. All those differents parts come together in the Game Engine.

When you start a new game you make an instance of the game engine. Let´s say your game engine has 3 virtual functions:

Init
Main
Shutdown.

You declare this functions in your App and trough the Game Engine you acces all the other parts.
The openGL is a low level API to directly access to hardware. It''s not a good idea to use the OpenGL as a graphic engine BUT to use it as a main part of the graphic engine! A Game engine does a lot more things that only render triangles. Talking about just graphics, there is a lot of more things than just render triangles one by one. You must have a system that organizes meshes, a texture manager, lighting manager by using some kind of a queu, effects like particle systems and billboards, bone systems, etc...
Then, talking about not just graphics but everything, you must have a scene manager and a world manager that organizes objects in your game and the world where they are! You must have a system that organizes objects in a hierarquy tree, a system that organizes the entities of the game, that performs collisions betwaeen objetcs, that manipulates the render states and the drawing of meshes, the manage the sound and music, AI''s....and...all of it....must optimize the game for really large scenes and resources!
There is a lot of tecnics to optimize render, make culling in non visible objects, etc. You can just see www.gametutorials.com . They have a lot of tutorials how to use openGL. Then they go throught in loading textures and meshes, culling objects, Octrees that optimizes world and the QuakeIII maps (the last one is not so worth since the QIII maps and BSP tecnics are now outdated).
Techno Grooves

http://www.extremetech.com/article2/0,3973,50077,00.asp
Enginuity part 1 (see sig) might help you.

Superpig
- saving pigs from untimely fates, and when he''s not doing that, runs The Binary Refinery.
Enginuity1 | Enginuity2 | Enginuity3 | Enginuity4
ry. .ibu cy. .abu ry. dy. "sy. .ubu py. .ebu ry. py. .ibu gy." fy. .ibu ny. .ebu

Richard "Superpig" Fine - saving pigs from untimely fates - Microsoft DirectX MVP 2006/2007/2008/2009
"Shaders are not meant to do everything. Of course you can try to use it for everything, but it's like playing football using cabbage." - MickeyMouse

After you write a few games, you will notice they share a set of similar functionality. A game engine abstracts this similar functionality into a common, generic code base that can be reused by different games.

Completing a nontrivial 3D game is a difficult challenge. Very few people actually do it. Completing a game engine is even harder. Almost no one does it. But that doesn''t seem to stop many from trying.

Write a few simple games before worrying about game engines.

Thanks for the replys. I didn''t realize there was so much to game engines. I think instead of re inventing the wheel I''ll just use a game engine that already exists if i have any hope of releasing a game in the next century
Has anyone used that 3dState engine?, I just downloaded it and it seems pretty easy to use.
Thanks again everyone.
--------------------------------------------------------------------- There are 10 types of people in this world, those that understand binary and those who don't.
somehow i have always hated using other people''s codes...You learn so much more by trying to learn, understand & then code it yourself...But i guess you have to start somewhere.
to code or not to code, that is the algorithm
I don''r know the 3DState. I''ve heard about Ogre and I thinck thats is good!

Know, I''m in the same opinion as the idx14. You learn more doing things your self that using other''s engine. For learning propose, you must try to make something like an engine and or even make one (like I''m doing). If you do not try to make the engine for DoomIV or to mek the engine for Unreal3, you can terminate with a really good engine with some interesting features! For my self, I''m not doing and engine to make really powerfull graohics, grat effects and so. I''m doing a simple engine, not that more than just plain triangles with multitexture, but, I want it fast and stable! Really fast and stable. A fast and stable engine is the point to make later an excelent engine than one with a lot of features but slow.
Then, you you enter in a professional project later, you may purshase a comercial engine or just make your own engine better!
If you are a complete beginner, you may first loose some years (1 or 2) just trying to make things in OpenGL or some other things. Don''t bother to make any game or just try to make really simple ones. Read articles from Gamedev, Gamasutra, tutorials from Gametutorials and NeHe, try to make some demos and so. Then, after that year of experience, you may want to try to do something really good, you know what you want to make and maybe you have an artist that have some needs that you must work on. For example, i''m working with an artist that like things simple, just simple triangles with textures BUT with a LOT OF TRIANGLES!! REALLY....for ower first demo, he maked a scenario with no textures and with face shading with some kind of 79k triangles!! www.videmogroup.org In RLS page the is the public release o fthe demo. Has you can see, my artist needs an engine that works great with great quantities of triangles.
If you get someone to work with, you must do things taht your partner really likes to work with. If your partner like Maya, you must work with Maya. If your partner likes big scenarios, you must search for partioning tecnics that optimizes that kind of scenario (octrees or something). If you partner like simples indoor scenes, you must explore the BSP. And so over!
Try to make things slowlly and thinck in what are you doing!
Techno Grooves
i know morfit says something about 3d state. If you have the morfit engine, you might wanna stay away from it. I''ve used it before, and it is really horrible. I even downloaded a game made by it (which was made by the top group using morfit, they had advertisements all over the page, and was usually posting on the forums, etc. etc.) and the game crashed a lot (expected with beta). The game it''s self performed pretty well, except when you walked pass a certain point in one of the levels when, yep, another crash...

Now, as far as my programming experience with it goes, They make it easy, but it just doesnt work very well. I''d leave it up to you to decide your self if you like it. Dont base your decision from my opinion. But some better starting points, that I''d personally recommend would be:

http://www.truevision3d.com/

and

http://www.revolution3d.com/

these are by far the easiest to get up and running. I started out in vb, and i used these. After i took a break from programming altogether for a while, i came back and learned c++. Then went back to these engines (almost a year later) and re-downloaded the newest versions, and got them up and running in C++ as well. So they are cross-compatible with different languages/compilers. And as Enginuity, Part 1 states, its just like making new maps and textures to create a new game.
--FirekingOwner/LeaderFiregames Development &Blackdragon Studios

This topic is closed to new replies.

Advertisement