Rage Chess VR — Multiplayer
06.21.2021
─
Kyle Whitten
Buckets Development Group
Tulsa, OK
Overview
Picture this…
You’re in the middle of a chess match and your opponent strikes that sneaky move you should have seen coming.
What’s your emotional impulse?
- Flip the chess board and let the pieces fly across the room?
- Break the chess board with a hammer?
- Pick up your trusty crossbow and shoot your king into the sky?
Now you can!
Rage Chess is a Multiplayer VR game that allows users to play chess and express their emotions throughout the game. This was created for VR users who know and love to play chess and want the ability to express their emotions in game.
The team that built Rage Chess VR consisted of 4 developers working together. All time lines were ASAP for all developers with a set timeline of the end of our production phase which was 05.28.2021–06.11.2021 (There were subtle improvements to Rage Chess VR until 06.15.2021 and there will continue to be improvements). All developers had a hand in all aspects of game development as all worked in person for the majority of development with constant communication when we worked remotely in the evenings.
- Ayden Townsley — Networking Lead (Set up & Manage Multiplayer servers working with Photon Pun 2)
- Peyton Smith — XR Toolkit Lead (Set up hand prefabs and optimize interaction with all objects in game)
- Valerie Nierenberg — Deployment & Docs Lead (Time management of project deadlines & developer task deadlines. REAMD.md, landing page & other documentation)
- Kyle Whitten (myself) — Design Lead (Asset/3D Object Integration, Scene design for start screen as well as main scene)
Why Rage Chess VR?
Coming into my final project of the foundations year I knew I wanted to work on something related to AR/VR to see if it is something I would enjoy. Along the way I have made friends (above listed team members) who were all interested in doing something in the realm of AR/VR as well. Luckily Ayden and Peyton had already come up with the idea of Rage Chess VR which Valerie and I fell in love with. It was and is an amazing concept for a VR experience/game. Having no experience with C# or Unity we were all nervous but we got started strong. I like chess but it is a little boring at times so adding Rage elements to express your displeasure with defeat or your own stupidity was ideal to me. Take something that is great for challenging your brain and add some release to it! My interest in the AR/VR realm was not my only deciding factor when agreeing to work on this project. Seeing the passion and desire to learn and produce before we even started the actual project was inspiring and led us all through an amazing learning/growing experience.
Results
Buckets Development Group met our MVP of a VR Chess Multiplayer game with Rage elements. We also met a good amount of our stretch goals but we have more that we will be adding. If you have an Oculus Quest 2 then you can download and play our game via our GitHub. You can play chess and utilize all Rage elements added in the game! This is a 2 player per room game as of now.
Tech Stack
Rage Chess VR was built for Oculus Quest 2 using Unity. Within the first 2 days of development Ayden Townsley had successfully deployed our multiplayer server using Photon Pun 2 which is an online service where we utilized the free package which has some limitations (ie: 20 person limit on our server, which is fine for now but could present a scaling issue in the future which money or building our own online server to host would solve). For 3D object manipulation and interaction we implemented custom C# scripts via VSCode to the 3D objects. We started using Github to host our project but after running into endless merge errors (due to temporary files Unity creates and alters in the background) we moved to Unity Collaborate in the last few days of production which allows us to work more efficiently (handles temporary files for users & allows users to publish/push selected changes to master). In order to build and run Rage Chess VR onto our Oculus Quest 2 we used Unity along with Oculus Developer Hub as installation of an updated Rage Chess VR .apk via the Oculus Developer Hub was far more time efficient as opposed to opening in Unity to build from there. Both installation routes were used during development based on the current developer setup. To deploy our landing page we utilized Github Pages to host a free website. We utilized a web page template from researching the list of providers Holberton listed on the project page and modified the content appropriately to meet our needs.
Features:
- Start screen assets & design — Start server and load into multiplayer room
- Game scene assets & design — In game assets/objects to be used by players
- Added real life mechanics to chess pieces — Enable them to topple over and roll as they would in reality.
- Test and ensure all 3D objects had appropriate components for ideal realistic interaction within Rage Chess VR.
Technical Challenge
When assets/3D objects were integrated into Rage Chess VR we ran into various errors with each object and many of them were unique based on what components the asset/3D object came with upon being integrated into Rage Chess VR. One issue that had us/myself stuck for some time was that all of our chess pieces would sit upside or at an angle (where the piece was placed it would balance there). This was not ideal as this is not realistic.
To fix this we/myself were not sure where to start as we were all beginners. Everything seemed to be correct with the components of the chess pieces. We knew something was not correct as when testing the pieces displayed the aforementioned behavior. My goal was now to fix this issue and enable realistic movement to the chess pieces.
Testing began immediately and after some time the mesh colliders of all the chess pieces began to reveal themselves as the culprit for this non-realistic behavior. The mesh colliders came with the chess pieces when imported into our game and when inspected they appear to just incompass the body of the 3D object but it was acting as a box collider. I removed the default mesh collider in order to add a box collider and a capsule collider. The box collider I shrunk down into a base collider and had the capsule collider encasing the top of each chess piece. This was done for all chess pieces in game.
Upon testing the issue had been fixed! We now had chess pieces reacting realistically as they would in reality within Rage Chess VR!
(Please refer to image below for visual)
What I have learned
C# is a cool language from my limited exposure to it through this project. I enjoy how it is similar to C but is object oriented.
Going into this project I assumed GitHub would be fine for hosting our project but I was wrong. As previously mentioned this was a nightmare due to temporary files that Unity changes in the background when building and running your project (testing on the Oculus Quest 2). We all now know that hosting a Unity project should be done on Unity Collaborate to save time and improve project development. This is the only change I would see making in development.
When it comes to what I learned about myself I would have to say that when I am interested in a project I do not mind putting in extra time working on it as I was constantly thinking of ways to improve Rage Chess VR even when it was time to log off. Also, I can tackle a new topic/project pretty efficiently. For best results it should probably be interesting to me.
This project has solidified my decision to go into AR/VR as it is rewarding to build and test your projects. The landing page of this project was less enjoyable than the AR/VR aspects.
I was concerned this project would be too much for us and honestly it was but we all over achieved our goals and it was an amazing experience! The amount we learned and troubleshooted over the project was astronomical and we were rarely defeated. Some of our future goals that we fell short on due to time include:
- Adding voice chat
- Implementing legal chess moves
- Improving our scoring system
- Designing our own 3d Objects
- Adding interactable weapons to the reset function
- Adding more scenes/game rooms
- Making the watermelon sword a projectile like the arrows so they can be shot from the bow
- Making the table destructible with the axe
I am a determined learner that greatly enjoyed this experience with my friends! Building, testing and playing with anything AR/VR seems like a good time to me. Thank you for reading!