
INCANTLAS
Year
2022 - 2023
Project Type
Platform
Undergrad senior year final
Quest 2/3
Incantlas is a VR magic casting game with hand tracking as the main interface. It also features a never seen before body position based locomotion system. The game comes in 2 main modes: story mode and arena mode. The story mode has a linear gameplay in which the player has to solve puzzles and battle through enemies to progress through the world. The arena mode on the other hand is battle focused in which after learning spells the player has to fight through waves of enemies. My entire academic journey in game design culminated in this project. The first semester was spent on ideation and proof of concept; In the second semester Incantlas came to fruition. Logo is designed by my friend Georgia Chen.
Footages

**New hand tracking system in development**
Music composed by my friends Edward Pan and Jenny Xing
Game Trailer
Quick Gameplay
Environment Showcase
NEW UPDATE
The old gesture system utilized the saved data of 24 joint Vectors of the Meta hand tracking system. A threshold is added to detect a specific gesture. This caused issues as I utilized my hands to sample the vectors which wouldn't match all hands. After graduating and stepping away from this project for months. I came back with a fresh insight on how to tackle this issue. Originally the user has to match 24(vectors) × 3(xyz) to register the gesture which makes the conditions very strict. Instead right now I am using only the x values of the tip of the 4 fingers and the z value of the tip of the thumb. I use these 5 values to detect if the fingers are extended, in the middle, or contracted. On top of this, further testing with multiple users confirmed how much differing hand sizes affect accuracy. With this I created a hand calibration system that would customize the threshold to fit exactly the current user's hands.
MECHANICS BREAKDOWN

Spells
Force Push
A force that can stun enemies. The harder the player pushes the stronger the spell is, but also the more mana it consumes.
Shield Cast
The shield's size depends on the spread of the player's hands when casting. If the player force pushes onto the shield it will unleash spikes.
Shoot Cast
The player can shoot out a bullet that will trace the enemy by the flick of the index finger.
Tracer Cast
tracer bullets will be spawned with one hand, and once released their directions can be controlled by the other hand.
Arrow Cast
The arrow can trace up to 4 enemies with the additional squares casted. A hard hitting spell that will release an explosion after hitting the last enemy.

Locomotion


The locomotion system does not require controllers or hands. There are two circles that is around the player's waist. The inner circle is the static circle. As long as the player stays in this circle they will not move. The player will start moving in the direction they step out to once they leave the radius of the static circle, and the further they step out the faster they will go. Its size is also adjustable to fit the player's preference. The outer transparent circle serves as a safety circle that gives the player a better idea of their position relative to the static circle.

Enemies
Basic description of the enemies' features and their interactions with the player
ART
Unity Screenshots
With the Quest 2 having a relatively weak chip, all 3D assets are meticulously crafted and utilized optimally to ensure a smooth 72 FPS experience.









Autodesk Maya
The models are optimized so that the triangle count is kept under 250,000 at each frame in Unity. Faces that are not visible will be deleted. This allocates more computing resources for higher quality textures.



Substance Painter
This is where I put my art skills to the test, creating assets that look interesting. I texture everything in a way that will work well with Unity URP's simple lit materials. It is crucial to understand the difference













Lighting
I use the Bakery plugin to create baked lightmaps. I think lighting is the true key to make an environment pop. I would rather have subpar 3D assets than subpar lighting in a scene.
THE PROCESS
Early Magic Testing
Here is a more in depth description of my journey in creating Incantlas for those interested. My goal from the beginning was to make a semi polished demo for the game. There are still numerous things that need to be improved upon, but I think I achieved what I set out to make.





The final versions of the spells did not stray too far away from what I made early on. However, it took many testing sessions followed by numerous iterations to refine them to become what they are. For example for the shield, It used to be that the player had to manually raise the shield with their hands. Even though I really loved that feature, it was way too complex for the purposes of my game. And for some of the spells I even buffed their features to up the satisfaction levels for the players. The arrow used to be aimed manually, and simply explodes after sticking to an enemy for a few seconds. In the final version, the arrow would trace through enemies based on the number of squares casted, and it will explode immediately after striking the last enemy.
First Locomotion System
The issue with using hand tracking as the interface in VR is that there are no joysticks for the player to use for movement. So I tried to see if a gesture based movement system could work. I made a simple system in which the player moves forward by pointing with their left hand while pointing with their right hand sends them backwards. Before I even tested it out I expected it to be a bit clunky and unintuitive for the player. And after testing it turned out to be much more clunky and unintuitive than I had imagined. It was a mental wrestle to quickly switch between casting spells and moving in such a dynamic game. It completely took away from the free sporadic magic casting aspect of the game. It was an eye opener for me and I went back to the drawing board which finally led me to create the body position based locomotion system.
Tutorial System
Final designs by Georgia Chen
I think my biggest failure lies with the tutorial system. I think activating the spells through the monoliths in the game was a very good idea, but the static images with waves of text to go through just fell short. I originally wanted to create animated images of the hand gestures and body movements that show exactly how the spells are casted, but the three month production time simply didn't allow me to focus on that. I also wanted to limit text use and just have concise images that would be enough for the players' to understand what they meant. But it was simply too confusing and I had to start putting detailed text along side the cluster of images. Not only is it not pretty and takes away from the fantasy setting of the game, it unfortunately made the players skip through a lot of the content because who really wants to read through so much text to learn a spell? The only solution to this problem is animated pictures, and it's something that I will definitely add in the future.


