top of page

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.

bottom of page