Description
For our block D project of Year 1 at BUas, we created a fast-paced twin-stick action game called Resonance. The game concept was based on a reference game Ape Out, but the mechanics were completely redesigned.
We worked in a team of 11 people: 4 designers, 4 artists and 3 programmers. My main responsibilities were implementing the core gameplay mechanics and researching and implementing an automated build pipeline.
Resonance won the Best Y1 Design at BUas awards and was nominated for Best Student Game at the Dutch Game Awards 2025. This was a great achievement, since we were the first year 1 project that achieved such recognition.
Gameplay
I have been in charge of implementing some of the core gameplay mechanics. It was a close cooperation with the 3C designer and a fellow programmer.
Aim Assist
I have implemented an aim assist for the telekinesis mechanic. The system was completely configurable, allowing designers to tweak the parameters to achieve the desired feel. The feature was implemented based on a feature spec created by one of our designers, Kacper.
I used mostly blueprints, but I did do some C++ work, especially when it came to sorting enemies in the radius and picking the best target.
Centered Attack
One of the bigger features that I was in charge of implementing was the centered attack. This was a mechanic that allowed players to perform a powerful attack by floating all carried objects in a line in front of them and then releasing them.
It was again implemented based on a feature spec created by one of our designers, Kacper. The implementation was done in a way so that it was easy to tweak the parameters and adjust the feel of the mechanic. One of the difficult aspects of this mechanic was implementing it into an existing system of the telekinesis.
Unfortunately, a decision to cut the mechanic was made late in the development process, so it was not present in the final build. It still taught me a valuable lesson about the importance of communication and making sure that everyone is on the same page when it comes to the scope of the project. It also showed me the importance of being flexible and adaptable, as sometimes things don't go as planned and you have to be able to adjust accordingly.
Build Pipeline
Aside from the project work, I also had a research project where I researched and implemented an automated build pipeline for our project. This involved researching different state of the art technologies and tools for automating the build process.
I researched both TeamCity and Jenkins, but ultimately decided to implement a custom solution in Luau. This was because I wanted to have more control over the build process and be able to customize it to our specific needs. I was also very interested in learning all the concepts behind build pipelines and CI/CD in general.
Fetch stage
The fetch stage interacted with our Perforce server to fetch the lastest version of the project. I always did a force sync to make sure that a clean version of the project was fetched. I also implemented some error handling to make sure that if there were any issues with fetching the project, the build would fail gracefully.
Build stage
I used Unreal's command line interface to build the project. The build stage receives the path from the fetch stage and invokes Unreal Automation Tool (UAT) with the appropriate build configuration. This handles compiling all C++ code, cooking assets, and packaging the final executable. The stage returns a result object containing the output path and metadata needed by the distribute stage.
Distribute stage
I used itch.io's butler CLI tool to upload builds directly to our itch.io page. Butler handles incremental uploads, only pushing the differences between versions, which significantly reduces upload times for large Unreal builds.
For a build archive, I also configured optional uploads to Cloudflare R2 storage using rclone. The build gets compressed into a zip archive, then rclone copies it to the R2 bucket organized by version. This provides a secondary distribution point and archive of all builds.
I set up a custom website using the r2explorer, which allowed the team to easily browse and download previous builds from the R2 bucket. This was especially useful for testing and sharing builds internally without needing to go through itch.io.
This is some of the feedback I received from our producer, Vincent:
I just used the past builds to document my UI prototypes, you really helped me out there. For school stuff the builds were indrecibly useful, but also for future portfolios, as we can document progress easily.
Vincent Treder (producer)
Team dynamics
This was also the very first team project at BUas, so it was a great learning experience in terms of team dynamics and project management. I learned a lot regarding professional grade processes, such as Scrum. We had daily standups, sprint planning and retrospectives. I have not had much experience with Scrum before, so I definitely took away a lot of new knowledge from this project.
Conclusion
Overall, I enjoyed working on Resonance. We had a great team and we were able to create a fun and polished game in a short amount of time. I learned a lot about teamwork, project management, and UE5. I am proud of what we accomplished with Resonance and I am excited to apply what I learned in future projects.
Thanks to the Dutch Game Awards nomination, we were given a green light to continue development on the game and release it on Steam. This is currently still in progress.
Play Resonance on itch.io.