Genesis et Civitas
Overview
This game is the combined result of two different student projects working in parallel, each with
their own goals and focal points.
Many games have such distinct phases, that they can be considered multiple games in one. This
separation is also present in our god game: starting with creating an earth for your creations to
live on, before moving on to guide and influence the development of their civilisations.
Both phases originate from the same idea: play god and watch your own world form.
But with that idea at the core and 8 people on our hands, we decided to split this project into two,
each one working on one of the two core modes of our game.

The first phase, created by our sister-project Genesis, was the generation of a world map.
Their primary goal was to create a procedural generation where each processing step is
more and more dependent on the previous ones. For that, they simulated the individual steps of
earth’s creation, from the forming of tectonic plates and their movement, to the influence of ocean
currents on the climate and appearing of rivers, forests and animals, all while trying to use as
little randomness as possible and instead emulating real geological and meteorological processes
in an abstract matter.

At the end of the Genesis phase, a finished world map has been created, which is then is exported
with all its parameters: A heightmap, temperature-maps, ground types, flora and fauna.
Then, at the beginning of Civitas, this world gets imported and converted to be further be played on.
Our main goal was the simulation of multiple parallel civilisations, which need to compete or cooperate
with one another for the resources the land offers in order to survive and thrive. At the same time
however, we wanted to allow the player to influence the worlds development, guiding the civilisations
to keep them alive and happy.
Technical Aspects
Many challenges derived from our separate systems. Although it was advantageous to create player
interaction, connectivity with the map and NPC logic separately, we often struggled to bring
everything together. We surpassed these challenges by more regular meetings and more communication
about git branches and tasks.
Another issue encountered during our work was the intractability of the player. We struggled to
strike a balance between simulated civilisation systems and influence from the player. The solution
was not only more abilities that the player could use, but also the critical implementation of the
saviours as controllable NPCs.
Lastly, we struggled with the evaluation of tasks and the scope of the project. As one of our team
members had to unexpectedly leave the project, we had to re-evaluate and prioritise tasks. Splitting
the workload from five people to four was challenging but possible thanks to communication and collaboration.
In this project I had two major topic i was responsible for: the creation and implementation of the NPCs,
and the import and conversion of the Genesis map data:
- Genesis data
- importing world data and generating map geometry from it
- mapping genesis data to NPC needs (e.g. water->thirst, fertility->hunger)
- converting continuous map values to a discreet hexagonal grid
- modifying specific genesis values via player skills
- NPCs
- modeling, rigging of NPC models
- animation of several actions including: walking, tool usage, swimming, sailing, praying, talking, dancing, idling, etc.
- pathfinding and movement across a hexagonal grid with varying traversing costs
- civilisation behaviour: seeking resources, settling, splitting, merging, dying
- modeling of buildings + ruined building variants
Gallery
Tree-chopping animation |
Farming animation |
Mining animation |
Walking animation |
Saviour Preaching animation |
Dancing animations variants |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Promotional posters created for our booths at our uni's project fair:
![]() |
![]() |
![]() |
![]() |
||
![]() |
||
![]() |
||
![]() |













