Overview
- Role
- Solo Developer
- Team
- Solo
- Context
- Master of Digital Media, Centre for Digital Media
- Duration
- March 2026 - April 2026
- Engine & Tools
- Unreal Engine 5.7, Blueprints, Enhanced Input
- Status
- Playable prototype
The Goal
Super Fruit Punch!! was built as part of a course on game engine technologies. I built the game in order to familiarize myself with the nuances of Unreal, having primarily developed in Unity in the past. The game features fruit characters ported from a Unity Asset Store pack in a Super Smash Bros. inspired combat system. It’s fruit punching each other, what more is there to say? ;-)
Gameplay
Two fruit fighters, Apple and Watermelon, battle on a side-view stage. Apple runs faster, Watermelon hits harder. Players can run, jump, double jump, and punch to wear down their opponent’s health, while a smart camera zooms to keep both fighters in frame.
The map was built using a pack from the Fab store. I customized the placement of these assets and designed the level such that the players could never “escape” on either side and so that the camera, even at its widest view, could not see outside the boundaries of the map. It also features stage hazards, such as the hot stove. When a player dies, they reset to their own spawn point.
Technical Breakdown
Characters
The fruit came from a Unity Asset Store pack with a custom rig, atlas textures, and around 700 vertices each. The imported materials used a Phong setup with very high shininess, which looked wrong under UE5’s lighting until I adjusted them.
Animation
The animations came from Mixamo, and each character has its own Animation Blueprint with Blend Space locomotion. Since the fruit used a custom rig, getting the Mixamo animations to play correctly took some troubleshooting between Mixamo’s auto-rigger and Unreal’s retargeting tools.
Movement
Characters move on a fixed 2D plane with air control. Jumps use Launch Character with a JumpCount integer that resets on landing, which gives a double jump. My first version broke because I used the Triggered input pin, which fires every frame, so one press ran the jump logic several times in a row. Each tick called Launch Character and incremented JumpCount, which burned through both jumps almost instantly. Switching to Started fixed it. Characters also snapped to a new position on play, because the plane constraint forces them onto a fixed axis value. As such, aligning their placed positions to that value fixed it.
Combat
The punch plays an Anim Montage and briefly enables a box collider for about 0.3 seconds. The collider is attached to a socket on the characters’ hands, so it follows the fist through the punch animation. Hitting the other player applies damage, knocks them back, shakes the camera, and produces “juice”. The juice is a Niagara particle effect using a custom texture.
Outcome
The game has two fully playable characters, each with different stats, and punching each other is satisfying in its feedback from the camera shake and knockback.
Building this short game taught me how to translate my Unity thinking into Unreal thinking. I used Unreal’s Blueprint system rather than C++ to get a sense of how designers use visual scripting. At first, I found the system obtrusive. What I could do quickly in code took much longer in Blueprints, mainly because I didn’t know the names of the exact nodes and classes I needed. However, as I worked with the system, I realized it was an interesting way to see the flow of game logic, rather than having to retrace a path through code.
If I were to continue this project, I would add unique abilities to each character beyond their stat differences, more moves, and a stock-based KO system with Smash-style percentage knockback.
