• Register
Post news RSS Imaginary Procedural Engine

An idea for a procedural game engine/ library that is currently in development. This article outlines the different aspects of the engine, and why something like it should exist.

Posted by on

What's the Big Idea?

Imagine a game engine where everything was systemically procedural. All of the character faces would be generated through a face generation system, all of the terrain would be procedurally generated at runtime, and all of the animations would also (you guessed it) be procedural. I thought of this for a while but then realized that an engine of this design would lead to incredibly unbalance gameplay, broken mechanics, and poor visuals. A great example of this would be Hello Games' No Man's Sky. At launch, the game was a buggy mess with repetitive gameplay and worlds that either looked like a carbon copy of the previous planet or had a very computer-generated look. The game has since then changed for the better, and it is starting to grow in popularity by a lot, but to do that, it has pivoted away from a lot of procedural content. As for the people that may be in the comments, I don't qualify Minecraft's engine as this type of engine because yes, the worlds are procedurally generated, but the animals, blocks, items, etc. are not. So although a fully procedural engine would be great in concept, the execution of it would be far from amazing.

On the other end of the spectrum, imagine a game engine that has rigid design concepts and all parts of it are human-made. You don't even have to imagine this, because it is most games today. A great example of this would be CS:GO, which is a great game, but it falls flat when it comes to expansive gameplay that is different every single time you play. There are some things that end up different each round, like the Terrorists rushing B instead of A, and there are always different maps. But, after your 40th game on Dust 2, you've seen how most rounds of Dust 2 are going to happen. It is a great game with amazing systems, excellent progression, and amazing gameplay, but I prefer games where your story feels different from everyone else's.

This is why there needs to be a balance of procedurally generated content, and artist assisted creation. When you load up a game of spore, all of the animals are created procedurally, but the items on them, and the rules in how they can be created, are all defined by the designers. On the other end of this, I heard that Pixar uses a system where all of their characters in crowds are generated with a system similar to the Sims creator- this speeds up production time tremendously. The animators no longer have to model every character individually, instead, they can say the height, age, eye color, and other parameters, and the character will be created. These systems are what I want to build into a game engine- not computer-aided design for humans, but human-aided design for computers.

What are the Benefits?

Resource Saving

The last time I opened Call of Duty, I immediately turned off the game because there was a multi-gigabyte update waiting for me. This update added a ton of new maps and features, but overall it was not loved by me because even though I have a 1TB Xbox, there are only about 6 games on it when it's at full capacity.

When you use procedurally generated content, the data about how the models, textures, etc. are generated can be stored on disk. This means that instead of having a 40KB model for each gun type in COD, which overall probably contributes to 40MB of space on the disk (not even accounting for textures and models), you can have models for the different attachments for the gun, and procedurally create the weapons at runtime by mix and matching parts.

This can also be applied to animations, which are great in modern games but don't need to be as detailed. If games just used Inverse Kinematics with a small amount of physics and Perlin offsets combined, there wouldn't need to be 200MB of animations in the game. These animations take up a ridiculous amount of data because the files store each position of the model at each timestamp.

New Experiences

Dwarf Fortress is such a beloved game because you can watch people play it, and when you decide to play it, your story will be completely different. This is because most of the game is procedural, even the stats of each dwarf's legs are procedural. The only downfall of this game is the visuals which hamper the onboarding of new players. If we were in an alternate reality where Dwarf Fortress had easy to understand graphics, but still carried the same mindset of procedural content, it would be one of the most famous games of all time (it already is incredibly well known but the game would be a household name like Minecraft).

Worlds can be easily generated with procedural generation which can lead to a longer lifetime for the game. If the original Elder Scrolls didn't have procedural content to build their expansive worlds, they may not have had the same appeal with their odd movement and bad fighting which was not loved by critics.

With procedural animation, there can also be many new experiences. In some ways, it can become more realistic than common forms of animation. In an FPS, you can make the animations more relaxed by lowering the speed and Perlin offsets when there is not a heavy amount of gunfire. But in a firefight, where the steaks are high, you would want the characters to seem more nervous and frantic. You can do this by increasing the speed of the procedural animations and adding more random offsets so the characters don't seem as coordinated.

Visuals for the Future

In Minecraft 1.8, there was the addition of ocean monuments. Notch did not think of these monuments when he first created the game, but Mojang was able to add them into all worlds. In a game like Mario, if the developers want to add a new pickup, they would need to go into every map, and physically add that pickup.

For the imaginary engine, since all of the data would be stored in raw form, new model code can be written for newer updates. If we suddenly want to add a third arm to all of the characters for a new update, this can be done with a change in the generation code, instead of each of the models. All of the animations for the character would already work with the third arm because all of the animations were already procedural.

Cheaper Development Teams

If you have a tool like Pixar's character maker, you don't have to hire 50 character modelers, 20 character texture artists, and 10 animators to build your game in two years. You can use the character maker with special random parameters to generate the number of characters you need, in an afternoon. These characters could then be changed at any point without having to bicker with the artists and animators. With a growing amount of cash being spent on games and their development every year, it would be much easier to use systems that reduce the cost and workforce, while increasing the speed and efficiency.

Why Am I Saying This?

I'm saying this because I think that there ought to be a game engine that can do these things. Currently, the options on the market for most developers are Unity, Unreal, and in-house (I know that Godot exists but it's not quite at the popularity of the other three). That's why I am going to be attempting to build an engine/framework with most of these principles included.

Make sure that you follow me on IndieDB so that you get reminded when a new update arrives. Also, make sure to give this a thumbs up, and tell your friends about it. Any help that I can get on this engine would be much appreciated, so you can message me through IndieDB. Also, if you just feel that it's a cool idea, drop me a comment or message too, it's great to know when people share your opinion and ideas.

Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.