In real life, engines are extensive pieces of machinery built to make vehicles move. Whether it is a jet engine, a rocket engine, an 18 wheel truck engine, a train engine, a car engine, or a motorcycle engine, they all share the same basic purpose - to move the vehicle. The individual differences between them are optimizations for specific tasks. A motorcycle engine and a train engine are different - the motorcycle weighs a lot less than a train, so the motorcycle engine doesn’t need anywhere near the same power output as a train engine. A motorcycle has to fit on a chassis sized for one or two people, so it can’t be anywhere near as heavy as a train engine. These design choices determine what kind of tasks an engine is good at and what kind of tradeoffs are made - power, fuel efficiency, weight, acceleration, manufacturing cost, etc. will vary depending on the tasks you expect the vehicle to do.
Similarly, game engines are the code that makes the game run. Different games have different engine needs just like different vehicles have different engine needs. A 1v1 fighting game probably doesn’t need to animate as many individual models simultaneously as a real-time strategy game. A single-player game doesn’t need the same kind of client/server technology as a MMOG. These choices are all individual optimizations and features that the engine team builds over the course of development. If an engine is used for multiple games (and they tend to be, given their cost), the collective optimizations continue to build on each other. It’s like the evolution of a codebase - the needs of the project direct the way it will evolve.
So what do designers like me do when the engine is still a work in progress? Well… Similar to how it is possible to live in a house while it is being remodeled or rebuilt, we can spend our time in the parts of the engine that are livable. We stick to the already-working parts of a game engine while the engineers work on the parts that are not yet finished, and then we expand our scope as more of the engine features come online. During the planning phase, the engineering leadership figures out what kind of major engine features are necessary for the game, how long they think it will take to build those features, and what order to build them in. Using that as a roadmap, the design leadership can also plan accordingly - we can start with paper design and external prototyping while the engineers build the very basics, then we can start building content, systems, and assets in-game as the various new engine features come online and the engine programmers move on to other tasks. If those engineering features fall behind schedule, the leadership must reschedule our tasks accordingly. As you may have guessed, this often puts engine programmers at the vanguard of the development process and makes them extremely valuable and highly sought-after team members.
[Join us on Discord] and/or [Support us on Patreon]
The FANTa Project is being rebooted. [What is the FANTa project?]
Got a burning question you want answered?
- Short questions: Ask a Game Dev on Twitter
- Long questions: Ask a Game Dev on Tumblr
- Frequent Questions: The FAQ