This project was made as part of my degree at DAE and focussed on collaboration between the development team and an external client. For this project we were tasked with creating a VR rowing simulator that could be used as an immersion tool for training, as well as a VR demo at gaming and technology expositions.
About the project
The project was made with a team of five people, three programmers and two artists and was our final project before starting our internships in the gaming industry. The teams were assigned a random client and had to work out the best product to satisfy the clients needs. We had a special case, as we didn’t just have one client but rather two clients. Both wanted a VR simulator for the HTC Vive and a rowing machine called the “Concept 2”. This is where the similarities ended. The first client was the Flemish rowing federation, their main goal was to use the simulator for training purposes where they would be able to row through virtual real world environments, preferably iconic rivers. The other client was a technology gym based in Bruges, Belgium, who wanted a simulator to use in their gym as well as use it for expositions to catch the eye of visitors.
These two requirements were quite difficult to combine so we had to compromise. We discussed with the clients and decided on a game with two mode. One mode would be more tailored to training, where a river would randomly generate and the player would automatically move along this set path. This mode could be used to train, as it kept going infinitely. This also had thee sub modes, one where two people were seated in the same boat, where one person had control over the left propulsion system and the other had control over the right system. Both players would need to work together to steer the boat through the swirling river system. The second mode was a race between two players, and the last mode was a single boat where two players would have to row in sync to go as fast as possible.
The second mode is an arcade mode, with multiple minigames that utilised the input from the rowing machine in creative ways. In the first mini game, two players must work together to pull a mining platform to the top of a mine shaft while catching falling ores and keeping the platform level so the loot would not fall to the ground. One player controls a pulley on the left side of the platform and the other player controls the right side. This requires both players to row in sync to get the highest score possible. The second minigame is a 1vs1 match where the players fight over a fish they both caught. This is a game of endurance and strength. Row faster than your opponent and the fish will be pulled your way, but pace yourself as the other player could play slow and steady to win the fish dinner.
The project started without us having access to any hardware, no VR headsets and no rowing machine as they were scheduled to arrive two weeks after the project started. This meant we had to start with prototyping the game modes and find a way to simulate the input. I had access to a personal VR headset, we could then use the controllers to simulate us rowing in the air which was a big help in playing our simple prototypes.
Once the rowing machine arrived, we had to get it to talk to the game. We got an external program that could read the stats for the rowing machine which we could then send to Unreal Engine through a local HTTP connection. This way we could show the player how fast they were rowing and how many calories they were burning.
For the final product, I was responsible for the entire first mode and helped out with the minigame coding as this fell behind near the end of the project. This was the first time we did multiplayer in Unreal Engine, which was quite a steep learning curve, but we got the hang of it after a while.
We opted for a set of modes with a randomly generated river, which caused us headaches later on in the project as we needed to optimise the games performance as the generated terrain turned out to be really expensive to render, and even harder in VR. I was responsible for optimising the performance, which ranged from auto generating LODs for all meshes to changing the spawning system to hierarchical static meshes so we could batch render trees at a given LOD based on the distance to the player.
The game was made using Unreal Engine 4 Blueprints and used an API provided by the concept team to relay the rowing machine input to the game.
Meet the team
|Glenn van Waesberghe||Programmer|
|Lukas de Wulf||Artist|