Duo-Wei Yang
Georgia Institute of Technology
Uproot
August 2020 - December 2020
Video Game, Unity
At the end of 2020, four other Georgia Tech students and I created a 3D platform game in Unity under the instruction of Jeff Wilson. This project was divided up according to interest and specialty. In my case, I was mainly in charge of the programming for the audio and dialogue and writing the narrative of the story.
In our game Uproot, you play as a little sprout that's trying to grow up as a big plant by gathering nutrients (collectibles) throughout the levels of the game. As you collect them, you learn more about the backstory of the game's universe and learn how to defend yourself against hostile enemies. In the final stage, the sprout levels up to a full grown plant that seeks to kill the mother tree of the forest in order to win the game.
Early concepts
Drafts and general objectives
At the beginning of this project, we were given fairly free jurisdiction on what kind of game we wanted to make, so long as it was a 3D type of game. After some discussion on what could be made within our time limit with our little experience in video game design, we decided to make a 3D platform game with platforming, collectibles, and some fighting with NPCs.
Our team proposed the following general rules and objectives:
-
Collect enough fruits, leaves, sticks, soil etc. and reach the next location in order
to level up and progress. This will be achieved by walking, running, and jumping. -
As the game progresses, the player must be hostile towards NPCs and therefore
have to kill them to progress further. -
If the player refuses to kill the NPCs, the NPCs will start attacking or bothering
the player more and more harshly. -
In order to win the game, the player must kill the final boss: the mother tree.
We also made some sketches early on to decide what the main character, "sproot", would look like. We weren't sure at this point what the end result would be, but we wanted sproot to have stages of growth as the player leveled up.
Style and gameplay
Our team decided to make our art style follow the low poly aesthetic. We believed a cute and more simple art style would fit the nature-based background of the characters and scenery. We also wanted the game to be cute and wholesome at first, but slowly progress into eeriness and slight horror to fit the final boss fight, where the protagonist kills the mother tree of the forest.
As main character sproot evolves into a bigger plant, he will gain new abilities. At this point, we wanted to allow him to whip his vines or throw balls at hostile NPCs after evolving enough from collectibles.
In terms of game mechanics, the player can move sproot with arrow keys, the space bar (jump) and attack with the F key. Attack animations are different depending on sproot's growth stage. Sproot will also learn these game mechanics and tricks by talking to NPCs.
The following demo video was shown to Georgia Tech instructors for early feedback.
The main feedback from our instructors were the following points:
-
Prioritize combat because it's a difficult thing to implement
-
Have different behaviors (AI) for enemies
-
Possibly have different stages of the boss during the last fight
-
Have physics simulation with six degrees of freedom. The six degrees of freedom are the
total number of ways an object can move in three-dimensional space.
Game components
3D models
Most of our assets were made in Blender. The main character's three forms, the collectibles (acorns, sticks, leaves), and the vine ball (weapon) were all made by scratch. Other 3D models were made from preexisting materials from the Unity marketplace.
Level design
Our game had a total of three levels. The first was a peaceful tutorial area where the player could learn the basic game mechanics and goals, including collecting leaves, sticks, and acorns in order to evolve and get to the next area. The second one was similar to the first level, but included a hostile NPC. In the third, the player needed to defeat a boss, the "mother tree" of the forest in order to win the game.
Dialogue and sound
I was in charge of the code and other work for the dialogue system and sound. In order to make the game more lively, we decided that learning the game mechanics through speaking with NPCs would be more organic. The sound in the game included the background music and sound effects that would only playing when certain actions happened, such as jumping or talking to NPCs.
Playtesting
Overview
Using the post-alpha version of our game, we conducted external play-tests with individuals and collected data from our sessions. We analyzed the results and created a report to understand what we could further improve upon and what aspects to focus on before the deliverable was due.
Play-testing script and survey
To ensure fair and consistent user testing, we created a play-test script, which included administration steps to conduct user tests consistently, including instructions spoken or presented to the play tester, actions taken by experiment administrator, time limits for play-tester, etc.
We also asked each person to answer questions on each level and give specific comments on their experiences. The questions from the survey included the following:
-
On a scale of 1 to 5, how easy/difficult was it to navigate the environment?
-
On a scale of 1 to 5, how easy/difficult was it to figure out how to attack?
-
On a scale of 1 to 5, how easy/difficult was it to successfully attack?
-
On a scale of 1 to 5, how visually clear was the level?
-
How was the audio in this level? Was it too loud/quiet, evenly balanced between sound effects and background music, fitting of the environment, etc.?
-
On a scale of 1 to 5, how easy/difficult was it to find all the collectibles?
-
Overall, on a scale of 1 to 5, how enjoyable was level 1?
-
General notes (if any)
Feedback and our response
Based on the feedback we received, we understood that there were various small changes we needed to give the game a more polished feel. For example, we needed to fill in in holes in colliders where players can escape, adding indicators to show where NPCs are, adding indicators that items are collectible and more.
For level 1, many of the fixes we needed also applied to the other levels. For instance, we had a infinite jump problem, basically allowing the player to jump as many times as they wanted, which essentially broke the game. Play testers also wanted us to make collectibles more visually obvious and we also wanted to make sure players realize they needed to collect all the collectibles before progressing to future levels.
For level 2, we decided to amp up the difficulty by adding more enemy NPCs and making them more aggressive. We also decided to hide some of the collectibles in better spots and require them to collect all of them to progress. The spin attack we implemented also needed to be tweaked to land on the enemy NPC and fully rotate 360 degrees. We also received feedback to change the keys for controlling the sproot as the keys we chose weren't entirely intuitive.
For the boss level, we decided to alter the controls so that players can strafe and control the direction with
their mouse. It made more sense this way as players could now dodge attacks with the WASD keys and have the mouse free to point at the tree to attack. The added degrees of freedom would help give players more control over their character and solve many problems related to aiming attacks and dodging.
In order to make the story of the game have more context, we included several introduction screens at the beginning of the game as well.
Response to final game
Conclusion
At the end of the course, each team presented the game to the class (virtually due to pandemic). Our game was well received and we received high marks from the instructors.
Although our team had to work virtually, we regularly met up online to discuss our project and divide the work. I'm very glad to have worked with a very productive and talented team!