🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Game Programming (before DOOM...game engines)

Started by
50 comments, last by blueshogun96 7 years, 5 months ago

But another question: How comes, that Space Rogue / Ultima Underworld or DOOM are often said to be the first games that based on a reusable game engine? Was one of those maybe the first licensed engine or the first 3D game engine?


Possibly because these games marked the start of the "Golden Age of PC games". Before DOOM the PC wasn't really considered a good candidate as a gaming platform. It was expensive, it couldn't display as many colours, it didn't have hardware sprites etc.. The main gaming platforms at the time were the SNES and the Megadrive and a few people still trying to keep the Amiga and the Atari ST alive. Also outside of simulation games and a few obscure titles fast 3D gaming wasn't really a thing.
Advertisement
There's a lot of opinion and facts mixed up here. The initial statement that ID/ Doom was the 1st to do this, is also arguable. If you read ID's own postmortem, they advice to develop also the engine towards a specific game. And when a new game is developed, do the same and change the engine to the needs at hand. The article can be found on gamasutra btw

Crealysm game & engine development: http://www.crealysm.com

Looking for a passionate, disciplined and structured producer? PM me

When did C++ become popular in gmaes?

When decent C++ compilers appeared for the hardware. Remember especially back then, consoles were very different to PCs. I worked in the industry in 2003/4 when PS2/GameCube/XBox were current. The C++ support for the PS2 was pretty bad as I recall though we were already using C++. Of course it's important to note that even though C++ was widely used in Windows back then, the standards were a long way from what they are now and different compilers weren't compatible. I'm trying to recall if we were still using VC++6 back then... getting C++ code to compile against several very different compilers was quite a challenge.

@Kylotan

I actually got this from "Game Architecture and Design" from Rollings and Morris. They write about the 80s "There were no good C compilers then, and the few that did spring up did not produce code small and tight enough to be usable for games. This meant that porting a game to another platform required a complete rewrite." and later on "Doom heralded the beginning of the C era of game programming. Watcom, the makers of the C/C++ compiler used to write Doom, must have experienced a huge boost in sales...". So I thought it would be ok to write "no compilers". :/

That's a good book on the whole, but that particular paragraph is an exaggeration, at least where the late 80s are concerned. Lots of Amiga games (not the majority, but lots) were written in C in the late 80s and early 90s. Doom is arguably the point where it became clear that C was definitely sufficiently fast for top action games, but the change had been gradual up to then, and continued to be that way afterwards too.

And yeah assembly was the way back in the 80s, it was not that difficult on the 8 bit CPUs, with direct access to screen memory, and a lot of people did it on the amiga and ST which were 16 bit. Even the tools were in assembly, like sprite editors, map editors, memory editors, disk editors.

Even well into the 90s, assembly was still fairly common. I wrote and worked on a DOS-based textmode GUI from about 93-97 where the logic was in C++ but all the drawing routines and heavy calculations were still done in assembly for speed reasons.

ASM was still used well into the 2000s in specific places and especially on lower-power devices. Don't forget that just as we all thought we'd escaped, shaders came along :)

And then with SIMD, isolated use of ASM became quite useful again for some really dramatic performance benefits.

i think there should be made a distinction between reusing code and using a game engine. In theory you can use a game engine without needing access to the code, right?

For my understanding "using a game engine" is a major kind of reusing code, i.e. by using the physics-system of a game engine you reuse the code you or some other wise fellas wrote in advance. :)

So when I reuse business application code I am using a business application engine? Hardly, they are useful libraries.

"Some physics system" is a phyiscs library. Physics, gameplay, sound and display libraries all designed and working together with intuitive interfaces / api's is starting to look like a game engine.

Painting all code reuse as a minor engine release and all big engines as major code reuse is really flaky. The line has to be drawn somewhere. We have dwarf planets for a reason.

A game engine is a defined as....

A game engine is a defined as....

"...a framework comprised of a collection of different tools, utilities, and interfaces that hide the low-level details of the various tasks that make up a video game." (Sherrod 2007)

"...collection of modules of simulation code that do not directly specify the game’s behaviour (game logic) or game’s environment (level data)." (Lewis and Jacobson 2002)

"Arguably a data-driven architecture is what differentiates a game engine from a piece of software that is a game but not an engine. [...] We should probably reserve the term “game engine” for software that is extensible and can be used as the foundation for many different games without major modification." (Gregory 2015)

...just to name a few definitions I found. :)

Most of the commercial games that Ive worked on have been on proprietary engines. The game and engine are often in the same code base. Often each project begins by copy amd pasting the previous, and then tearing off all the game specific bits you don't need.

I've literally seen a code base going through changes like: Find "Transformer" Replace "Jedi".

Everyone would agree that we were using a quite advanced game engine (runtime and tool set), but it really was just simple, yet extremely widespread code reuse.

i think there should be made a distinction between reusing code and using a game engine. In theory you can use a game engine without needing access to the code, right?

Yes, but you can also use a library/sdk/language without needing access to its source code. Many libraries are distributed as closed source. This is still "code reuse" despite not having access to the code youself.


So when I reuse business application code I am using a business application engine? Hardly, they are useful libraries.

Arguably, yes, you are.
I've worked on statistical business apps where the core of the code-base has been reused in different projects and people did refer to it as the statistics engine.

"Some physics system" is a phyiscs library.

Self contained physics and rendering SDKs are often called physics engines and rendering engines.

Engine is a very vague term, somewhere on the same plane as "framework" or "SDK" OR "library". I don't think it has, or should have, a formal definition. It's meant to be an analogy, like "kernel".

So when I reuse business application code I am using a business application engine? Hardly, they are useful libraries.


I have worked on big financial and banking systems and have come across:

Business Rules Engine.
Charting Engine
Pricing Engine
Statistical Analysis Engine.
Secure Messaging Engine

So yes business code is still referred to as an engine.

One distinction I have noticed though is that third-party code is usually referred to a library and internal code that is reused is referred to as The <insert name of what thing does> Engine.

It doesn't really make sense to call these things libraries though because on a large business system these components can be written in a dozen languages, running on several different devices and include both client and server and be much larger than most games software yet still be only a tiny cog that needs to be integrated into the main project.

This topic is closed to new replies.

Advertisement