I GOT YOUR BACK
I GOT YOUR BACK is my first round team project in Building Virtual Wold. In the world, guest fills the role of Mr.Woha's best friend, who is a cute blue monster nervous about his first stage singing. Guests are armed with a popcorn bucket, and they need to throw popcorn at any unwanted "BOO"s that threaten Mr.Woha's confidence.
Programmer, Mechanic Designer, Animator
Other Teammates: 2 * Artist, 1 * Sound Designer (Solo Programmer Project)
Platform: HTC VIVE | Engine: Unity 3D | Language: C# | Time: 2 Week
This is the first team project in BVW course. Every team needs to design a highly interactive world in two weeks that exemplifies the following theme: Character ‘A’ is afraid of Character ‘B’. In the game, Character A's FEAR and GOAL must be obvious to the audience, and the interaction of guests is critical for Character A to achieve their goal.
Since this is the first round of team project, every team spent a long time running in. We used the first three days brainstorming, two days for implementation of basic mechanics, and two days building a prototype for interim feedback. In the second week, we polish the game flow, adding more interaction and feedback, then doing a large amount of playtesting and debug for a better game experience.
Day1 - Day3 Brainstorming
Since this is the first game that 5 students designed together as a team, we start our brainstorming by letting everyone finding ideas from games we experienced. Because of the theme that guest help A from B, we focus on those games with two main characters, especially those games that guests are rivaling against some specific character and cannot be directly defeated.
From the perspective of a programmer, I thought about the interactions of the game at the same time. Since this is my first time developing on HTC vive, I start from reading SDK and vive-Unity developing tutorials, and I also watched tons of videos about popular vive games. I found that among the basic interactions, grabbing and throwing is the most satisfying and naive-guest friendly interaction. Therefore I browsed for games using throwing, catching and grabbing. I summarized the rough prototype that the core mechanics should be making the guest grabbing ammo, aiming and throwing at a specific target, and the score should reflect the guest’s throwing accuracy.
And we spent several meetings on brainstorming. We brought out ideas from a puzzle game to balancing game and racing game. After we talked about controlling mechanics and devices we plan to borrow, we finally decided to use the grabbing-catching-throwing system, and we chose the theme in theater, where guests can throw popcorn in darkness at unfriendly audiences.
After settled the game theme, we separate our work and settle the pipeline of working. The game designer starts to write an immersive and convincing story, modelers build a rough environment of theater, the sound designer wrote a sample track fitting the theme of theater. As the only programmer in the group, I read the SDK scripts, learned how to read inputs from the HTC vive controllers and trackers and made a prototype of grabbing-throwing.
Day 3- Day 6 Quick Prototyping
After settling the theming, I spend the next two days fulfilling the core mechanics, including VR environment setting, controller & tracker setting, and grabbing-throwing interaction. Since we want the player gets “popcorn” ammo from a bucket that the guest holding in his hand, we stable a tracker at a popcorn bucket made by cardboard. And we want the controller in guests hand as the hand of another Woha-like character, which can present the hint that guest is the same kind as Woha on the stage and should help him instead of trying throwing popcorn at him.
When meeting with our project instructor, we got the feedback that throwing is always easy for implementation in VR, but it’s hard for guests to throw things exactly at their target since the controllers in guests’ hand don’t always share a similar weight with objects thrown in the virtual world. Therefore we decided to settle the scale of the theater, including the position where guest sits, the distance between every unfriendly audience and the guest, or how far common guest can throw popcorn in a real environment. This part of testing distinctly shortened my working hours in polishing the throwing hand feel. Based on collected playtest data, we set the sensitivity of throwing, the exact weight of every popcorn, and the relative position between characters. By the end of Week1, our demo has simple art place holders and a solid structure.
Day7 - Day 12 Polishing and Complement
After interim presentation, we carefully went over the peer review and instructor feedback. We settle several brief defects in mechanics and game flow and plan to solve them in the next few days.
From peer feedback, we found that our background story seems illogical and not obvious for our guests. Therefore we decided to add an opening scene and ending scenes introducing the story. I designed several prototypes for the opening scene, including a theater with HUD Canvas showing images and text about game mechanics, a theater with a chatter audience always talking about the background story, and the backstage scene where Woha talking with the guest.
We compared those opening scenes, and finally decide to let Woha talk with the guest. In the opening scene, Woha will call the guest as his best friend, telling him that he’s nervous and afraid of audience booing at him. Guest can know about his role in the game as well as his mission. At the end of the scene, I add a shining particle on Woha’s hand, and Guest needs to give Woha high five to enter the next scene. Then after completing the game, guests would be treated to either a “win” or “lose” cutscene. In the former one, Woha is celebrating the success of his first performance, and colorful ribbon particles bursts around him randomly. In the losing ending, I use post-processing effects, showing a monochrome scene where Woha saying “You promised to help me” with a depressed expression.
Another defect I worked on is the real-time feedback of whether the audience needs to be thrown with popcorn. In the interim version, I gave audience characters a simple Unity Animation of growing bigger when Booing, and Woha has a lower pitch of singing when being booed. We reached lots of feedback that it’s not obvious for guests about booing targets, so we tried several methods showing the guests booing audiences.
Firstly, we tried using HUD UI showing the player which audience is booing, and we find from the test version that in the 3D environment, it’s hard for guests to tell the horizontal distance between guest and the UI, therefore it’s not clear for audiences in the same row. Therefore we chose to make a 3D model of BOOOO text, and I gave it a simple Unity animation of popping out from a booing audience.
Besides, we changed the idea of changing the pitch of Woha’s singing, since the ambient sound of theater is a bit noisy, which made Woha’s pitch and volume change not obvious as expected. Therefore I tried made two different Soundtracks, one is Woha’s confident singing while the other one is halting and stuttering. I set a parameter of Woha’s confidence, slowly increase when he’s singing, got a sudden decrease when an audience starts booing, and persistently decrease if the audience is not stopped from booing. His confidence starts from 60%, and audience may boo at random time with a cooldown of 5 seconds. If under 50%, Woha may lose his confidence and his unconfident audio source will be played. I also added a cooldown timer for soundtrack switching, which may avoid the problem of consecutive changing when his confidence is around 50%.
Day 12 - Day 14 Playtest
In the last few days of the second week, we add several features on the solid structure we build in the first week. We carried out a consecutive playtest as soon as we add new features or fix bugs, and we receive valuable advice during that process. In the last two days, we focused on resource acquisition. Since we keep the idea of containing fixed number of popcorn ammo in the bucket, guests always run out of popcorn before the world was over. Therefore we accept the idea of making the bucket generating unlimited popcorns. I lessen the scale of every popcorn and add a instantiate point at the bottom of the bucket, and the bucket will pop out countless popcorn unless the bucket is full. In the following playtests, guests gave a positive review of the ammo acquirement method, and they are all satisfied with the visual effect of popcorn popping out.
Besides, we reduce the scale of Woha, and change his voice line into a more quavering one. I also rearrange the lightening of the theater, making Woha the only bright character in the theater and use different groups of facial expression to show his emotion. We tried ways to portrait Woha as a helpless, nervous and cute creature, while the salty audience has a more aggressive outlook in contrast. Which suggest the guest help Woha from those guests effectively.
To some extent, I am honored to be the first solo programmer in BVW course, I regard that as approve of my instructors. On the other hand, the workload is still a little bit out of my expectation, which also taught me a lesson of time management.
Overall, I am still satisfied with my first BVW project. This is my first time finishing a highly completed project in such a short time. I trained my skills in designing, quick prototyping, learning new platforms, time management as well as communicating.
In the development process, we tried a lot of different development tools and design ideas, some of which were inefficient and unsatisfactory like the Unity animation maker and facial expression, while others were very efficient like post-processing and particle effect packages. I learned that in the process of development, it is necessary to try new technologies and mechanisms, and the process of trying also taught me a lot.