This project is easily the largest of all the current projects I’m working on. It’s a procedurally generated dungeon crawling game written in C#, with Unity3D. It’s just a 2 man team (myself: code and design, Tim: art) so there are a lot of “clever tricks” being applied to help aid the speed of the development of the project.
I’ll update the following list to point to any news points about the technology being developed for this game here:
The game does not have a “standard” combat mechanic as your character is ultimately very passive. Using your quick reactions and on-the-spot thinking you must utilise the environment against your foes.
Lure enemies toward you and lead them into mighty crushing block traps. Create a distraction and sneak by unnoticed, picking up that key you need to escape as you pass by.
The game utilises procedural generation algorithms extensively for infinite variety and re-playability.
Every play through is different to the last. A powerful dungeon creation algorithm is controlling the generation of each level you play, carefully crafting and placing rooms and passageways for a constantly evolving and challenging experience.
Many procedurally created dungeons have the same bland, repetitive look to them. Corridors with little in terms of items of interest, open rooms that are merely widened corridors, item placement that is illogical or too far too clinical.
With this project we’re striking the balance between procedural and crafted elements to give the player the best experience possible.
A complex tree of valid item placement locations and combinations is recursively selected from to ensure props placed in the environment logically and thematically belong together, for each tile piece.
Rooms are more than a collection of tile pieces, they are crafted environments with carefully selected variable elements within them. As such, rooms are placed as “whole” pieces so we can design them with specific experiences in mind. This is the balancing act of Designer led vs. Algorithm led procedural content creation.
Even the flooring is done with a procedural and optimised technique. To reduce draw calls and aid in producing greater variety, the floor is created from one Terrain object. Once the dungeon is generated the corridors and rooms are placed, during this phase small (40×40 pixels) textures are “splatted” onto the terrain to create the paths you see in the screenshots above. The splat textures’ RGBA channels are used to set the blending of textures on the terrain, thus allowing only a handful of textures to produce a wide variety of random, yet still designer-crafted, floors.