Happy October. Since this is Halloween month I decided to do a post on Zombie Chase VR Endless Runner, CEEK VR’s dynamic first-person Virtual Reality endless runner game for Oculus Rift. I’ve outlined the game development process, challenges, innovations and work arounds.
In Zombie Chase VR Endless Runner game action unfolds in an apocalyptic city and its suburbs. The game is a dynamic first-person virtual reality runner. The main character runs away from insidious monsters who strive to attack. Monsters are everywhere, running behind you, they jump from the side and above, jumping from buildings and everything. In addition, you encounter various obstacles such as falling rubble, cracked asphalt, holes in the ground, burning cars and much more.
The game works with a variety of VR platforms, though experienced best on the Oculus Rift, we also have mobile VR versions for Oculus Gear VR, iOS and Android.
• Oculus Gear VR (Android)
• Google Cardboard (Android)
• Google Cardboard (iOS)
• Oculus Rift (Windows)
Each platform has its unique characteristics in terms of code and graphics, so the game had to be redeveloped from scratch as we had to rewrite a huge part of the code and overhaul the graphics. For example, for Oculus Rift, the game had to be overhauled completely. We created models with more polygons and new baked textures in HD. Also, we enhanced the lighting, effects and LOD(Level of Detail).
To balance quality and performance, we added graphic profiles. Each profile is responsible for texture LOD, draw distance, and effects saturation. Some of the bulkiest effects (e.g., water) were presented as individual menu items. Plus, we used LOD and combined geometries. Each level was elaborately analyzed. Based on such analysis, we selected the best ways to optimize graphics and code.
The Oculus platform has specific requirements that imposes various restrictions. For example, the Oculus (Gear VR) mobile platform sets the minimum threshold at 60 FPS throughout the total play time. For the Oculus (Rift) desktop platform, this parameter is at 90 FPS throughout the game. Apps with lower FPS simply won’t be published in the store and for good reason – user experience isn’t optimal at lower frame rates.
The game features 4 locations (levels). Each location is an individual level with unique landscapes. Each new level is more difficult than the previous one (more obstacles and enemies).
Level 1: Busy metropolis center
Level 2: Small town and suburbia
Level 3: Night city
Level 4: Countryside
As this is a runner game, the levels are designed in the form of a corridor. The players are following pre-set trajectories created with a special Unity plugin. The levels were made and arranged in the Unity game engine. The elements for each level were created with 3ds max, which was also used for texturing. For lighting and effects, we utilized the Unity tools. We further baked lighting into *.EXR textures.
• Created objects in 3ds Max
• Textured objects in 3ds Max
• Optimized a polygon grid for the models
• Created texture atlases in 3ds Max
• Exported the models to Unity
• Created shaders for the models in Unity
• Created the environment (levels)
• Divided levels into blocks
• Combined geometries inside blocks
• Created LOD for blocks, effects, and geometry
• Created lighting and effects in Unity
• Baked lighting into textures in Unity
1) Use of lighting, shadows, and textures in a huge virtual world resulted in performance problems, especially for the Oculus mobile platform.
2) Other mobile devices also had a hard time handling massive geometry contained in the Zombie Chase VR game universe.
1) To make the game lighter and reduce the load on mobile devices, we baked light and shadows using Unity tools. For a game environment as large as Zombie Chase VR, it took us 6 to 12 hours to bake each level. We also combined the textures into atlases.
2) To reduce the load on graphic processors, each level was divided into blocks, then same-atlas geometries were combined inside each block. Also, each block had its individual LOD system that was applied to both objects (models) and effects.
The game features two characters, a man and a woman. The goal is to introduce the ability for users to create their own avatars inside the game at a later time. The characters differ of the characters differ by speed, damage done, and damage received. Character models were created and animated in 3ds max. Players follow the pre-set trajectories but can move in different directions (see the “Control” section). Since this is a VR game, we didn’t use physical models of players in the game. Character models were used in the game menu.
- Created characters in 3ds Max
- Textured characters in 3ds Max
- Animated characters in 3ds Max
- Optimized a polygon grid for the models
- Exported the models to Unity
- Created shaders for the models in Unity
The game features a variety of enemies including several types of zombie men and women, several types of zombie animals and a huge monster that hunts the player. Like the players, the enemies follow the pre-set trajectories. We created and animated the enemies in 3ds Max. Each level features more than 100 enemies. Each enemy has a set of characteristics:
• Movement trajectories
• Damage received
In addition, the game features multiple obstacles: stones, cars, ditches, bridges, fires, etc. that can do damage to the player in different ways.
• Created enemies in 3ds Max
• Textured enemies in 3ds Max
• Optimize a polygon grid for the models
• Exported the models to Unity
• Created shaders for the models in Unity
• Created trajectories for the enemies
• Arranged the enemies in the environment
• Created a LOD system for the enemies
To make the game more dynamic and exciting, we had to create an individual trajectory, trigger, and set of characteristics for each enemy. As each level features more than 100 enemies, this work required a lot of patience and diligence.
Control options are determined by the platform the player is using. The player can choose from a variety of control options, including a controller (joystick). The characters follow the pre-set trajectories. The character can do the following:
- Move to the left/right.
The phone or VR headset’s accelerometer is used to detect orientation. In Oculus Gear VR, you can use buttons on your headset to control your character.
As different controllers have different specifications, it caused some control issues.
We chose a standard algorithm supported by most controllers.
* iOS platforms work with a limited number of supported controllers.
There were no programming issues, the only challenge was needing to rewrite part of the code for each platform to ensure flawless performance.
1. 3ds Max
3. Plugins for Unity
4. Adobe Photoshop
6. Adobe Premiere
7. Adobe Audition
To create the game, we used the following hardware:
• 2 x Lenovo IdeaCentre B750 29 (all-in-one):
• CPU: Intel Core i7 4770 3.4
• RAM: Memory: 16 GB
• GPU: NVIDIA GeForce GTX 760M, 2 GB
• SSD: 512 GB, SATA 6Gb/s
• Oculus Rift CV1
• Oculus Gear VR
The game was tested and optimized for various devices and controllers, including:
• Samsung S6 and up
• Samsung S7 and up
• LG Nexus 4
• iPhone 5s and up
Download and Enjoy
Download Zombie Chase VR Endless runner from one of the following places and enjoy. Send us your feedback. Happy Halloween and zombie chasing!!!
Oculus Rift - https://ocul.us/2zGdBp6
Gear VR - https://ocul.us/2zGdBp6
App Store – https://apple.co/2OVtj54
Play Store - http://bit.ly/2Qns3bp