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.
Role: Lead 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.
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.
 
                 
            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.
 
            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.
            
 
                 
                The red and green markers represent opposite directions, with red lines indicating valid paths between each marker and its neighboring markers
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.
 
                 
            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.
 
                 
            Top