Sign in to follow this  

What all is required for a working game engine?

This topic is 4415 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Now I know that I joined not long ago, and the topic sounds insanely noob-ish, but I'm at a loss of better words (at least under 50 words) for this. What would make a good compilation of base engines, which could be essentially combined for a game engine? I'm not asking if it's hard or how hard it is to combine these, just the engines. I'm not asking for specific engines either (that would be nice though), but just the types of engines. Anyways: What all types of engines are needed? I'm assuming that one would need at least a good Graphics engine, a Sound engine, Physics, and something for input. Would any other types of engines be required though, e.g. media players and others. My current list of base engines for a game engine is: Graphics: The Nebula Device 2 or some other ones that I've looked at Sound: Audiere Physics: Newton Input: Undecided Else: this is what I was wanting to know. Thanks for your time, and my apologies if this post was odd to decipher and/or confusing.

Share this post


Link to post
Share on other sites
I know the choice doesn't matter, but what I was asking was are there any other base engines I would need to make a good engine? My goal is to kind of sort of get a free engine set up to rival the commercial engines. It's a little crazy, but so am I. Anyways, what other types of engines are needed? Will I need something for say...AI or something else?

Once again, specicific engines aren't the main point of the topic, just types of engines, I think I'm covered but not sure.

Share this post


Link to post
Share on other sites
Ah thanks for that xor. Source probably would be a good example to use as a template (as in what's needed, not steal the 'Source'). And on the dissecting engines note, I've been doing that for two days strait now, and I've looked at alot of 3d engines. Haven't looked at many for the other areas though...

Share this post


Link to post
Share on other sites
When looking at engines and libraries, you have to ask yourself - "Do i need it?". If it's just an extra piece of icing on your cake, you could probably cut back on it. I'd say choose the bare minimum of specs and work with it. Your next project can then be more ambitious.

Share this post


Link to post
Share on other sites
yes, yes I know, and I thank for you for the info, but my exact question is for a fleshing out of the term need.

What do I need that I haven't already listed. I know the physics are a extra, but it should prevent having to look for some other collision detection mod, if I'm not mistaken.

Share this post


Link to post
Share on other sites
You don't need anything. 90% of the projects I've worked on didnt use a physics engine, yet you have that. So where do you draw the line? I don't think we can give you that answer.

Share this post


Link to post
Share on other sites
There are only 3 things that you must have.

Input (can't play a game you can't interact with)
Game Logic (The game goes here, and this is the most important part)
Output (Hard to play a game when you have no idea what's going on, This is what almost everyone treats as the most important part)

Most things are going to fall under those 3. The execptions I can think of are utility librarys. Like a library for loading various files. You don't "need" this since you can generate everything you need in the gamelogic. Another example would be a network library.

Input: something that can interprete your mouse, keyboard, joystick, touchpad, microphone, dancepad, camera, shiny red button, direct wire into your brain.

Game Logic: Scripting Languages, AI, Physics, Pathfinding, lots and lots of other stuff.

Output: Graphics, audio, force feedback, console,robot, smell generator, printer, taser in your side, etc.

And for fun you can mix and match, for example you could have voice controled pong, that uses soround sound to tell you where the ball is. Or a chess game that you email moves to, and it prints out the board (or uses a robot to move pieces). Or you push a a big red button every 10 - 11 seconds or get tasered (probably less painful than everquest).

Maybe I should post this in game design and see what kind of weird stuff people can come up with for fun.

Share this post


Link to post
Share on other sites
Ah, thanks for that info. I knew there were some basic parts required for a good engine, and didn't know them exactly. Now that you mention, I remember something like those being mentioned in a book a bought. I'm gonna start looking for it. Once again, thanks.

Share this post


Link to post
Share on other sites
Ok here's my shot at this. There are only three things you need for a working game engine. Those are graphics, sound, and input.

Graphics:

One of the main aspects to games nowadays, and for big reasons too. It is essential to have some system of being able to draw objects to the screen in a manner that is fast and efficient. It should support a lot of hardware and software features if you are going to do 3D as well as be able to run on older machines to a certain degree of not killing your audience base. I.e. support people with a 32+MB video card, but don't require them to have some 256+MB card.

Your graphics engine should be able to handle a variety of formats, or you will suffer later on when trying to add content to your game. No one appreciates a graphics engine that they have no choices on what they can use to model their stuff with, unless it is top notch (3dsmax and Maya quality) and you give it to them for free. Best bet is have something that the main package users can work with. These are 3dsmax, Maya, and LightWave. Blender is a must as well sa Milkshape since they are free and low cost, respectively.

Ideally your graphics engine should be graphics api neutral. What I mean is that you are doing everything abstractly and not to one specific API. By doing this, you will end up making your engine more versitile and let people worry about the important stuff rather than how to do what in each language. Yes, that is more work on your part, but in the end it is worth it. If that is not possible at least take care of wrapping everything up so the end user has a more high level api to work with rather than the core API of your language of choice.

Sound:

We are in the 21st century. If your game doesn't have sound, well good luck. Sound is one of the often overlooked, pardon the pun, aspect of games. I mean you want to have something that does not take away for your game, but you don't want it being the main feature of it either. In your engine you should have something that wraps up all the dirty low level stuff.

Ideally, IMO, you want something that the end user can easily work with and have no troubles. The way I did mine was more along the lines of one function wonders. One function to initialze, one function to load anything, then the respective functions to play, pause, stop, modify settings, etc... If you decide to use DirectSound or DirectMusic, you'd better wrap it all up! Make the end user do as less work as possible. Which leads us to..

As to what you want to use for your API there are few options. FMOD is popular because it's easy as pie to get working and use. However that does come at quite a cost, so you might want a free solution, such as OpenAL or Audiere. The decision is your though, try to keep in mind that many people might want to be able to plug in other stuff, so making it flexible, while challengine, makes it more promising.

Input:

Ahh the glorious input. Without your game is just a movie, more or less. There is not much here to consider, either Win32 for your game (big no-no) or DirectInput. DI is the best thing to use, hands down. It has support for a whole bunch of devices as well as force feedback support. Unless you are using something such as SDL, which does have its own input, DI is your onestop solution. Well there are other things such as GLFW that has its own input, but for a serious game, I think DI is your best bet really. If there is only one thing from DX that you have to use, it should be DI.

Once you have all three of those, then I mean that can be all tossed together and you can make a game with it. But there is so much more to engines! That is just the bare skeleton requirements. Physics is a must for 3D games and perhaps some 2D games. While you do not have to get a lbirary, you should at least have your own simple stuff. So in response to your first post on the stuff here's mine:

Graphics: Ogre3D
Sound: OpenAL
Physics: ODE
Input: Direct Input

As for everythign else, not there yet, but a few things are the scripting, resource management, saving systems, and I can go on and on, but the main point is that its more of a 'what you need' kind of thing. I'd say if you make your engine use plugins, so people can add whatever the heck they want and can use it, then you are all set!

So heed the advice of the wise that have said to take a look at other engines, there is another recent thread about this topic as well. Each engine does sutff a it different and can give you lots of neat ideas. Take a look at that XML thread too, it has some neat ideas for game engines as well. Good luck!

Share this post


Link to post
Share on other sites
My requirements are a little different. But it depends on the quality and if the engine is to be genre specific or general. I think a good high quality engine should have physics but a lower level one won't. Also, I think the best engines for the job will be ones made for the purpose, like the quake lineup. They are close to the best for FPS games, but they don't work too well for RPGs or RTSs. Any general engine that works with all genres will probably be slower, less quality, but work in variety.

Share this post


Link to post
Share on other sites
Thanks for the great replies.
@Drew: That was very informative. Thank you so much for the precise description of each neccessity, and even the extra tidbits. You're a lifesaver man.

@Kburk: I'm planning on making the engine pretty specific, for thirdperson action games. It's specifically going to be the engine for my stealth game. I'm just planning on releasing the GDK I form out of the libraries when I'm finished.

On a side note: I know stealth games should never be made by beginners in c++, but I love them, and I've used some other languages before. I'm going to make sure I know the engine well, and then start work on it. I think the reason I'm wanting to make it so bad is because of how much I love the source material for game.

Once again, thanks for the replies.

[edit]I just noticed SxDL. I saw that it also uses DX 9.0b. Any chance that this is a decent framework? What about it's actual power?

[Edited by - tg_matt on May 16, 2005 9:57:30 PM]

Share this post


Link to post
Share on other sites
Quote:
Original post by tg_matt[edit]I just noticed SxDL. I saw that it also uses DX 9.0b. Any chance that this is a decent framework? What about it's actual power?


If your project is Windows-only, you might look into it. SDL apparently only uses software blitting, and is painfully slow. On the other hand (if you are working on a 2D game), you could write OpenGL sprite routines like I have, which are painfully fast!

Share this post


Link to post
Share on other sites
Once again thanks. I'll probably leave SxDL alone, in that case. Another awesome and informative post drew. Interesting stuff.

edit: I guess i'm trying to get famous for side notes, because here comes another one.

What about DevLib. It looks neat, but I'm not sure about it's graphics rendering. Any info on it?

Also, the other day, I thought about modifying the quake engine. I considered learning something like DirectX 9 or OpenGL to implement modern features such as higher polygon counts and bumpmapping. It wouldn't be to the core rendering, I'd leave that as a fallback path for old hardware, but do you guys think it'd even be worth the effort. It is a really old engine.... Maybe I should wait until the q3 engine is released to try something like that. Oh well.

[Edited by - tg_matt on May 17, 2005 5:24:22 PM]

Share this post


Link to post
Share on other sites
My recommendation is to use either OpenGL or DirectX if your looking at 3d. A good engine will have both and the rendering will be unknown to the user of the engine, thoug the user may be able to request one or the other. The engine usually decides which to use. I know torque works like this and there are a few others. You could also just use one or the other, which would make for easier programming of the engine itself. If this is for a 3rd person view game like you said, then I recommend you get pretty specific with the details. Program the camera to automatically follow the "player" object from within the engine. If you have weapons, program that into the engine, though make it where you can choose what they are externally. Point is, as the engine is for a specific genre/game, you can get down and dirty with low level stuff so that the programmer who uses the engine gets the work done faster. With a multi-genre engine, this is not possible.

Share this post


Link to post
Share on other sites
Yeah, I'm planning on it being rather specific. The plan is to set the engine or GDK for my own game and then release a somewhat less specific version when the game is complete, or at least a good % done. I'm looking pretty closely at openGL right now. Then again, Direct X is still really good. Oh decisions, decisions. Btw, if I'm not mistaken, The Nebula Device 2 is a full game engine right? Lacking a few minor parts probably, but it seems as though it's a full engine according to the site.

Share this post


Link to post
Share on other sites
Whooaa Cool I love this like thanks a low Drew_Benton this was exactly the kind of guidelines I was looking for in order to start the creation of game engine demo... if I can ever see the end of it :P

Share this post


Link to post
Share on other sites
Quote:
Original post by kburkhart84
My recommendation is to use either OpenGL or DirectX if your looking at 3d. A good engine will have both and the rendering will be unknown to the user of the engine, thoug the user may be able to request one or the other. The engine usually decides which to use.

Actually, you should just use Ogre3d. I know it's been mentioned before, but it's still an awesome engine. With Ogre3D, applications that you write will start up with a dialog box that allows the user to choose whether it'll run in OpenGL or Direct3D (7 or 9). Besides that, it is a graphics system of least surprises, that is, if you are looking for a certain method, you will most likely find it. Ogre3D gets rid of all the low-level OpenGL and Direct3D details, and lets you concentrate on the overall graphics.

But there is a huge con - Ogre's massive size.

I quote from the FAQ:
Quote:

Is OGRE A Game Engine?
No. OGRE can be (and indeed has been) used to make games, but OGRE is deliberately designed to provide just a world-class graphics solution; for other features like sound, networking, AI, collision, physics etc, you will need to integrate it with other libraries, something several frameworks have done, and we have a collision / physics reference integration library as an example in our distribution.

Share this post


Link to post
Share on other sites
Guest Anonymous Poster
Guys guys, tell me why that every engine i have come across is geared towards programmers and not artist? I mean how is anyone going to produce a good game for your engine if you limit yourself to programmers? WATHA H_LL?

(atleast let us have the dam .exe so we can start using the dam engine you B__CH)

Is there any engine with comparable qualitys to nebula but more friendly to artist. Or if anyone has an already built version of nebula 2 please share it with the world

I think the reason crappy games have been appearing soo much in the millinium is because of this very fact that games are getting more complicated and artis are having to reply on programmers to make games. Just joking =)

Does anyone want to help share a already built version of nebula 2 so non-programmers can freaken open the dam engine and expereinve with it?

Share this post


Link to post
Share on other sites

This topic is 4415 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this