These seem to be like the backbone of a game, but is it just the software to run it?
I assume you build your assets in other software and you import them into your engine, unless the engine does most of the heavy lifting these days?
If licensing good engines like unreal are relatively cheap these days, why is it so impressive to build your own? Some companies like Rockstar have used the RAGE engine reliably, whereas other games like halo infinite and cyberpunk crashed and burned. How could this happen when the developers should be intimately familiar with tech they built themselves?
I have been playing games my whole life but I have no idea how they work.
In: Engineering
Think of a gameengine as a collection of tools, some more or less specialized:
For instance: when you make a 3d platformer you need the ability of drawing geometry on screen, do collision detection on said geometry as well as have at leas a rough physics system in place for controlling the jumps of your character.
In theory you COULD code all of that yourself.
With a gameengine however, not only do you get these systems pre-packaged and easy to use, you also get functions for working with those systems that are at least somewhat uniform, making it MUCH easier to work on bigger projects with multiple people.
What a game engine really does is offer a standard set of tools, for things like physics and rendering. You don’t want to re-invent the wheel for every single game. You’re right in saying you build the assets in another software, and that’s actually one of the things that a game engine handles too, importing and managing of assets.
However, those tools aren’t always one size fits all. Rockstar *does* try to reinvent the wheel for every game they make, and push the boundaries of what a video game is. To do this most effectively it’s best to run software they made almost completely in house.
For Cyberpunk 2077 it “crashed and burned” due to misuse of the tools at hand, it uses the same engine as The Witcher 3 which did spectacularly. I don’t know the specifics about why Cyberpunk did poorly but from how I understand it, it was horribly unoptimized, which can come from the art department, the programmers, or even underlying issues in the engine.
Generally, Unreal Engine is continuing to dominate the industry. UE5 can do pretty much anything, and if it *can’t* and you have the right connections, Epic can license out versions for you to modify so it can do what you need.
Imagine you wanted to build a shelf. Using a game engine would be like a friend letting you use his fully equipped wood shop – there’s saws, drills, glue, etc. All the tools needed to build the shelf yourself. You’d still need to design the shelf and supply the wood, but having access to the wood shop lets you get started building the shelf almost immediately.
Building your own game engine would be akin to having to make your tools yourself too, so you start with practically nothing and have to design and build your own saw, drill, etc. This is not only significantly more complex and time consuming, but creates a lot more potential for something to go wrong. But if you’re successful and it works, you get to brag that you built your own power tools from scratch.
Disclaimer: please do not build your own power tools from scratch.
An engine is software for building and running a game. It’s supposed to handle all the common tasks that any game might need to do: drawing graphics, playing sounds, calculating physics, organising events, running gameplay over the internet, and so on.
Writing a major game engine is impressive because it’s a big piece of software with many features. It needs to be carefully balanced and optimised to work for different kinds of games, on different kinds of computers.
When you use an engine to make a game, sometimes you want to make the game work a certain way, but it’s hard or even impossible because the engine just doesn’t offer that. If you write a game from scratch with your own engine, you’re free to do anything you want, and you’ll be more familiar with the technology because you made it yourself. However, it’s a big risk, because you’re also signing up to do *everything* yourself, whether you like it or not—and you may not have enough engineers or enough time to make it work as well as the off-the-shelf product.
Game Engines are the code that runs the game. They have many different components to manage the different parts of the game.
They will load the models and textures for the game, animations, manage user input, the game camera, objects in the game, logic and AI for the game objects, manage terrain, pathfinding, collisions, physics and the logic of the game.
It makes sense to use a pre-built game engine because a lot of those things listed above are common for most games. A lot of implementation of the various parts of the game engine are really technical, hard to do well and for the most part game developers are more interested in using them rather than making them.
There are different reasons not use someone else’s game engine.
Licensing is usually based on a % of revenue, unreal lists 5% for games that make more than a million dollars.
The GTA games are one of the biggest franchises out there and GTA 5 has made around $8.5 billion. A 5% cut is $425 million dollars. Game engines are hard but there is a strong argument to make a game engine that you can reuse and potentially sell if its going to cost hundreds of millions to use some else’s.
Bethesda uses their own engine for the Fallout and Eldar Scroll games and CD Project for the Witcher and Cyberpunk games. These are big studios working on some of the biggest video game franchises and it makes sense for them to own their own engine.
Building your own engine also allows you to customise it to your game. 3rd party game engines are made general to be used for as many different games as possible. Sometimes it makes sense to make the game engine to meet your needs. I would guess that most flight simulators fall in this category.
Using a 3rd party engine also makes you dependent on a 3rd party. There was an uproar a year ago where Unity changed their licensing structure and threw a lot of game developers into disarray to the point where their games would be taken down because they could not continue under the new licence.
Essentially they’re just tools and frameworks for things that are commonly done/needed in games.
Most games that rely on movement of some kind will have collision detection code, for example. This is essentially “has the player character/vehicle/a projectile hit into some other object/character etc.”. This would be a good example of something a game engine might do for you. There’s no need for every game developer to write their own collision detection code if they use a game engine that handles that stuff for them.
Now expand that to animation, rendering, sound stuff, pre-built game elements like buttons, switches, doors, menus, and all kinds of other things.
It’s not software “to run it” (game engines are generally not emulators), but it’s software to compile it, and often includes tools “to make it”. Game engine takes care of bunch of systems, like the main ones:
* Rendering
This isn’t just fancy shaders and ray-casted shadows by which gamers know engines the most; at base level, image processing part of engine has to be able to import one or many image formats, 3D formats (if it’s 3D), build texture atlases, compress images, and so on. A bunch of stuff you wouldn’t want to write from zero if you’re about to make a game.
* Audio
Again, is it 2D/3D positional audio? Does it allow mixing? Can you add reverb effect to simulate tunnels, can you adjust pitch runtime to simulate car engine sound or lowpass to muffle sound like it’s coming behind a wall?, what formats does it import and play, so forth.
* Video
Resolutions, aspect ratios, and so forth.
* Control
Your gamepads and joysticks and touch and so forth. Lately, also VR.
* Network / multiplayer
This, alone, is a science so complex that even richest, biggest studios usually can’t figure out properly and have to cut corners at every step.
* Physics
What name says. Nobody wants to write a physics engine from scratch, and even importing existing ones to a your project and try to integrate those could be quite messy. A proper game engine has figured all this out already.
* Tools
Most modern engines come with complete toolkits, from procedural shader generation to map editor to vegetation/foliage system to audio mixer to behavior trees for AI to live scene recording for cutscenes to tilesets to dialog editors and so on.
* Ports
A modern engine can compile for multiple systems, from Windows to consoles to mobile devices, and really good one can automatize the parts that need to be adjusted for every port
* And much more.
So, a game engine is like a major toolkit. You do make assets somewhere else, usually, but engine is the glue that holds them all together.
But given how complex games are nowadays, those engines themselves have gotten so complex that even learning to use them is a big task, and often split between people in a studio, where nobody knows everything.
As for “building your own”, there’s couple of reasons. First, licensing and freedom – no major game developer wants to be at mercy of engine owners. Also, for their games, they often need features that engine doesn’t have. Not all engines allow change, not all engines fix bugs as fast as a game studio would want and it’s usually just messy. With their own engine, they’d have no such problems. And if they’re big studios, they have responsibility before players. If engine itself is buggy, they’ll have tens or hundreds of thousands of angry fans, and if they don’t own the engine, they can’t fix it right away.
Another problem is bloat.
Say, If you’re Ubisoft, and you’re only making your Assassin’s Creed/Far Cry/Ghost Recon annually, custom-made engine like Anvil does exactly what you want, doesn’t do more, and working in the full limits of the engine also helps to make sure you don’t mess anything up or introduce a weird new bug, that could come with an engine that’s meant for something else.
Unreal Engine, for example, is basically a 1998 first-person-shooter level editor that grew out of its original purpose, and while it can do basically everything *nowadays*, you’ll meet remnants of original shooter game on every step, which you usually don’t need, and if you’re doing something completely different – like a flying simulator for example, you’d still have to do it sort of via first-person-shooter way of doing things. That’s bloat.
Meanwhile, adding AC’s building-climbing-parkour-physics to some other, universal engine would be quite pointless and just make this engine even messier to use and harder to learn. Plus, kids would start churning out shitty Assassin’s Creed clones on daily basis, which could hurt Ubisoft and the IP.
Latest Answers