Firewise Citizen

Solo Programmer

Play on Itch.io

About

Firewise Citizen is a 3D top-down traffic simulation and educational game that teaches players about wildfire evacuation. Players act as community leaders making critical decisions during a wildfire evacuation to avoid loss and ensure safety. Each choice directly impacts the evacuation’s final outcome, offering valuable lessons on emergency preparedness and response.

Project Overview

Role: Gameplay & UI Programmer

Team size: 5

Engine: Unity

I’m responsible for coding all the systems in this game and connecting them together. There are three core systems in this game: Fire simulation, Traffic simulation, and Branching Narrative.


Contributions

Traffic Simulation

Level Editor

To make level-editing easier, I set up a 3D grid-based grid-based map by projecting the 2D grid onto the XZ plane, allowing designers to quickly draw roads and buildings with brush tools like in 2D game using Tilemap tools. Each cell has its own type: Road, Structure, Empty and be stored in the grid for future uses on the road/structure placing.

Traffic Simulation Example Traffic Simulation Example

Road System

For a more accurate traffic simulation, First I have set up a road system that can dynamically adjust each road assets by checking its neighbour cells direction(left, top, right, down) and rotate/modify the assets to align with the neighbour.

Traffic Simulation Example

Car AI

Second, I have built a Car AI system that uses a network of Markers and an Adjacency Graph to navigate the roads. I used an adjacency graph because it efficiently stores bidirectional markers and allows quick retrieval for pathfinding. Each road includes Marker objects that define specific positions and connect to adjacent markers that act as waypoints. These markers are added to an AdjacencyGraph where each Marker becomes a node (Vertex) with connections (edges) to its neighbors. The graph enables the AI to build flexible routes, and an A* algorithm calculates the shortest route between two points by evaluating the cost of moving from one marker to the next. This allows cars to handle turns, intersections, and even detours in a realistic way.

Traffic Simulation Example Traffic Simulation Example

The red and green markers represent opposite directions, with red lines indicating valid paths between each marker and its neighboring markers

Fire Simulation

For fire simulation, in order to make the wildfire spreading effect, I used collision to check with structure & nature layer . When fire touches a Combustible object, it gradually decreasing in size using Lerp (linear interpolation), which makes the burning simulation feel natural, as if the combustibles burning out over time.

To make the fire movement even more realistic, I added a Wind Zone that affects the fire’s speed and direction. The wind move direction changes periodically, giving the fire a natural flow. The wind zone is designed to be easily adjusted as needed by changing its force, speed. range etc.

Fire Simulation Example Fire Simulation Example

Branching Narrative

For player making choices for the community (the core game play) , I used a HouseTypeInfo object to manage each house’s information, including the choices.( HouseChoice class) Each choice serves as a modification to the base properties of the structure, allowing for a flexible and modular approach to customization.

To efficiently manage multiple options, I used a dictionary to hold all the choices player selected in a list per house type. This approach allows the UI to retrieve option status with an O(1) lookup time, optimizing performance and enabling seamless UI updates. The design supports multi-option menus, allowing players to freely adjust or revert selections before confirming changes, which enhances user experience and control.

Interactive Choice Example Interactive Choice Example

Top