top of page

Bridge of Birds - Yes and Studios


  • Collaborated with art and programming to develop the project roadmap

  • Created and triaged tasks in Trello to hit major milestones

  • Ran standups and coordinated sprint planning meetings

  • Designed and implemented character dialogue, 3D Tilemap system, and general Game Progression

  • Curated, produced, and implemented all sound and music for the game


Project Duration: 5 weeks

Roles: Production, Sound Design, Programming

Final Slides:

The Bridge of Birds was the final game by Yes and Studios, a five-student team for my school’s Game Design, Prototyping, and Production course. Our task was to make a game based off of a fable or fantasy story. As all of our team members came from Chinese backgrounds, we decided to go with the romantic fable of the Cowherd and Weaver Girl. It was extremely fun incorporating parts of our Chinese culture into the game through music, art, and story alike!

Bridge of Birds is a top down isometric action RPG with roguelike elements, where you play as NiuLang, the Cowherd, and fight your way across the cosmos against the Goddess of Heaven and her minions to prove you're worthy to be with your one true love!

Bridge of Birds Trailer

As this was the final project for our class, it was also the longest. Scoping and tracking workload (especially around finals time) was especially challenging. Thus, it was crucial for the team to keep each other updated frequently, and for us to modify the project roadmap and backlog accordingly.

I established a work meeting structure involving 3 remote check-ins (15 minute standups), as well as one in-person work session and one remote work session per week. We used sprints with lengths of ~2 weeks, and held sprint planning biweekly on Mondays.

As a few of us had other major final projects to work on, it was crucial for us to maintain a balanced workload and schedule work as accurately as possible. At the same time, it was extremely important that on the production side our schedule remain as flexible as possible. With frequent check-ins, members were able to update each other frequently, and also let us know how much time they could commit each week. Our roadmap was constantly having to be modified, and we had to readapt quite often. It was a very fun challenge having to plan, replan, and prioritize work to ensure we would still hit milestone goals for a longer project compared to the other games we had developed through the semester.

As with all projects, I helped to develop a Game Design and Technical Documentation, and used Trello to track and prioritize work.

As we wanted to imitate the style of Hades, we used 3D assets with an isometric camera. I worked closely with my modeler to establish "phases" of modeling, and emphasized the importance of iterative development, focusing on getting rough placeholder models into the game to test combat feel and movement accordingly.

On the art-side, this project was the toughest to produce around. It felt like although we were scheduling out exact tasks and work, models weren't being "finished" and submitted on time. This was when I learned an extremely valuable Production lesson. As a creative myself (though in music), I am a perfectionist, and at the same time greatly value my creative freedom. As a producer, this made me scared of being too hands-on with my artist. One of the most valuable lessons I learned is that because artists tend to be perfectionists, it is extremely important to have consistent check ins and collaborative feedback, or else that artist may never feel that they are "finished" with their work. Although it took a while to figure this out, nearing the end of the project we were really starting to increase our work velocity. In the future, I will be sure to work more directly and push my artists to take owernship and accountability over their work deadlines, but still maintain that balance and provide them with the creative space they need.

Dialogue Manager

As our characters were real characters from Chinese folklore, we wanted to give more life to them in our game. The dialogue system was crucial to this. Each character has its respective portrait when they speak, and through gameplay, characters will even have quick conversations with each other. The dialogue system also acted as a great way to guide and teach the player mechanics without it seeming too much like a generic "I tell you the controls" tutorial.

To implement this flexbile dialogue system involving multiple characters and many potential dialogue triggers, I decided to use a Dialogue Manager paired with Object Oriented Programming (OOP).

The Dialogue Manager handles overarching functions to start, progress, and stop dialogue. The manager takes in "Dialogue" objects, and can then display each line of dialogue with the respective speaker in the dialogue box.

Main function responsible for playing dialogue

The StartDialogue function takes in a "Dialogue" object and then display the lines on the UI accordingly. Each "Dialogue" object contains information on the dialogue itself as well as the speakers and the respective order the dialogue lines play in.

Whenever dialogue needs to be played, the respective function in the DialogueManager can simply be called which will play all the dialogue from the "Dialogue" object.

DialogueManager StartDialogue(Dialogue)
Other script calling the DialogueManager function

To be honest, it is a little hacky, and I would have liked to explore using Scriptable Objects instead. The developer still has to worry about that extra step of lining up the Speakers with the Dialogue Lines, but it was a good enough to achieve our goal of adding life to the game and guidance to the player.

bottom of page