
Data Driven Procedural Generation
Creation Date:
March 19, 2021
Project Description
This project focused on a tile-based strategy game where players navigate a procedurally generated world. Events play a crucial role in shaping the gameplay, offering decision-based encounters that influence the player's resources and progression.
I was primarily responsible for implementing the Event System, which dynamically assigns event cards based on tile properties. These events allow players to make choices with varying outcomes, affecting their resources and strategic options.

Event Card System
To integrate a dynamic event system, I designed and implemented scriptable objects for event cards. This approach allows for flexible data-driven event creation while keeping the game modular.
ā
Implemented EventCard.cs
as a scriptable object template
ā
Created event categories linked to tile types
ā
Designed decision-making mechanics with different outcome probabilities
š ļø This system allows designers to create events easily without modifying core game logic.
Event Manager & Game Loop Integration
Once the Event Cards were structured, I worked on the Event Manager, ensuring it properly retrieves and processes event cards based on the tile type the player lands on.
ā
Developed EventManager.cs
to handle event activation
ā
Connected event data to UI elements (title, description, artwork, choices, and results)
ā
Implemented event probability calculations for positive and negative outcomes
ā
Worked on debugging and refining the event logic through multiple pair programming sessions
š ļø This function activates an event when a player lands on a tile, pulling relevant data and displaying it dynamically. Although, looking through the code again, I would refine, comprimize and optimize it a lot.
Event Manager & Game Loop Integration
Once the Event Cards were structured, I worked on the Event Manager, ensuring it properly retrieves and processes event cards based on the tile type the player lands on.
ā
Developed EventManager.cs
to handle event activation
ā
Connected event data to UI elements (title, description, artwork, choices, and results)
ā
Implemented event probability calculations for positive and negative outcomes
ā
Worked on debugging and refining the event logic through multiple pair programming sessions
š ļø This function activates an event when a player lands on a tile, pulling relevant data and displaying it dynamically. Although, looking through the code again, I would refine, comprimize and optimize it a lot.
Tile-Based Event Assignment
Since the game features a variety of biomes (plains, forests, mountains, caves, water, etc.), event types needed to match the tile properties. I created a comprehensive document listing the tiles, their effects, IDs, and additional relevant data to guide the integration. I collaborated on integrating the tile ID system to ensure event cards were contextually relevant.
ā
Linked event card retrieval to tile properties
ā
Implemented probability-based event assignment per biome
ā
Ensured seamless interaction between Tile
, EventCard
, and EventManager
Tile-Based Event Assignment
Since the game features a variety of biomes (plains, forests, mountains, caves, water, etc.), event types needed to match the tile properties. I created a comprehensive document listing the tiles, their effects, IDs, and additional relevant data to guide the integration. I collaborated on integrating the tile ID system to ensure event cards were contextually relevant.
ā
Linked event card retrieval to tile properties
ā
Implemented probability-based event assignment per biome
ā
Ensured seamless interaction between Tile
, EventCard
, and EventManager
Debugging & Pair Programming
During development, I encountered integration challenges, particularly with merging my event system with the Resource Manager. These issues required multiple pair programming sessions to refine the connection between event-based resource allocation and tile mechanics.
ā
Resolved major Git merge conflicts related to storage.ide
ā
Reimplemented EventManager
for better compatibility with the resource system
ā
Debugged event logic to ensure correct outcome calculations
This collaborative debugging process was crucial in making the event system function correctly within the game's core loop.
Key Takeaways & Learning Experience
šÆ Data-Driven Design: Using scriptable objects provided a scalable way to manage hundreds of potential events.
šÆ Event Probability & Randomization: Balancing risk and reward through chance-based outcomes added depth to decision-making.
šÆ Collaboration & Debugging: Working through Git conflicts & code integration taught me valuable skills in version control and pair programming.
Conclusion
My work on the Event System provided the game's core decision-making mechanics, shaping how players interact with the world. By integrating event cards, resource management, and tile-based interactions, I contributed to creating an engaging, choice-driven experience.
Debugging & Pair Programming
During development, I encountered integration challenges, particularly with merging my event system with the Resource Manager. These issues required multiple pair programming sessions to refine the connection between event-based resource allocation and tile mechanics.
ā
Resolved major Git merge conflicts related to storage.ide
ā
Reimplemented EventManager
for better compatibility with the resource system
ā
Debugged event logic to ensure correct outcome calculations
This collaborative debugging process was crucial in making the event system function correctly within the game's core loop.
Key Takeaways & Learning Experience
šÆ Data-Driven Design: Using scriptable objects provided a scalable way to manage hundreds of potential events.
šÆ Event Probability & Randomization: Balancing risk and reward through chance-based outcomes added depth to decision-making.
šÆ Collaboration & Debugging: Working through Git conflicts & code integration taught me valuable skills in version control and pair programming.
Conclusion
My work on the Event System provided the game's core decision-making mechanics, shaping how players interact with the world. By integrating event cards, resource management, and tile-based interactions, I contributed to creating an engaging, choice-driven experience.