Ludum Dei was created during the Ludum Dare 38 Game Jam at the site hosted by myself through the Student Game Developers at UVA. I acted as a programmer, designer, and the sole composer on the project. Specifically, I developed the music and much of the interaction design. As a programmer, I developed many of the systems including the resource management system, music and sound effect controller, cutscene engine, and all UI.
Ludum Dei is a God-game. Players take on the role of an almighty creator; shape the land into valleys, mountains, and plains; fill those terrains with resources like stone, water, or coal; and guide the denizens of their world as they collect and manage these resources. In Ludum Dare, your people have free will, and so the projects that they wish to develop and the progress they wish to make are not up to the player-God. Instead, your people will tell you what they require and what undertakings they wish to accomplish, and it will be up to you to help them or leave them in ignorance.
Players progress with their people through a number of ages, each of which unlock new resources and techniques. Over time, the works of your people become more demanding, and though you give all you can, you may yet need to give more --give of thyself.
A Sphere with Terrain
Attempting to get Unity to play nicely with spherical terrain proved nearly impossible. In the engine, terrain is highly optimized, being stored as a bitmap of heights. Due to the use of this data structure, the base terrain can only be flat and horizontal. Therefore, we had to develop our own way of storing terrain so that the player-God can shape it to their will, raising and lowering and flattening it. Underneath the spherical planet hides a system that negotiates several hundred vertices and thousands of edges inside a mesh. When the player clicks on this object, a raycast is sent from the camera to determine which vertex was touched, and the selected tool's action is applied to the vertex, manipulating the sphere above. In this way, the player can create mountain peaks, deep quarries, and great lakes.
Once you bestow fire, humanity will emerge. Your civilization is made up of at first five, then tens, then hundreds of individuals --each will have their own personality but all share the desires of the community; they will tell you what they need and, if you provide it, they will travel to the resource to harvest it and bring it back to their hub. For this, we use the same set of vertices from the sphere terrain system. When we place a resource on a vertex, that vertex is marked as holding that resource and all adjacent 5 or 6 possible vertices are queried to determine their accessibility. If they are accessible, they are marked as reaping vertices where the AI can target in order to harvest that resource. Every time a resource is placed, an event is thrown and caught by the AI manager to determine if the community needs that placed resource and, if so, to path a denizen to collect it.
Resource Management interaction
As humanity emerges and pathfinding begins, community and tier controllers are instantiated. These scripts keep track the level of and all the resources the God-player's community requires in order to move to the next level. Whenever a resource is placed, a call is made to the tier controller to determine if the community might need this resource to proceed and, if the answer is yes, a subsequent call is made to the community controller to determine if the community already has enough. If they do not have enough, then the community controller returns to the AI controller a free denizen who should be pathed to the that resource. If a denizen is sent, then one more check is made to see if this resource is the last required to complete the level, and if so, a book object appears above the community's campfire, which the player can press to progress to the next age. There are 9 resources in all, and we unlock more of them with each level.
The denizens of your world know what resources they require to proceed to the next tier; each of them, on a random timer will bark (display text) indicating which resources they want. If you listen to them, you will learn what you need to place in the world in order to move forward
HOW TO PLAY:
Place resources to satisfy the needs of your civilization.
Resources may only be placed in the proper biome (for example, trees go in grasslands)
Biomes form my molding terrain and placing resources (for example, lower the land to create a valley; place water into a valley to create grasslands)
Listen to your people; they know what they need.
RightMouse to move Camera
Scroll to zoom in and out
RightMouse to Raise/Lower Terrain, Place Resources, and Select UI
X in top corner to close