Bears Game Procedural Level System
Bears is a tactics-style strategy game focusing on a fast pace and chaotic, unpredictable gameplay. Level design in the game generally focuses on physics-like objects in the world, but the multiplayer demands a procedural approach.
● Create a flat, predictable landscape which can be filled with many bears on many teams with minimal disruptive obstacles, but enough to offer variety.
● Make it feel like a forest, lots of trees but ample room to walk between them.
● Allow the system to work around pre-placed objects, so if a character or obstacle is placed by hand in the Unity editor, the generator will work around them.
● Create a system flexible enough to be used across multiple biomes.
Filling In The Gaps
One of the design goals of this procgen system was to make maps that could be partially procedural. If the design of the level demanded assets in particular locations, such as enemies with particular spawns, or an object which you must interact with, the procedural system could work around those requirements. In this image, the black squares are procedurally replaced while the non-black squares are unchanged. The system also recognizes when an obstacle, like a bear, is placed onto a tile and will not try to place a tree or a bush in those locations.
Tiles in the procedural system also respond to other nearby tiles. Trees are less likely to spawn next to other trees, which keeps the forest floor walkable. Each tile has a set of values that determine the likelihood they will spawn next to other tile types, or even to occupied tiles.
Similarly, procedurally-placed enemies will spawn with specific distances to other bears on their own team, or to bears on other teams. This also applies to procedurally-placed interactable objects, such as the various buttons and other victory conditions which might want to be placed randomly, but done so with awareness of not being too close to any particular bear.
The tile system is robust through multiple
biomes as a result of tiles spawning from a list
of possible tile types.
On the image to the right, you can see the
variables which define each particular tile in the
forest tile set. This same list can be easily
duplicated to set up a new biome made of
entirely different tiles with entirely different
properties. Each list is then pointed to as the
target list for this current level, making swapping
Placement of an object in the index can be
maintained manually, if swapping becomes
frequently desires, as each tile is referenced
by their index for standard use. In other words, if I
put the Forest Tree as the 5th item on the list,
then I can also define the Desert Tree as the
5th item and then if I copy a map between
biomes, the type of object present in that biome
will remain consistent.
The obvious weakness of this system is that everything must be placed in the list somewhat manually, since indexes are easy things to change, particularly on longer lists. Fortunately, this list of items remains relatively short, as it only ever includes environment objects like plants. If, for example, we want to put down a fence and a path and a house, those objects would be placed manually. There would never be, in this game, a desire to randomly place those types of objects.