Genre: VR game
Engine: Unity
Date: 2022.11
My Role: Programmer, Game Designer, Technical Artist
Intro
Dongpo's Zen World is a lowpoly VR game based on Chinese poet/gourmet Su Dongpo's Diary
In the game, In the game, you need to enter the fantasy world of Dongpo, who is forced to temporarily give up meat due to illness.
It's very difficult for a foodie, thus illusions of different meat ingredients will move towards Dongpo and disrupt his practice. And Dongpo needs to purify these "evil thoughts" with his bow and arrow
Inspirations
Dongpo(苏东坡) is the most famous poet in China. He is like 'Chinese Leonardo Da Vinci' in the heart of most Chinese people.
As a legendary gourmet, he discovered many new ingredients and recorded them in his diary, including pork, scallops and puffer fish.
In Chinese Buddhist culture, the bow and arrow is a sacred weapon used to ward off evil spirits.
Dongpo was also a qualified archer accoring to his poems.
Why VR?
According to Professor Jesse Schell, I came up with a VR solution in at the prototype stage for 3 reasons.
Firstly, in this interactive technology support, the operation of bow and arrow is more detailed and interesting.
Also, As the enemies are closer to the player's eyes, they appear more oppressive.
Additionally, our players can use this game indoors to fully move their limbs during the pandemic.
Gameplay Design
Bow and Arrow
In this fantasy world, Dongpo needs to take out arrows from the quiver and shoot the enemies in different directions
Enemy Design
"Dongpo Pork"
"Dongpo Pork" is the basic enemy of our game. It will spawn from the "Ding" (sacred vessel) of Confucius' Temple and walk on ground.
This is the most famous dish invented by Dongpo. Every New Year's Day, the Chinese worship the Confucius Temple with this dish
The pork is cut thick (about 5cm square), then red-braised, stewed with yellow wine and sugar.
Before this great invention, Chinese seldom eat pork because of the lack of proper cooking ways. This dish has made pork the most usual ingredient in China.
Scallops
Scallops will hatch from the pond and can be shot when they open their shells and reveal their glittering pearls.
When Dongpo was relegated to the tropical Hainan island, he became friends with the local aborigines and became enamored with the scallops there.
He wrote playfully in a letter to his brother: Don't let other officials be relegated here as well, I fear they will eat up my delicious scallops。
Pufferfish
Pufferfish will fly over the Great Wall and move towards Dongpo.
Targeting an airborne target is a more difficult task, but when the fish blows up, the Dongpo can aim it more easily.
Pufferfish is a traditional Chinese delicacy. However, the fatal poisonous parts of the fish need to be removed by qualified chef.
Technic Detail
VR Bow & Arrow
Firstly, I added an XR Grab Interactable component on the model of the bow and arrow to make them follow the player's hand position while being grabbed
Then, an XR Socket Interactor was added to the bow to create a notch.
When the Unselect Exit event is triggered, the arrow's rigidbody will get a force.
VR Transportation
For every walkable surface, I need to add a Transportation Area script as a component.
Enemy Spawn
In each spawn area, I set up a list containing several points. The script will select a point randomly and spawn enemy there. Coroutine is used here to make a certain time interval after the enemy is generated.
The system is very easy to use in teamwork. When my teammate want to add a new spawn area, they just need to create a new point list.
Enemy Follow
Based on the NavMesh system, I was able to create the enemy moving on the landscape automatically.
In script, I set the player as the enemy AI agent's target.
The puffer fish flies high on the sky, thus I used a cube as its parent to navigate on the landscape.
Outline Effect
Utilizing the Shader Graph system, a black plane will be extruded and rendered along the vertex normal direction of the mesh face.
Dissolve Effect
We created a lotus model as the reticle of teleportation system.
I used a shader graph to make the dissolve effect of the lotus. All of the value below threshold value will be clipped, a noise texture was used to create the random effect.
Inheritance
In order to reuse the function in base class
All of my enemies will have some same behaviors.
Then, I utilized inheritance features to override the specified functions, creating the various characteristic of them, such as the special skills of different enemies.
Singleton Pattern
Singleton Pattern allows me to create a global function in my ScoreManager script. Each time when a enemy get shot, the function will get accessed and player can get a point according to its type.
Teamwork
Wentao Zhang
Historical Consultant, Game Designer
-
Collected research papers about Su Dongpo, Chinese Buddhism and Chinese food
-
Created the level GDD based on the data of Diaoyu Castle, China
-
Composed the story of the game
Shuqin Huang
3D Artist, 2D Artist
-
Created all of the 3D models in the game scene in Maya
-
Unwrapped the UV map of models
-
Designed and produced the textures using Substance Painter
-
Rigged the 3D models and created character animation in Maya
-
Drawed UI icon resources
Ruzhang Zhao
Programmer, Game Designer, Technical Artist
-
Created scripts in Unity, including gameplay, VR features, enemy spawn, combat system, sound system and UI system
-
Designed and produced the level prototype based on GDD
-
Designed the enemies based on the papers provided by Historical Consultant
-
Created the VFX and outline shader.
Prototype Design
I am a Tower Defence Game fan. When I got my Oculus, I came up with an intersting idea: How about making a VR Tower Defence Game?
My favorite tower in Kingdom Rush is Archer Tower, so I chose Bow and Arrow as the main weapon of my game.
In prototype, the enemies will move towards player on platform from three different directions, thus the player need to walk to different position and aim at them. Based on this feature, I designed the landscape and skills of enemies.
Map of Diaoyu City
After researching the reference material collected by our historian, we selected Diaoyu City(钓鱼城), a small fortress located on the Mountains of Chongqing. It is known for its resistance to the Mongol armies for 36 years miraculously. The archers there killed Mongol leader Möngke Khan and resulted in the immediate withdrawal of Mongol troops from Syria, East Asia and Europe.
In this war, there were three main directions of defense for the fighters of Diaoyu City: some soldiers defended the docks in the flat areas at the foot of the mountains, some blocked the enemy climbing up the mountains, and others fought the enemy on the river. This story from Wentao Zhang inspired me to produce the level.