FRUITBALL
Fruitball was an entry for the Weekly Game Jam. It is single-player football game, where the player has to beat the AI enemy by kicking a watermelon into their goal.
Noticeable features implemented
Player mechanics (moving, shooting)
Ball systems (custom collision channels, adaptive shadow)
AI opponent with 3 states (Defend, Attack, Shoot)
Submission for Weekly Game Jam
What i did: Implemented the AI opponent behaviour, player character systems and ball functionality.
​
User feedback: Received positive feedback overall, the game offered a fun experience and it had replayabilty.
​
Team size: 2 members
​
Project length: 3 days
​
Year: 2019

Project goals
​
-
Manage to create a game in a 2 member team from start to finish
​
-
Improve my blueprint scripting skills
​
-
Take part in my first game jam and see how well I can work under pressure
EARLY STAGES
Design goals
​
-
Make a local co-op game for increased replayability
​
-
Getting players to achieve fiero by competing against each other
​
-
Create a fun experience using the unpredictable bouncing behaviour of the ball
The theme received for this game jam was "Fruit Frenzy". As we were able to work on this week-long project for only 3 days, we didn't want to spend more time than needed in the pre-production phase. We decided to make a simple pong-style game for 2 players, with the ball being a watermelon to match the theme and create some fun using the unpredictable bouncing behaviour due to its shape. As both me and my partner were beginners at using Unreal Engine, we decided that the most important thing was to create something simple, but fully playable.
PROCESS PROBLEMS
Obstacles
​
1. Second player character's movement dependent on frame rate due to physics
​
2. Some players might not have a second person to play the game with
Solutions
​
1. Cap the frame rate of the game at 60 fps so the second player moves at the same speed as the first
​
2. Create an AI NPC opponent so the game can be played solo
We managed to implement all the mechanics sooner than anticipated but we encountered a major problem. Due to our lack of experience, we didn't manage to implement a second playable character and had to "fake" it by using a physics object which was actually controlled by the first player controller with a different input, so a second person can play on the same keyboard. Because the physics was dependent on the frame rate and our frame rate was unstable, the second character's movement speed was sometimes slower or faster. We decided that a quick solution would be to limit the frame rate at 60 FPS. This fixed the movement speed issue.
The second problem was that not all players had someone to play with. As we still had a bit of time left and I had recently started to learn how to implement AI systems, I began creating the AI opponent. I spent the entire night before the submission deadline learning how to implement an AI system and managed to create an opponent with 3 different states. Defend state: if the ball is close to the player, the AI will stay in front of his goal and move, trying to defend. Attack state: calculate the ball's position in relation to the player's goal and position itself so it can move towards the ball and push it closer to the goal. Shooting state: if the AI is close to the player goal, it will try to shoot the ball only if the direction of the shot is towards the goal's general area, if not, it would adjust its position for a better shot.
OUTCOME
Project
-
Created a fully playable game, with all the mechanics working, a functioning menu, score system and sounds
​
-
Implemented an AI opponent with 3 different states (defend, attack and shoot)
User feedback
-
Playtesters had a lot of fun especially when playing in local co-op mode
​
-
The programming teachers offered very positive feedback on the complexity of the game for a 3 days project made by 2 people in the first year of university
​
-
It was featured in the university's monthly newspaper
​
-
Some negative feedback was received on the presence of some minor bugs and lack of polish on the AI opponent
This project helped me better understand the entire development process of a game and how important each aspect is for the player's experience as a whole. It also made me realise that even for a small-scale project, many problems can appear and a lot of time should be allocated on polishing and bug-fixing.