About
Coop first-person shooter with destructible environment where players must survive together against waves of zombies.
Context
Type: Semester Project
Role: Gameplay Programmer (& Concept Artist)
Size: 5 Developers
Time: 3 Months (Oct 2023 - Jan 2024)
Engine: Unreal Engine (Blueprints only)


Introduction
When our student team started a new project, most of us didn't have much experience in game development in Unreal and blueprint scripting. Fortunately, one of our teammates was a master's student programmer, who was ready to answer all our questions and explain how blueprint scripting and FPS template work.
We used a first-person shooter template fully written on Unreal blueprints to speed up the development process. This time, we decided to stick with blueprints only to avoid breaking any inside logic.
Sledgehammer
In this project, I was responsible for weapons logic. I began with the sledgehammer, which players mainly use to destroy the environment. I combined chaos distraction logic developed by a master student programmer with the knife logic from the template, expanded the target area, and added a knockback effect, utilizing the launch to send zombies flying.
TNT & Trigger
According to the game outline, two players need to collaborate to succeed. When one player shoots TNT, another presses a trigger to make it explode. I combined a custom weapon template with templates of grenade logic. I considerably reduced the shooting distance and projectile velocity to simulate a throwing motion. For the dynamite explosion, I combined blueprints from two grenade types within the template and added a counter with an array to track and remember launched TNT. When the second player activates the trigger, a signal is transmitted to the first player's launcher, detonating all launched TNT.
Cactus Guns
Next, I created two cactus guns. They share a similar mechanic with the previous one, but instead of a trigger, there were rapid-fire needle machine gun. And lots of cactus bombs sticking to enemies like small TNTs. When the bomb lost health from the cactus machine gun, it triggered. Then, I added a feature to stick bombs to enemies and arrange chain explosions. When one bomb explodes, it affects other bombs in a radius and explodes them too. To make it look better, I also played with zombie and bomb colliders to make them fit.
Multiplayer
We wanted to make a game with a Steam server multiplayer, but further, we understood that it was too ambitious. Implementing it created a new challenge: server-client data transfer. Fortunately, our master's student had prior experience and guided me through the process, highlighting potential problems. Weapon malfunctions sometimes were just data transfer issues rather than logic mistakes. After debugging with his assistance, we successfully resolved these challenges, but it took most of our remaining project time.
In addition
After fixing the bugs, I developed additional features: more variables changed functions to make it easier to balance weapons and different effects for explosions. Tweaked the explosive barrels to blow up the environment same as hammer does. Added spike traps with a custom kiss zone that gave points for zombies pushed in it.
As a final addition, I explored a resurrection mechanic. However, the existing game template wasn't designed for this, and the complex death process using three different blueprint classes created significant challenges. While I resolved several resulting bugs, we were out of time, so I abandoned this feature.
Conclusion
My first experience with modifying an FPS template and working extensively with Blueprints was challenging but ultimately beneficial. Developing weapons provided valuable hands-on experience with Blueprints, and creating the game trailer introduced me to Sequencer. I also got much more comfortable with multiplayer and Unreal Engine in general. The project was rather ambitious, leading to unresolved issues by the deadline. We did manage a nice showcase for the university, but getting it ready for release would take a lot more work. Even so, I really enjoyed working on it.
My takeaways
- I learned a lot about team communication and the importance of clear goals.
- I got experience coding together with an experienced programmer in Unreal.
- Got lots of knowledge about Unreal blueprints, sequencer, and multiplayer.