Funky Ball     on going

Chaos roams the town when one hamster has an insane idea to run around in a hamster ball. Using VR technology, we create a game using tilt to move the character around.  Explore the world of Hamster and cause damage around town while maintaining balance!



Jacob Harrington : Product Owner, Lead Designer

Leslie Leung : Lead Programmer

Eamonn Nung : LEad Tech artist and Programmer

Megan Reggie : Lead Artist

Nixon Poon : Outsourced Environment Artist



My responsibility for this game is tied to Environments. However, due to the capacity of VR game, I am also responsible for creating a pipeline for the game. This allows all artist to easily manipulate and create levels. For buildings, I created a procedural building that can be adjusted like in Houdini with BP.



Procedural Buildings



Since the game is an arcade game and the player will see everything, I have to make sure that building is procedural enough that shows variety. My goal is to build parameters that define its shape. 



I first define all the shape of the whole building, including base, body and the edges. I parameterized them so that I can adjust any of them when needed.



Building coding:

Each window has a different rotation base on their axis, therefore I must rotate 4 times in 

total. A for loop is created for how many window to be spawned.



Sometimes we will want an extra floor to place dentils on top, therefore I put in an extra function that only active if true, that spawns another floor.



The spawn window function spawn and static mesh, rotate base on the for loop, and then set its material. It was collapse for organizeion.



Level Blockout

To ensure fast edits and straight forward level be created quickly, a level road kit has been created specifically for the floors. The UV is constant across all shapes, therefore, we can tile it. Since the player will be seeing it from the top view, all must read well, and the road became the indication of where to go.





To ensure that the environment is readable, my technics is to analyze their silhouette, each object has a very specific form that is different enough to be identified in an instance. This avoids chaos. There will be chaos that breaks the game's repetition, such as moving cars, instanced NPC, and decals.



Hamster NPC 

The hamster NPC are placed around to make the game feel alive. There is currently only one hamster that is instanced with different color around. It will say hi at a fixed time. This is achieved by timing the hamster NPC. When the hamster ball or your hand approach, it turns around and say hi to you.





A timeline was used to time the function, which executes saying hi. Then it reset after putting down its hands.



This part checks for collision, if it is the ball or your hand, it will take the position of your hand and attempt to get the look at the rotation. Then the hamster will interpolate from its original rotation to your hand's look at the rotation.



I took advantage of blendshapes in unreal to bring a smooth lerp from one action to another. Currently there is only one action, however this system can be expanded towards more actions.





Moving cars

Moving cars are essential to cities and without them, the environment will be dull. I have decided to create some moving cars and modulate them, therefore I can keep spawning them if I wanted to.



I have decided to create a blueprint for the car, the cube is start point and the sphere is the end point. When the car reaches the sphere it will turn invisible to create an illusion that it kept going. The car always looks at the sphere.



To begin, it start off with a random color and glass material for the car and delay its start if wanted. These values are public, therefore I can have a huge variety of them.


Blueprint checks the distance from the cube to the sphere, and use that information to respond to the visibility of the car. It was clamped to avoid the car from going further than needed to avoid any bugs. And when the car reset, it sets a new material for itself. This process loops.