• Advertisement
Sign in to follow this  

Engines: Discuss.

This topic is 3758 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

I've been making games for a while, and I've wondered... what do people actually mean when they talk about game engines? I just read a topic about someone trying to pick an engine for a 6DoF game, and I wondered why people always like to use existing engines... simple games, at least, aren't really built around an engine. My earliest games weren't really engine-oriented. They were just a series of commands and calls that were executed each frame. A lot of people though seem to start their game design 'careers' wondering "what engine should I use?" I'm just looking for opinions. If you've got something to say about engines, what they are, why making engines has become so popular, or whether or not they are even needed, say it. Also, if this is in the wrong forum, say so and possibly move it.

Share this post


Link to post
Share on other sites
Advertisement
People usually refer to a game engine as a code library that factors out redundant code from games, though this is a loose and possibly wrong interpretation (I forget where i read this, or I would link the source *edit* lol, thanks rip-off, thats the one, but now that i reread it, I don't really agree with all its points).

For example most games need a renderer, a sound system, user input, some sort of cohesive structure (i.e. scene graph), etc... A game engine can/does provide these subsystems so that game developers can focus on design, game logic, and art instead of these lower level functions of a game.

Games don't absolutely need a game engine, and sometimes you need to build the core subsystems specifically for a game for it to be completely optimized, but this a lot of work of course. Simple games are quite easy to code procedurally, but when scenes/graphics become complex, you usually need something to organize the game world, or else it becomes a mess. Game engines often provide ways to remedy this through their renderer and scene graph, but a renderer and scene graph system is not an engine by itself.

To summarize, game engines takes a huge ammount of the work required to run a game away from the game developer. It hands this work in a nice great big package to crazier people who actually like programming more than creating games. Selecting/Building a game engine is a matter of the target genre, feature set, and compatability.

Share this post


Link to post
Share on other sites
I have a few cents to weigh into this conversation.

I am in the minority on this but i enjoy writing engines more than writing games.

That being said for the more complicated and larger scale a game is the more an engine is required.

Also if you plan on making a lot of similar games it just makes more since to be able to reuse the majority of your code than to start from scratch on the next game.

I wrote my on engine because one i learn a lot but more for the fact i have complete control over the license and structure of the engine code. I don't have to worry about making a FPS engine (for example) work for some type of game it was never designed for.





Share this post


Link to post
Share on other sites
Quote:
Original post by blackcloak
I wrote my on engine because one i learn a lot but more for the fact i have complete control over the license and structure of the engine code. I don't have to worry about making a FPS engine (for example) work for some type of game it was never designed for.


This is an oft-overlooked point. Understanding the way someone else was thinking when they wrote their engine is in many ways harder than writing an engine.

When you add up all the problems of supporting multiple platforms, APIs, dev-environments, etc. it becomes such a huge task that very few of the (mostly open-source) projects out there can stay on top of things. As an example, I spent several hours just trying to get a simple 'hello, world!' example to compile with the binary distro of OGRE (quite possibly the best supported free graphics engine) due to some obscure linker incompatibility with a dependant library. I don't see it as a poor reflection on the Ogre team, instead it is just impossible to test every possible configuration.

In your own engine, you usually know from the start the intended feature set, the platforms and compilers you must support, and you know your own coding conventions, all of which makes your life infinitely easier.

Share this post


Link to post
Share on other sites
The only problem with writing an engine and then trying to bolt a game onto it is that this process can show major problems with the engine which were apprent in inital design/writing phase.

This is why the advice is generally; write game, factor out code you can reuse, write next game using this code and repeat.

Writing an engine without a game can also lead to Ogre; an engine which is HUGE because it has alot of 'might need' functionality in it (never mind the singletonitis which infects it at every turn...) and tries to be a jack of all trades.

While I'm all for code reuse there are times when it just seems daft.. and from my brief encounters with Ogre this is one of those times.

Share this post


Link to post
Share on other sites
"Write libraries, not engines"?

To me, an engine is simply a stable integration of the diverse libraries precisely as required to implement a game of a particular genre (or with a particular complement of conventions). Yes, the word "simply" in there is misleading.

Making engines has become "popular" because engines have been commoditized as middleware in the professional industry, and a lot of marketing hype has been built around promoting said commodities. "Built on the Quake 2 engine!" "Built on Source!" "Using the next-generation Unreal Engine 3 technology!" Beginners think - and they're influenced by the consumer-oriented game journalism industry, which is filled with people who love games but actually have no idea how they're made (which is normal, really) - that engines are a necessity to make games, which simply isn't true.

Quote:
Original post by swiftcoder
This is an oft-overlooked point. Understanding the way someone else was thinking when they wrote their engine is in many ways harder than writing an engine.

Sorry, no. The effort to design, implement, test, debug, refactor and publish an engine of any value far outweighs the effort to download, read documentation for, write test programs on, and then employ an existing engine.

Share this post


Link to post
Share on other sites
The biggest benefit that commercial 'game engines' provide lies really in their tools and pipelines and in the fact that a team can get *something* resembling a game up and running quickly at the start of a project and can then iterate on a working game. If you're a commercial developer looking to start work on a game that you want to ship in 1-2 years then you don't want to have a team of artists and designers sitting around unable to create content that can actually be tested on the target platform while you wait for your programmers to build the basic foundations of a game that will get you to the point of having animated models moving around on screen in response to player input.

Most commercial games that use an engine will modify it fairly extensively by the end of the project but what they have bought when they license the engine is the ability to hit the ground running with everyone on the team - programmers, artists and designers - able to see the results of their work on the target platform from very early in the project and to iterate on those results, rather than having to build everything in a vacuum for several months while the programmers lay the groundwork for a commercial quality game.

Share this post


Link to post
Share on other sites
Quote:
Original post by Oluseyi
Quote:
Original post by swiftcoder
This is an oft-overlooked point. Understanding the way someone else was thinking when they wrote their engine is in many ways harder than writing an engine.

Sorry, no. The effort to design, implement, test, debug, refactor and publish an engine of any value far outweighs the effort to download, read documentation for, write test programs on, and then employ an existing engine.


It really depends on the situation I'd say.

What if it cost $750,000 to license the engine?

What if the game isn't a cookie-cutter design perfectly matching any existing engine, and would require lower level engine modification.

If you'd have to do modifications to the engine in order to achieve your goals, then at some point it is easier from the programmers' point of view to write their own engine. You can get a decent engine going in a year with a small team of experienced programmers...it would probably be cheaper than the $750,000 mentioned above. Or you could do it all yourself and spend $0 on the engine ;-) All of the information necessary is out there on the interwebs or at your local book store.

Again, it all depends on the situation, the skill level of those involved, budget, game type, etc.

I think the definition of an 'Engine' is just a set of functions to perform a certain task [graphics,sound,input]...or in the case of a game engine, towards a specified genre [ Flight simulator, RTS, FPS, Racing, MMORPGRTSOMFGZ, etc. ].

Share this post


Link to post
Share on other sites
Quote:
Original post by Oluseyi
"Write libraries, not engines"?

To me, an engine is simply a stable integration of the diverse libraries precisely as required to implement a game of a particular genre (or with a particular complement of conventions). Yes, the word "simply" in there is misleading.

Making engines has become "popular" because engines have been commoditized as middleware in the professional industry, and a lot of marketing hype has been built around promoting said commodities. "Built on the Quake 2 engine!" "Built on Source!" "Using the next-generation Unreal Engine 3 technology!" Beginners think - and they're influenced by the consumer-oriented game journalism industry, which is filled with people who love games but actually have no idea how they're made (which is normal, really) - that engines are a necessity to make games, which simply isn't true.


However, writing a game with no engine is also a pain in the arse - you never realise quite how dependant you are on an engine, until you try to write all the 3d math from scratch ('cause guess what... there are very few game-oriented stand-alone 3d math libraries out there).

Quote:
Quote:
Original post by swiftcoder
This is an oft-overlooked point. Understanding the way someone else was thinking when they wrote their engine is in many ways harder than writing an engine.

Sorry, no. The effort to design, implement, test, debug, refactor and publish an engine of any value far outweighs the effort to download, read documentation for, write test programs on, and then employ an existing engine.


I wasn't necessarily talking about a publishable engine there, more the sort one writes for personal use - more along the lines of your "write libraries" angle above.

But in all seriousness, by the time you get umpteen-million obscure dependencies installed, work around broken build systems, discover lots of bugs in the hastily slapped-together mac or linux port, re-implement the platform specific part so it works as advertised, discover feature 'X' is unimplemented in the engine, implement 'X'... you might as well have spent your time writing the game from scratch (or around your earlier code-base - aka. 'homebrew engine').

Share this post


Link to post
Share on other sites
Alot of people tend to overlook the difference between a "renderering" engine and a "game" engine.

They way I like to look at it, a game engine provides everything you need to jump in and start developing _games_ without having to spend time stuffing around with boring, re-inventing-the-wheel type low-level stuff. And this includes a set of tools for content development.

Oluseyi put it pretty well.

As for why they have become popular, yes, alot of the time it is to do with learning, getting experience. But more often than not I think it has more to do with ego stroking. Look at some of the posts on the IOTD gallery. Everyone is impressed by someone who can push pretty stuff on the screen.

Unfortunately, most of these engines are never really developed with the end goal of actually using it for a single title, let alone for a number of different titles - which is what a "game engine" should be used for. This is where alot of the "make games, not engines" stigma comes from. Which is quite a shame, because that is quite a lot of talent that could be pushing out some really fun games.

Just to pick up on something I mentioned before. There seems to be a lack of toolchains for alot of engines people are developing. An game engine that has its own dedicated editor for making scenes/levels is always more impressive, in my eyes, to a max exporter. You might have all this awesome next-gen quality stuff, but to me the guy that goes out on a limb and develops the "full package" deserves alot of credit.

I have seen a couple of really nice editors around here. It's pretty inspiring.

But more importantly, lets see more games!

Share this post


Link to post
Share on other sites
How many Indie games have been published without using a game engine ?
I mean real games , not PacMan clones or similar
As far as I known, none
A game engine nowadays is a must
The happy days of all in one game programming are over

Share this post


Link to post
Share on other sites
How many games programmers ...

- Have any idea how to handle the target platforms file system most efficiently to avoid long load times.
- Can code a shader system that allows artists to use a variety of shaders in an intuitive manner and have that shader system perform well at run time.
- Have the time to create a level editor for the artists to use.
- Can and want to write abstract layers to make basically any system platform agnostic.
- Really want to deal with platform optimal vertex array formats.
- The questions go on and on..

Propably none, or very few. The reason you use engines it to avoid all of these issues (and more). If you were to write all this for every game you were involved in you would literally be writing an engine per game anyhow. Use an engine, get to know it and you done. A word of warning, its important to have full source to the engine you use, so that you or the more senior coders can fix any issues or modify functionality in said engine. It is more than likely you will need to do both.

So sure most of us know there are some cross platform libraries that take care of the basics, but these provide generally very naive implementations and are not targeted towards performance, nothing that will beat an engine targeted at said platform.

Share this post


Link to post
Share on other sites
Quote:
Original post by Abert
How many Indie games have been published without using a game engine ?
I mean real games , not PacMan clones or similar
As far as I known, none
A game engine nowadays is a must
The happy days of all in one game programming are over


Hi. I'm a one man show with a world-wide publishing deal [Best Buy, Gamestop, it'll be pitched to Valve, etc.]. I wrote my own engine from scratch...mostly because it was required, and also for a learning experience. Cost: $0, and now I know the ins and outs of every aspect of a multiplayer RTS/Action game. Heavy use of middleware helps...DirectX, PhysX, FMOD, RakNet, etc...there are many unique features in my game I've never seen in a game before. I have a beta coming up soon with Fileplanet/Gamespy/IGN...you can check it out then :-)

Also here is another example http://frictionalgames.com/penumbra/ I saw their game in Best Buy, and they post around here.

- Danny

Share this post


Link to post
Share on other sites
Quote:
Original post by dgreen02
Quote:
Original post by Abert
How many Indie games have been published without using a game engine ?
I mean real games , not PacMan clones or similar
As far as I known, none
A game engine nowadays is a must
The happy days of all in one game programming are over


Hi. I'm a one man show with a world-wide publishing deal [Best Buy, Gamestop, it'll be pitched to Valve, etc.]. I wrote my own engine from scratch...mostly because it was required, and also for a learning experience. Cost: $0, and now I know the ins and outs of every aspect of a multiplayer RTS/Action game. Heavy use of middleware helps...DirectX, PhysX, FMOD, RakNet, etc...there are many unique features in my game I've never seen in a game before. I have a beta coming up soon with Fileplanet/Gamespy/IGN...you can check it out then :-)

Also here is another example http://frictionalgames.com/penumbra/ I saw their game in Best Buy, and they post around here.

- Danny


You engine hardly cost you $0 when you consider the time and effort you put into it. It did cost you, just not a lump sum of cash. That isn't to say that it cost you more than buying a commercial license for some other engine however...

Share this post


Link to post
Share on other sites
Quote:
Original post by lubby
How many games programmers ...

- Have any idea how to handle the target platforms file system most efficiently to avoid long load times.
- Can code a shader system that allows artists to use a variety of shaders in an intuitive manner and have that shader system perform well at run time.
- Have the time to create a level editor for the artists to use.
- Can and want to write abstract layers to make basically any system platform agnostic.
- Really want to deal with platform optimal vertex array formats.
- The questions go on and on..

Propably none, or very few. The reason you use engines it to avoid all of these issues (and more).


If I was hiring a rendering programmer for a cross platform title I would expect them to be able to do all of those things and more. The reason for licensing an engine should not be because the programmers on your team aren't capable of doing it themselves (if they're competent in their field then they should be able to) but because the project schedule doesn't allow for the time it would take to implement all the functionality themselves. Projects that license an engine and think it means they therefore don't need good programmers are doomed to failure.

Specialised middleware can be an exception to this rule - people license Havok and other physics middleware partly because not many programmers have the knowledge required to write a similarly featured physics engine from scratch and would need to do a lot of research to get to that point. For a whole engine though it's a question of time saving (particularly in reducing the time between starting the project and having content creators able to see their work on target).

Share this post


Link to post
Share on other sites
I think anyone would be very hard pressed to find a game company that does not use an engine, whether that be an in-house engine or one licensed as middleware.

Share this post


Link to post
Share on other sites
Quote:
Original post by mattnewport
If I was hiring a rendering programmer for a cross platform title I would expect them to be able to do all of those things and more. The reason for licensing an engine should not be because the programmers on your team aren't capable of doing it themselves (if they're competent in their field then they should be able to) but because the project schedule doesn't allow for the time it would take to implement all the functionality themselves. Projects that license an engine and think it means they therefore don't need good programmers are doomed to failure.


You would be hard pressed to find a programmer who can efficiently support cross platform development - by cross platform, I mean PC/consoles. And guys that can really bothered with all that stuff.

You are right about the time factor. Creating an intuitive environment for both programmers and artists to work in can take years.

Share this post


Link to post
Share on other sites
Quote:
Original post by mightypigeon
Quote:
Original post by mattnewport
If I was hiring a rendering programmer for a cross platform title I would expect them to be able to do all of those things and more. The reason for licensing an engine should not be because the programmers on your team aren't capable of doing it themselves (if they're competent in their field then they should be able to) but because the project schedule doesn't allow for the time it would take to implement all the functionality themselves. Projects that license an engine and think it means they therefore don't need good programmers are doomed to failure.


You would be hard pressed to find a programmer who can efficiently support cross platform development - by cross platform, I mean PC/consoles. And guys that can really bothered with all that stuff.

You are right about the time factor. Creating an intuitive environment for both programmers and artists to work in can take years.


That was his point. I've written abstractions for my libraries so that they work on any PC platform (currently implemented: Windows and Linux). The abstraction does limit itself to PCs though, but I only have a PC [grin]. I have no doubt in my mind that I, having absolutely NO experience developing for consoles, could write an implementation for a PS3. It could require a rethink of design, but I could do it. But could I do it efficiently? Hell no. The schedule wouldn't allow for it.

Share this post


Link to post
Share on other sites
Quote:
Hi. I'm a one man show with a world-wide publishing deal [Best Buy, Gamestop, it'll be pitched to Valve, etc.]. I wrote my own engine from scratch...mostly because it was required, and also for a learning experience. Cost: $0, and now I know the ins and outs of every aspect of a multiplayer RTS/Action game. Heavy use of middleware helps...DirectX, PhysX, FMOD, RakNet, etc...there are many unique features in my game I've never seen in a game before. I have a beta coming up soon with Fileplanet/Gamespy/IGN...you can check it out then :-)


Please correct me if I'm wrong, but I believe you have to pay money to use FMod in Commercial Products, so your cost isn't exactly 0. I believe RakNet asks for a minimal amount of money as well. What's the title of your product?

Share this post


Link to post
Share on other sites
Quote:
Original post by mightypigeon
You would be hard pressed to find a programmer who can efficiently support cross platform development - by cross platform, I mean PC/consoles. And guys that can really bothered with all that stuff.

If you want to develop a cross platform game then you're going to need a core of competent programmers who can write efficient cross platform code, regardless of whether you're using an engine or not. Hiring good qualified programmers is a challenge for most games companies at the moment - demand currently outstrips supply - but in my opinion it's essential if you're going to have any chance of shipping a high quality game.

Licensing an engine is not a substitute for a competent programming team, it's a time saver but it's not possible to make a high quality cross platform title without a good programming team.

Share this post


Link to post
Share on other sites
Quote:
Original post by lubby
I think anyone would be very hard pressed to find a game company that does not use an engine, whether that be an in-house engine or one licensed as middleware.


This almost seems like a tautology. You'd be hard pressed to find many game programmers who don't use code too. Of course every game company has some sort of "engine," because at this point engine has just come to mean a large base of reusable code for game development. Does it count as an engine if it's actually just core code developed specifically for one game that happened to be flexible enough for reuse? And if it does, then what doesn't count as an engine?

Share this post


Link to post
Share on other sites
For large scale games an 'Engine' is needed.

Primarily for this reason: programmers don't make games.

Not any more. Not for AAA titles.

Designers, level designers, sound engineers, and Artist make modern AAA games. i.e. NON-programmers.

Game programmer's make the tools that non-programmers can use to make a game. The primary tool being an engine, usually being comprised of many tools.

Most large games, or in general large code projects, are DATA driven. The mantra being 'Hard code nothing.' An engine is driven by the data, and many times plays a vital role in the creation of that data.

But in the end its non-programmers making the game. And you gotta have a tool that can allow that.

As a programming myself, that saddens me and also excites me. It is cool stuff to work on, but I too have game ideas.

But we programmers still rule the small and unique projects. Becuase a non programmer just can't start from scratch.





Share this post


Link to post
Share on other sites
Quote:
Original post by Abert
How many Indie games have been published without using a game engine ?
I mean real games , not PacMan clones or similar
As far as I known, none
A game engine nowadays is a must
The happy days of all in one game programming are over


This is just silly... Especially in indie games, it'd be hard to find somebody who *does* use an externally developed "game engine". There are the occasional projects based on GPL'd Quake engines or whatever but they hardly ever result in an actual finished product. Torque does get some use, but it's still definitely not in a majority of indie titles.

What everybody does with absolute certainty, of course, is reuse code from one project to the next. Sometimes they even encapsulate portions of code into neat little black boxes to make them even easier to plug into the next project. These are called "libraries" and if you're a particularly nice person you might let other people download and use them too.

Occasionally such a library becomes full-featured enough that any changes to make it work in another game are trivial or non-existent; at that point you may have a "sound engine" or a "networking engine" or very rarely even a "graphics engine". But you usually won't have a game engine; you can't turn your RTS into a Breakout game by only changing data files. (In this context, the .dll's and scripts used for game logic in game engines like Quake*, Torque, Source and Unreal are considered data files)

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement