Prosperio


Home | Trailer | Description | Details


Prosperio is a cosy slow-paced city builder game, where player takes control over a little settlement

Inspiration & Idea

I had the idea of creating a cozy city builder with a slow pace, offering fewer challenges than major projects like SimCity or Cities: Skylines. The concept behind Prosperio is to give players the opportunity to manage various processes in a village.

Project details [Click to expand]

Placement & Grid system


The building mechanic is a core feature in any city builder game, and this holds true in Prosperio as well. To ensure a user-friendly experience, grid-based placement has been implemented, making building placement intuitive and easy to navigate. The grid is dynamic—placing a building will mark the corresponding grid cells with red color as occupied, while special objects like farms with wheat fields will be highlighted with different colors. The grid plays a key role in simplifying building management, offering players clear visual cues to guide their construction decisions.

Road System


Whether or not to place roads in Prosperio is entirely up to the player, as it's an optional feature. However, the road system significantly boosts logistics efficiency. When peasants use roads, their movement speed increases, which is especially helpful when a peasant, slowed, for example, by a cart full of logs, needs to transport them to the lumberjack. Establishing well-planned road connections between production sites can greatly enhance the overall efficiency of industry.

Management


The efficiency and survival of the entire village in Prosperio heavily depend on the management system. Certain tasks, such as building, can only be carried out by peasants who are not assigned to specific jobs. However, many essential roles, like lumberjack, farmer, woodcutter, and baker, require dedicated workers. Maintaining a balance between assigned and unassigned peasants is crucial for smooth village operations. Additionally, working peasants consume more food, which directly impacts the village's economy, making careful resource management even more important.

Production chains


Prosperio features production chains that require careful planning. For example, you can't make bread out of thin air - you must first grow wheat at a farm, then process it into flour, and finally bake it in a bakery. As a player, you must balance the number of buildings involved in each production chain to ensure smooth operation. If the production chain becomes unbalanced, it can lead to disruptions and resource loss, making efficient management essential to avoid bottlenecks or waste.

Research system & Perks


Some processes in Prosperio require fine-tuning and configuration. For instance, when baking bread, the player must set the amount of flour, the temperature, and the number of kneads. There are several ways to find the optimal settings: you can experiment by adjusting these parameters randomly until you achieve the perfect result, but this can be time-consuming. You could try searching online, but keep in mind that the settings are randomized and unique to each session. Alternatively, you can initiate research at the University. By investing resources into scientific research, you may unlock valuable discoveries - such as the precise, optimal configuration settings for your production processes, or perks, that may improve efficiency of production.

Brief description

Prosperio gives players the freedom to influence village life in various ways. The decisions you make as a player can lead the village toward prosperity or, alternatively, cause setbacks and challenges. Several systems in the game allow for impactful choices, enabling you to shape the village's growth and well-being based on your management style and strategic decisions.

Resource planning

In Prosperio, resources are not infinite. If you cut down all the surrounding forests, you'll lose access to essential materials like wood, which are needed for new buildings and firewood for heating. However, if you plan ahead, you can plant new forests or hire a forester to manage and sustain the existing trees. These circular processes are a cornerstone of the game—while acquiring resources is relatively easy, maintaining them is a challenging but rewarding aspect of long-term village management.

Human resource planning

In Prosperio, certain essential tasks, such as food delivery and building, can only be carried out by unassigned peasants. Without them, your village will face food shortages and halted construction. On the other hand, assigning peasants to specific jobs is crucial for village growth, but it comes with added challenges—assigned peasants need more rest and consume more food to remain productive. Without sufficient food, their efficiency drops. Balancing your human resources while considering your food supply is a critical aspect of gameplay, requiring careful management to ensure the village thrives.

Logistics

Roads in Prosperio are optional but play an important role in optimizing village efficiency. Peasants will always prefer using roads over walking on grass, as it offers a faster route to their destination. When peasants are carrying items - whether it's resources or production materials - they move more slowly. Roads help counteract this by increasing their movement speed, ensuring tasks are completed more quickly and boosting overall productivity.

Research

In Prosperio, the player has full control over which research processes to initiate. However, you can only have one active research project at a time. Each research has varying levels of difficulty and resource requirements, but the rewards differ as well - ranging from perfect configuration sets to valuable perks that enhance your production chain. Choosing the right research at the right moment can provide a significant boost to your village’s development, making gameplay smoother and more efficient.

Interface revamp

Based on feedback from several playtests, the interface underwent a major revamp. In its current form, the interface allows players to easily access all necessary information, including available resources, peasant details, and building-specific data. Additionally, certain interactive processes were reworked - such as completing wheat field planning, which now requires clicking a pop-up button instead of using a keyboard shortcut. These changes have made the interface more intuitive, informative, and user-friendly, greatly enhancing the player experience.

Building system

In the early versions of Prosperio, the building system was based on free placement, allowing players to place buildings wherever they wanted without specific connections. While this approach had its advantages, I eventually encountered issues with area checking and pathfinding. It became clear that a more structured system was needed, leading to the transition to a grid-based building system. This new approach makes it much easier to detect overlaps, as I no longer have to deal with physics, areas, or colliders; instead, I can simply check if a grid cell contains an object based on its coordinates. This change has greatly simplified development. For example, cells can now be categorized into different dictionaries, such as building cells, road cells, and farm cells, offering more opportunities and flexibility for future development. You can find more detailed post about this transition on my Tumblr

Movement system

I opted for the pathfinding capabilities provided by navigation agents and navigation servers in Godot 4. This system allows for straightforward designation of tiles as walkable or non-walkable. The real challenge cropped up when I started fine-tuning the path calculations. Unfortunately, I discovered that Godot pathfinding didn’t have built-in functionality to assign different weights to the tiles, which was crucial for my needs. To work around this, I developed a custom solution: I implemented raycasting to dynamically assess the area around the peasant every time they moved. Although this method seemed promising, it was riddled with bugs. I then switched to another strategy—using the A* algorithm. A* facilitates grid-based movement without actually needing to implement a physical grid. All I had to do was overlay the tilemap and specify which tiles were navigable and which weren’t—similar to what I tried with navigation agents, but this method was far simpler and required significantly less coding. Once I integrated A*, things started to fall into place beautifully. I could easily set obstacles and assign weights to different tiles, influencing movement costs. Now, my peasants automatically prefer roads over any other terrain.

You can find game design document created for Prosperio here - Link

• Play in browser at Itch.Io: Link
• Download an executable from Assembly 2024: Click to download

Evaluation & Outcomes

This game was originally planned as an entry for the Assembly Summer 2024 game development competition, and it successfully placed 5th, which I consider a great result. The game indeed has a cozy feel, thanks to its art style and music, and feedback has confirmed that it maintains a slow-paced experience. I believe I achieved my initial goals with this project, and throughout the development process, I discovered many opportunities for further improvements. I plan to continue developing the game in the future to explore these possibilities.

Additionally, I have some personal achievements I'm really proud of. I created the artwork for Prosperio despite having no prior experience, learning everything from scratch. I also learned a completely unfamiliar game engine within just a few months, reaching a good level of understanding and functionality. This game feels like an almost-complete project to me, with lively elements such as sound, animations, and a variety of interconnected systems.

Even though I feel good about the final result, I recognize that some technical and gameplay decisions weren't fully optimal. The game was too slow-paced for a competition like that, and the time-management system didn't quite address this issue. Additionally, the research system wasn't explained in enough detail during the tutorial, leading many playtesters to skip it. From a technical standpoint, I believe there's room for improvement, particularly in code refactoring and enhancing the savegame system.

Details

• Game engine: Godot
• Engine version: 4.2
• Coding language: GDScript
• Other tools: Aseprite (pixel art)

Return to top ↑