Naboo Training Base is a first person fighting game, and it is also a VR game where players will wear HTC VIVE in order to play the game. It is the first VR game that I developed with two other group members.Here is a video which simply shows different role and responsibility of each team members, and development procedure:
In this project, I was reponsible for three aspects: scene designer, AI system, and physical simulation. Each part has different challenges.
Scene Design
Since we created this game in order to salute to Starwars, so we put our player in the stage of starwars. So the main challenging of create this virtual world is to bring the real grand scale feeling of this stage. In order to achieve this, the first thing we did is to find some reference images. After some discussions, we decided to put our players in this classic bridge stage because in VR game mode, players can hardly move far enough, so limiting them in a virtual bridge could potentially reduce their moving area. Besides this, a bridge can easily used as an aisle for enemies to come.
I used these images (from the internet) as a guidance for modeling our scene. Scince I can not find references from different angles, so I can only guess the approximate location for different objects. I made the model in maya, just following the basic game model principles: low poly, triangle face, flattened UV and so on. I made all the textures in Photoshop. In order to create the effects similar to the image above, I had to create diffuse and emissive maps for each model. Here are some images which show my process:
Finally, I combined all the models in Unreal Engine 4 and finalized our scene, here are some images about final scene:
AI Behavior
The second challenge came from AI behavior. The objective of our game is that players should use their weapons to defeat the comning enemies. Since this is a relatively simple objective, so a more complex AI behavior is essencial for our game. Instead of making enemies just rush towards players recklessly, I devised a new AI behavior pattern based on Behavior Tree system in Unreal.
In my design, the enemy can run towards player, stop and attack when in attacking range, change their positions after several seconds and try to find a new position to attack players, when player is going to attack, enemies will try to dodge that attack etc. Since this is a VR game, I do not want players to turn around to fight enemey because of the HDMI cable, so the enemey will always attack from 0 degree to 180 degree, just like the picture shows below:
After constantly testing and seting up all the behavior tree nodes, I believe the AI character finally can act as I expect. You could see from the video later.
Physical Simulation
Although for some people, this may not be considered as a challenge. For me, this is a new area to be explored. When players attack the enemies, I want the enemey could react to player in a reasonable way, since if enemies have some sort of physical properties, when players’ sword collides with them, they will begin simulating physic effects, this makes the game become more vivid, so I believe the physical simulation is another key feature of our game.
I tried and tested a lot of methods before trying physical animation. Some methods such as when enemies die, turn on physical simulation or try adding predefined animation clips, when players hit the enemy, play that animation clips… They did not do a great job. The visual effects are super unnatural. Finally, I tried physical animation part. Basically, unreal engine 4 could set all skeleton mesh characters with physical animation assets. The physical animation assets contain all different joints which are used to simulate physics, you can modify different parameters of these joints such as constraint angles, simulation strength etc. Like the pictures show below:
Finally, after keep tweaking different parameters, and set up reasonable blueprint connection, I finally completed the physical simulation part. It can not be considered as a perfect method, for there were still collision problems, but this method indeed made the game look more vivid and interesting. Some potential improvement in the future maybe add more precise parameters, carefully tweak each joint size etc. Here is a video you could see how enemies behave in the game:
Thanks for reading, if you have any suggestins or comments, please let me know…