NEON PONG is my third round team project in Building Virtual World. It's a one week project developed on motion sensing device Kinect and is a two player collaboration game. In the world, guests controls a paddle with their two hands, and they need to hit a neon ball to collect gems in the map and reach as many levels as they can.
Programmer, Mechanic Designer, Art style designer
Other Teammates: 1 * Programmer, 2 * Artist, 1 * Sound Designer
Platform: Kinect | Engine: Unity 3D | Language: C# | Time: 1 Week
This is the third team project in BVW course. Every team needs to design a fun-focused world in a single week. Therefore, the key point of the game is to have a good idea that is FUN to play with, preferably one that can be implemented simply, since one week is not proper for a fun game with large scope.Besides simple joy when playing, the game is also required to be highly re-playable, which means that guests should improve their skills when playing and are willing to play again.
· Since this is the first round of team project, every team spent long time running in. We used first three days brain storming, 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 large amount of playtest 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 programmer, I thought about 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 specific target, and the score should reflect the guest’s throwing accuracy.
And we spent several meetings on brainstorming. We brought out ideas from 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 theming, we separate our work and settle the pipeline of working. Game designer start to write an immersive and convincing story, modelers build a rough environment of theater, 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 get “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 sit, distance between every unfriendly audience and the guest, or how far common guest can throw a popcorn in real environment. This part of testing distinctly shortened my working hours in polishing the throwing hand feel. We spend few time before directly set the sensitivity of throwing, exact weight of every popcorn, and the relative position of the guest, audiences and Woha. After a few times of testing, we finished the edition with 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 illogically and not obvious for our guests. Therefore we decided to add 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 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 neverous and afraid of audience booing at him. Guest can know about his role in the game as well as his mission. In 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 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 audience need 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 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 made 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 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 Sound tracks, 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 sudden decrease when an audience start 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 cool down of 5 seconds. If under 50%, Woha may lost his confidence and his unconfident audio source will be played. I also added a cool down timer for soundtrack switching, which may avoid the problem of consecutive changing when his confidence is around 50%.
Day 12 - Day 14 Play test
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 consecutive play test 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 the resource acquisition. Since we keep the idea of fixed number of popcorn ammo in the bucket, guests always run out of popcorn before the world was over. Therefore we accepts the idea of making the bucket generating infinite number of popcorn. 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 play tests, guests gave positive review about 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 to 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.