This summer (2026), I interned at E-Line Media, a Phoenix-based video game studio with a long history of creating games that emphasize social impact. I was specifically a part of the Neighborhoods, a game in which, instead of just building a soaring skyline of skyscrapers, you listen to your neighbors' daily struggles and complaints and focus on improving the community. This highly anticipated title has generated millions of impressions, reached over 60,000 wishlists on Steam, and received a positive reception at its announcement, garnering over 300,000 views on the Mix Summer Showcase. I am forever proud and grateful to be part of the journey, contributing as a gameplay programmer.

This summer (2026), I interned at E-Line Media, a Phoenix-based video game studio with a long history of creating games that emphasize social impact. I was specifically a part of the Neighborhoods, a game in which, instead of just building a soaring skyline of skyscrapers, you listen to your neighbors' daily struggles and complaints and focus on improving the community. This highly anticipated title has generated millions of impressions, reached over 60,000 wishlists on Steam, and received a positive reception at its announcement, garnering over 300,000 views on the Mix Summer Showcase. I am forever proud and grateful to be part of the journey, contributing as a gameplay programmer.

About the Project

One of the unique aspect of the game is a natural progress of the narrative that reacts to the player action that is placing new decorations, fixing the streets, or demolishing their homes. 

Now I was tasked with upgrading a dialogue system to build contexts of the world, create chatters (a conversation with more than two npcs), and polishing the trigger.  

One of the unique aspect of the game is a natural progress of the narrative that reacts to the player action that is placing new decorations, fixing the streets, or demolishing their homes. 

Now I was tasked with upgrading a dialogue system to build contexts of the world, create chatters (a conversation with more than two npcs), and polishing the trigger.  

Chatter Sytem

Chatter Sytem

As an gameplay programming intern who just joined the project, I started by breaking down this project into smaller tasks. First, I started by creating Blueprint events using Latent action. I refactored and expanded the DialogueManager which helped me familiarize myself with the overall system. These exposed blueprint nodes were especially helpful for the designers so that an quests or tutorial system can wait for a completion of dialogue. Then, I focused on contexts gathering and chatter triggering part of the feature. I created debug commands that can be called directly in the editor, so it's easier to iterate. Then I worked on the algorithm that randomly select a chatter by weights, gather appropriate NPCs, and propagate the chatter pending state to appropriate actor so that an chatter pop up shows up correctly. While working on this system, I learned to expand on an existing complex system and write code that ensures future readability.

As an gameplay programming intern who just joined the project, I started by breaking down this project into smaller tasks. First, I started by creating Blueprint events using Latent action. I refactored and expanded the DialogueManager which helped me familiarize myself with the overall system. These exposed blueprint nodes were especially helpful for the designers so that an quests or tutorial system can wait for a completion of dialogue. Then, I focused on contexts gathering and chatter triggering part of the feature. I created debug commands that can be called directly in the editor, so it's easier to iterate. Then I worked on the algorithm that randomly select a chatter by weights, gather appropriate NPCs, and propagate the chatter pending state to appropriate actor so that an chatter pop up shows up correctly. While working on this system, I learned to expand on an existing complex system and write code that ensures future readability.

Footfall Range Calculation & Display

Footfall Range Calculation & Display

Each building with business in Neighborhoods has footfall range which indicates how far the business reaches. Originally, this footfall range was a simple UE default debug circle, and I was tasked to improving the footfall range to be grid base and more visually appealing.In this task, I explored deep into how the grid system works in this game. 
1. From reading GridManager, GridActor, and many interconnected systems, I first started adding debug squares for each affected time. I then created A* inspired algorithm to search for tiles that are connected and not disconnected by roads. The algorithm compensates intersections so a building reaches further in absolute distance via intersections.
2. Now it was time to add mesh to each tile visualization. The tile already had procedurally generated mesh component and I quickly connected it with a grid material created by the designers.

3. While working on the material implementation, I soon noticed that the generated mesh is missing UV mappings. This step involved me creating a new material in unreal engine that only showed materials on the mesh so I could make accurate measurement whether my fixes for the procedurally generated mesh is accurate. 

4. I finally fixed the UV mappings and made it so that each tile understands the boundaries and accurately display its borders.

Each building with business in Neighborhoods has footfall range which indicates how far the business reaches. Originally, this footfall range was a simple UE default debug circle, and I was tasked to improving the footfall range to be grid base and more visually appealing.In this task, I explored deep into how the grid system works in this game. 
1. From reading GridManager, GridActor, and many interconnected systems, I first started adding debug squares for each affected time. I then created A* inspired algorithm to search for tiles that are connected and not disconnected by roads. The algorithm compensates intersections so a building reaches further in absolute distance via intersections.
2. Now it was time to add mesh to each tile visualization. The tile already had procedurally generated mesh component and I quickly connected it with a grid material created by the designers.

3. While working on the material implementation, I soon noticed that the generated mesh is missing UV mappings. This step involved me creating a new material in unreal engine that only showed materials on the mesh so I could make accurate measurement whether my fixes for the procedurally generated mesh is accurate. 

4. I finally fixed the UV mappings and made it so that each tile understands the boundaries and accurately display its borders.

UI Engineering

UI Engineering

I also closely worked closely with UI designers to implement two distinct UI for the game.

In implementing Decor Palette, I expanded on Common UI inherited classes to create custom grid button arrays. This class was designed so that it builds from column to rows ,which was a specifically requested design spec. I also implementing combo filter systems, creating new structs to handle data management efficiently. 

For the building info panel, I learned to use animation Unreal's UMG. This was genuinely one of the most fun and rewarding task. Animating each tabs to the vision of the UI designer was truly fullfilling.

I also closely worked closely with UI designers to implement two distinct UI for the game.

In implementing Decor Palette, I expanded on Common UI inherited classes to create custom grid button arrays. This class was designed so that it builds from column to rows ,which was a specifically requested design spec. I also implementing combo filter systems, creating new structs to handle data management efficiently. 

For the building info panel, I learned to use animation Unreal's UMG. This was genuinely one of the most fun and rewarding task. Animating each tabs to the vision of the UI designer was truly fullfilling.

Tutorial

Tutorial

I also worked on the tutorial system of the game, which was crucial to many demo released during my time at Neighborhoods. I carefully expanded on common UI inherited classes to support both world-space and screen-space placement of the arrow. Furthermore, I carefully documented customization steps for the designers. Appropriate blueprints functions were also exposed, equipping designers with all the tools available.

I also worked on the tutorial system of the game, which was crucial to many demo released during my time at Neighborhoods. I carefully expanded on common UI inherited classes to support both world-space and screen-space placement of the arrow. Furthermore, I carefully documented customization steps for the designers. Appropriate blueprints functions were also exposed, equipping designers with all the tools available.

Options Menu

Options Menu

I developed options menu from scratch first designing the user-flow then implementing the wiring of each content.  I worked with Common UI and Unreal's Project settings, and I've gained deep understanding of how both graphical and custom settings are saved and applied in professional games.

I developed options menu from scratch first designing the user-flow then implementing the wiring of each content.  I worked with Common UI and Unreal's Project settings, and I've gained deep understanding of how both graphical and custom settings are saved and applied in professional games.

Graffiti System

Graffiti System

A fun side quest. I added graffitis that surrounds the abandon buildings over time. I created custom data table and documentations to allow designers to easily customize the graffiti such as its image, size, and rotation.

A fun side quest. I added graffitis that surrounds the abandon buildings over time. I created custom data table and documentations to allow designers to easily customize the graffiti such as its image, size, and rotation.