Fuzzy Farmer - Top Down Style Game created in Unreal Engine 4
Fuzzy Farmer is the first game I ever created in Unreal while at school for Game Programming at SNHU. It was a lot of fun to update it from the bare bones game it was originally, to the current format you'll see here. 
The goal of the game-play of Fuzzy Farmer is to collect 20 fuzzies for the 90 second timer runs out. It's quite simple. If you collect 20 fuzzies in time, you win. If you don't, you lose.
One of the first and most desperately needed updates that I made to Fuzzy Farmer was to improve the level. The original had very little detail and only invisible walls to keep the player from walking off of the edge. I replaced this level with a much more detailed landscape with mountains in the distance.
View of the mountains in the distance 
View of the mountains in the distance 
View of the mountains in the distance 
View of the mountains 
I also added a few different neighborhoods in various places on the map.
Neighborhood
Cute neighborhood in Fuzzy Farmer 
When viewing from above, you can see the level is now filled with foliage, trees to block the player from leaving the play area, and various pathways. 
View of the level from above
I also replaced the standard Unreal mannequin player character with a character that matched the happy, bright theme of the game from Mixamo. 
Fuzzy Farmer Boy
To do this, I made sure I had the correct walking, running, and jumping animations. I used those to create a new animation blueprint for the character, then I replaced the skeletal mesh in the TopDownCharacter blueprint with this new character, who we'll call Fuzzy Farmer Boy. 
Fuzzy Farmer Boy's animation blueprint 
As you can see in this animation blueprint, I created a state machine for all of Fuzzy Farmer Boy's movements. This state machine utilized a blendspace and various jumping animations to create a jump loop state. 
Fuzzy Farmer Boy's movement blendspace
Contents of the state machine that allows Fuzzy Farmer Boy to walk, run, and jump. 
In order to make the jumping occur properly, I had to make multiple duplicates of Fuzzy Farmer Boy's jumping animation and alter it to include only pieces of the animation. In the JumpStart section of the state machine, only the very beginning of the jump animation plays. In JumpLoop, only the middle part of the animation plays. JumpEnd only plays the landing portion of the animation. When the state machine detects that the player is no longer in the air, he is able to return to the Idle/Run state. 
If the IsInAir boolean value is false, the JumpStart state can be entered.
JumpStart state contents 
I replaced the existing pickup items, which in my first version were just simple triangles, with cute, fuzzy Koala bears. 
Cute Koala Fuzzy 
Within the fuzzyPickup blueprint, you can see that having our character overlap with the fuzzy plays a sound, runs the AddFuzzy function, and destroys the actor, making it disappear. AddFuzzy just adds the picked up fuzzy to the player's total fuzzy score displayed in the right hand corner of the game. 
Fuzzy Pickups blueprint
Within Unreal's editor, you can see various target points placed all over the map. These target points have a chance of spawning a Fuzzy for the character to pick up so that Fuzzies are always in random places all over the map and not necessarily always in the same place. So sometimes reaching the goal of 15 fuzzies is easy and other times it's quite difficult. A blueprint called BP_ItemSpawner was created to control this behavior.
Fuzzy Pickup target points
BP_ItemSpawner Event Graph
AttemptToSpawn function in BP_ItemSpawner
SpawnItem function in BP_ItemSpawner 
The code that tracks the number of fuzzies collected and win/lose conditions are within the main character blueprint. 
The 90-second timer is built into the TopDownGameMode blueprint and the "you lose" screen pops up from here if the timer runs out before the player collects 20 fuzzies. 
A simple UI widget displays the timer, fuzzy score, and some directions for accessing the pause menu.
I also added a simple minimap to help the player gain a better view of the fuzzies off in the distance. This was done by adding a spring arm and 2D scene capture component to the main character blueprint. I then created a render target for the minimap, which converted the view from the scene capture component into a material. I then placed this material within an image in a UI widget to display the minimap on the screen during game-play. 
Spring arm and 2D scene capture component added to the character blueprint
Minimap render target and material 
Minimap UI Widget
The minimap helps the player to see fuzzies that would not normally be in their field of view. This is great for when you're almost out of time and can't seem to find any fuzzies no matter which direction you turn! 
Play start with minimap and UI
I created a variety of other UI widgets and functionalities. The game can now be paused and restarted and there are win/lose screens as well as main menu with music different from the music in-game. 
Main Menu
"You Win" screen
"You Lose" screen
Pause Menu
Finally, I also created the music that's playing in the level during game-play using FL Studio. Let's see some game-play!  
Video of myself playing a round of Fuzzy Farmer

You may also like

Back to Top