For this weekly assignment module our focus was to design a prototype for a small simple game using the Unreal Engine 4. There were certain requirements like make sure the game fits into a certain genre, use a certain game template (like first person, third person, top down and so on), make a concept document, blocking the level using basic shapes and BSP, make the game functional using objectives (pick up x number of items, solve puzzles, beat the timer etc.) This assignment should introduce us to the process of documenting gameplay and mechanics before implementing it into visual scripting. Another part of this module was to create a HUD based on the gameplay type, win/lose screen with option to restart, make a fly through and in the end present the assignment to the class.
Academic Week 4:
Getting introduced to the project in classroom – 4 hours
Start by setting up the blog and time schedule – 30 minutes
Do some of the daily tasks and watch course videos – 1 hour
Start planning/research – 1 hour and 30 minutes
Start blocking out the level – 4 hours
Work on blueprint for pickup items and hud – 2 hours
Make a timer blueprint/hud – 2 hours
Academic Week 5:
Classroom lecture – 4 hours
Setup win, lose(restart), results and main menus – 3 hours
Finalize stuff, make a flythrough and work on presentation – 4 hours
Finalize finished product – 1 hour and 30 minutes
Document describing gameplay, mechanics, user interface, and level layout – 1 hour and 30 minutes
Gather final files and write report – 1 hours
Engine: Unreal Engine 4 (UE4)
Programming language: Blueprint
UE4 Template: Blueprint Third Person
Controller: Mouse and keyboard or Gamepad
Platform: PC/Mac/Linux, Xbox One, PS4
Genre: Third person jumping puzzle platformer
Goal of the game: Collect 20 golden rings before timer runs out (4min), don’t touch the floor
Art style: Simplistic, no textures
Development level: Functional prototype
HUD Elements: Golden rings (20/20), level timer (03:54), double jump cooldown (3 seconds)
Early top down concept
Menu system flow:
Menu system blueprint:
This is how a basic button is set up (Start Game):
Casting to ThirdPersonCharacter with the object “Player Character” and feeding double jump timer and total golden rings count to HUD. Getting Level timer minutes and seconds from casting to GameMode displaying via binding in Widget HUD Blueprint.
Game Over Blueprint:
Floor casting to player character, when collision happens it triggers a short delay, pauses the game, loads game over HUD, adds it to viewport, enables mouse and menu inpu
Pick up golden rings Blueprint:
BeginOverlap collision with golden ring and player character triggers AddCoin function and plays a sound at character location.
Checks if there are 20 golden rings collected and displays Victory HUD
AddCoin function on ThirdPersonCharacter that adds 1 coin count to TotalCoins variable activated by collision.
Double jump and cooldown:
Allows character to double jump, by applying force a second time in the air, resets on landing.
Sets the TimeUntilDoubleJump variable that is displayed on HUD then allows jump again:
I started this weekly assignment by deciding which gameplay alternative I wanted to work from. I decided to go with “Player picks up 20 of 20 golden coins to win and as an extra challenge I added a 4 minutes timer that you have to pass in order to beat the game.
Just like I did with the Real-Time Environment Module 1, I also made a top-down concept in Adobe Illustrator to get a basic idea and sense of scale and feel of the level.
When I felt comfortable about the fundaments I then started blocking out my level in UE4 using basic shapes like cylinders, I decided to not use any textures since this was not needed. I used the Third Person Game Template for this project. However, I used a golden material for my golden coins in order to make them stand out, I also added a light underneath them. I used a white color for the obstacles and a gray color to the ground to indicate where you can go. If player touches the ground it means game over. When picking up the rings I added a simple “coin pickup” sound using Blueprints. I used Blueprint to add basic rotation to some of the obstacles in the level for extra difficulty, this was also added to the golden rings.
In order to make my level flexible I added multiple paths to complete it. For instance you could go to the top of the “hill” at the end and then go back to the start and get the coins there before winning the game. When designing the level I kept focus on rewarding harder jumps with golden rings in-between to keep the player motivated and give him a sense of achievement. The player can also see the “end” of the level all the way from the start, which was inspired by the game Journey by Thatgamecompany and gives the player a goal to reach and a sense of scale.
After feedback from the teacher I added a double jump with a 3 seconds cooldown, I later on revolved my level around this so sometimes the player has to stop and wait for the double jump to be ready since some jumps are too high for single jump. A lot of the game design went into fine-tuning the difficulty of the level.
When the level was set in stone I dived into Blueprints, the visual scripting language of Unreal Engine 4. I had basic knowledge with programming so this went pretty smooth for me, I did use tutorials online in order to solve some of the problems I faced though. The first thing I did in Blueprint was to just remove the golden rings, add a sound and print a string for debugging. Then I made a HUD using the Widget Blueprint and found some artwork online from the indie game Awesomenauts for my double jump countdown and 4-minute level timer that I added to my HUD. I made some horizontal boxes that I added text into for the
20/20 golden rings, 3 second double jump countdown and the level timer. I added a binding for these textboxes that linked it to the “TotalCoins”, “TimeLef” and “TimeUntilDoubleJump” variables stored in the player character.
In the end I added a simple Game Over, Victory and Main Menu, using Widget Blueprint under User Interface in UE4 that I made functional Using Blueprints. Then I packed my game into an executable for delivery.
Summary and self-evaluation:
In this module assignment I got to use my experience with programming and convert it into visual scripting. I went for the extra challenge points on this assignment to become more familiar with Unreal Engine 4. I combined two of the gameplay alternatives, added a sound effect when picking up the golden rings, and a simple Main Menu. I am looking forward to adding more advanced Blueprints and even AI to a level design. It will be fun to continue using UE4 in further projects. If I were to go back and change something about my level it would have to be the difficulty and jumps, I’m not 100% happy about the difficulty, it feels a bit too hard at the moment. I could have added a pause menu and an exit game button, but decided not to.
Unreal Engine 4
Microsoft Office Word