This confuses me as the title says "Mostly Civilized: A Hex-Based 4x Game Engine for Unity - Part 1"

Unity is a Game Engine, and he is building a game engine for a game engine.

Did he word this incorrectly, or is building a game engine into a game engine a real thing?

  • \$\begingroup\$ Your premise, Unit is a Game Engine, is incorrect. Unity is a game development platform. \$\endgroup\$ – corsiKa Jul 1 '18 at 16:08
  • 1
    \$\begingroup\$ @corsiKa Unity* is also a game engine. \$\endgroup\$ – Evorlor Jul 1 '18 at 16:16
  • 1
    \$\begingroup\$ Yo dawg we heard you like game engines, so we put a game engine in a game engine so you can work with a game engine while working with a game engine. \$\endgroup\$ – liggiorgio Jul 5 '18 at 15:15

The word engine is somewhat ambiguous. It can be used broadly to mean any integrated development environment for building games. Or it can be used specifically to describe the framework of a particular game or type of game.

Here are two sentences illustrating the difference:

  1. Unity is a great engine for building all kinds of games. GENERAL.
  2. When they remastered Shadow of the Colossus, they rebuilt their original engine. SPECIFIC.

Unity is a game engine in the broadest sense. It can be used to make games.

But you might write up something in Unity that is well-suited to make a particular type of game, for example a first-person shooter. Then you would have made a first-person shooter engine that others could use to make first-person shooters. Similarly, you could write something in Unity that is well-suited for making hex-based games, in which case you'd have a hex-based engine.

This ambiguity makes sense when you think of an engine as any piece of software with "an encapsulated block of functionality" (here), since you can always construe these blocks of functionality as coarsely or as finely as you'd like.

  • 1
    \$\begingroup\$ The "difference" you describe doesn't seem like much of a difference - saying one is general and the other is specific doesn't really say much - if there were some engine dedicated to FPS's on the same level as Unity (call it UnityFPS), are you saying that would be pretty much the same as the SotC engine (and fundamentally different from Unity)? If yes, why are you using what an engine can produce to define what it is (surely a skateboard is a skateboard regardless of whether you use it to skate with or use it as a hammer)? If no, you might want to make some major changes to your answer. \$\endgroup\$ – NotThatGuy Jul 1 '18 at 19:46

There are really two different meanings for (game) engine today. Categorical definitions are often nebulous, but here's the feeling I've picked in 30 years of orbiting the industries.

Unity already contains dozens of things we call engines. There's a Particle Engine, a Physics Engine (two of them!), an Animation Engine, an Audio Engine, and a UI Engine at the least. The object management system and rendering subsystem might also count.

In this form, "engine" means "a usually-reusable/modular system, component, framework, module, or library designed to manage the ongoing transformations of your persistent state based on inputs or rules." Things outside of games use the term sometimes too; I've seen plenty of HTML renderer and database and widget/windowing systems being referred to as engines, if not named it in the code.

One thing Unity doesn't come with is a Rules engine or a Mechanics Engine or a Gameplay Engine (unless you're making a pure physics game), and that's what that guy is trying to make. It looks like in later episodes he's working on creating mechanics for city management and stuff, so it's not just about the tile map. But a Tile Map Engine is another thing that Unity doesn't come with.

The other use of the word comes from earlier days, when intentionally making modular components to reuse between games was far less common and largely an in-house affair with things like the Z-Machine and the three or four frameworks Sierra went through over the years. It wasn't until cross-company licensing of the Doom engine broke out that anyone used the term, AFAIK. And back then, it really was one hunk of code that would run your game; you would have to hack it to add new behaviors but most of making a game like Heretic really was feeding new graphics, maps, and audio into the system.


Unity is indeed a game engine. However, it is highly customizable. That's what it means to build an engine on top of unity - to customize it.

Unity does not have any built-in functionality for hexagonal grids. By customizing or adding this to the Unity engine, they have "built their engine into Unity".


Your Answer

