INTO THE DEEP
Project Lead, Lead Developer
As a researcher you dive into the deep. There has been numerous rumors about the ocean becoming uncanny and slightly off. There were discoveries of large bones and almost as if some fishes are too large or mutated. Ready and geared you go on an investigation to discover the mysteries that are waiting on you.
CONCEPT AND GOAL
Project Hybrid was a 4 week project where we were tasked with creating an interactive experience that is hybrid. With hybrid it means that you have different means of interacting with the, in our case, game.
In this project we worked in a team of 6. Amber (artist), Liselotte (artist), Floris (game design), Caspar (dev), Yannick (dev) and myself. Since we had 3 developers we could make a "dev heavy" project.
Our project in general had many iterations in order to get to the point where we ended.
Based on a brainstorm session we quickly discovered that all of us wanted to create an arcade game. So the first week was pretty much full of research. We went to GameState to do some research. Thankfully we went early, because right the next day there was a lockdown (during the covid pandemic).
Our initial idea was to create a 360° shooter in the projection dome that we spotted in our university. We would create a physical chair that the player sits in which in return can fully rotate on the Y axis. There would be a gun mounted to it which would rotate in the X axis. This rotations would then be mapped to Unity in order to have an accurate crosshair. Our hybrid take was that you have to actually rotate and aim in order to hit the enemies.
During our research week we discovered with some various tests that the dome was not as reactive as we had hoped. We had a latency delay of 2 seconds at the peaks. This is not something we could work with for a shooter, so we simply dropped this and came up with a new plan that still has our original concept.
Our concept was to create a deep sea shooter where you can shoot fishes, sharks, etc. for points. There would also be a high score table that had the top 5 best players. According to our research the game had to be skill based. So there should be no luck involved, at least not game breaking / winning luck.
Our final concept was to create a deep sea arcade cart shooter where you man a physical turret which you can control through by using the buttons on it.
In order to know how to create an arcade game with the right vibe to it we had to go to an arcade hall in order to play plenty of arcade games. Perhaps we could find some patterns and if possible we could also interview some of the workers over there to gain some valuable insights.
Prepared with a couple of interview questions we went to Game State. We immediately noticed the flashy machines and vibrant designs. We were also curious about the monetization model and the "fairness" of the games. Apart from the gambling machines literally everything is skill based. So we had to ensure our game was also in a similar scope.
The machines are also placed based on how much space is there. There is no strategic placements for machines. We also learned that most of the people that work there are also arcade gaming enthusiasts. If it wasn't for the lock down they were willing to play test our game for valuable feedback
After digesting the information from an arcade hall it was time for the second part of the research; the submarine. We wanted to know what a submarine cockpit looks like and what buttons, screens, etc. it has and for what purposes as well.
With this part we realized that an arcade shooter in the deep sea with possibly some horror vibes would be the perfect take on this project. This was near the end of the first week, in which our concept was getting it's final shape before we could start production. Subnautica was a big inspiration point for us.
We were very keen on having a solid immersive experience. It was important that the player is able to look around freely. We did however want to contain the player in boundaries so that we didn't have to design every single spot on the map as this would be very time consuming for the little time we had left. So we settled with the game being a cart shooter. The submarine basically follows a path and the player can look around in the windows while having control over a turret to shoot torpedoes.
We wanted to create a physical turret as well that makes use of Arduino which then is linked to Unity. We wanted to give the player the feeling of actually shooting and looking around.
Arcade hall reference (GameState)
Submarine reference (Google)
Physical turret reference (Pinterest)
LORE AND DATA
We had a little and simple story for the game. You are a deep sea researcher that is equipped with a modern submarine. This has access to an advanced radar that can detect hostile fishes as well as dead hostiles.
It also detects how huge an enemy can be and shows this on the radar as well. The researcher knows that the environment has been attacked and damaged by something huge... Something that lurks in the deep sea.
We had various play test sessions in order to ensure that we delivered the right feeling. An important aspect in our opinion was that an environment should feel hostile or scary based on the environment itself, not jump scares or anything like that.
Our research quickly confirmed our idea that adding sharks would quickly make the players feel on edge. We did discover that leaving sharks away in the kelp segment resulted in the overall environment feeling a lot more scary, but also more boring. So we choose to keep the sharks over there as well. The unknown is what made it scary.
The documentary is orientated towards our research data and was also a part of the assignment we were given for the 4 weeks that we had.
Since we were a team of various specialists we ensured that everyone was able to focus on something that the person wanted. Amber was responsible for 2D elements and the physical turret (aesthetically). Liselotte was responsible for the world building, level design, and the boss. Floris was responsible for the game feel, level design, and game mechanics. Caspar was responsible for the boss (technical), shaders, and post processing. He also did the rigging and animations from the boss. Yannick was our Arduino expert and responsible for the turret (technical) and the implementation in Unity.
I was the project lead and was responsible for the planning, communication, and more. As a developer I was responsible for making universal systems that allowed all the devs to work independently on their own systems while being able to communicate with the systems of the other dev without knowing what their system actually does. For example they just need to know that a bullet has hit a fish. I also made use of a boids system that I created in the past for schools of fishes. These were linked to carts so that they could move as a school. I made sure to make it a design friendly tool so that anyone could easily implement fishes if they wanted with unique behavior by tweaking the settings.
Sharks were also a part of the game which I created. They used the state machine that Caspar had written for the boss in order to patrol and attack. Together with Caspar I also fine tuned the post processing. Per environment I made sure to place triggers for audio switches, post processing volume blending and more.
Together with Floris and Liselotte I fine tuned the paths the fishes and sharks were following as well as placing them in the world. We purchases an asset pack for the world so that we didn't have to create all the models from scratch. This was a massive time saver.
All of the group members were responsible and a part of play testing, A/B testing, etc. Lastly I worked together with Amber and Liselotte for the trailer.
Since we had 3 developers it was very important that there were coding standards and clear guidelines. We made a basic C# file that had all the rules that we had to follow for the coding standard such as naming conventions, short hands, and more. This resulted in pretty much no refactoring time since all the code that was written was quite efficient, and most importantly, clean.
The funny thing was that at the end of the project none of the developers knew what the other dev had specifically done. We did know that for example I made the sharks and the fishes, Caspar made the boss, and Yannick got the turret functional... how we all did our tasks? No one knows, well except for the person himself. This was due to my powerful EventSystem.
I made a very generic event system that invoked events whenever and where ever. Everyone could then basically hook to an event in order to trigger their functions when the conditions were met. For example when Yannick presses a button the Arduino should tell Unity to invoke the shooting event. My functionalities know that when this event is invoked that it should shoot a torpedo. Since we had clear rules and communications we really did this part well.
Similar to the event system I also made an Audio System. This basically can be invoked by anything at any point and just requires a position and the type of audio that should be played. It then plays a sound effect at the given position and handles everything else. It makes use of object pooling in order to be efficient with the memory.
Another big system I made was the sonar system. This system showed all enemies in the vicinity of the player as dots on a sonar that is accurate distance and size wise. This was done by rendering dots in a very far distance based on the player orientation. These dots had a size based on the size of the fish they represented. If their state was dead then they would be a blue dot indicating that the danger no longer exists.
In the final UML we were all surprised with how the systems looked like and how they were linked. It was a massive cluster of events on the same level, but it was satisfying to see. The pink part was my section, green / mint from Caspar, and the orange section was from Yannick. You can view the UML here. You can also find the project on my git as it is public.
TASKS AND PRODUCTION
After all the systems were made and the project was slowly coming together we made some screenshots in the editor so that you can see everything such as the paths that were being used by my systems. The triggers, the volumes, the shaders, and much much more!
The cubes are triggers and can only be seen in the edit mode.
In our final setup we had 3 monitors that were each set 70° rotated from the center monitor. In the middle we had the physical turret. The player had to actually use the turret to look around and aim. The shooting was done with the buttons on the turret.
We also wanted to add an ammo indication on the turret as a led ring. This however made the Arduino short circuit a lot. We also wanted to add solenoids for recoil, but with this the same thing happened.
In the final setup we had a switch for toggling the submarine on and off, 2 buttons for shooting and 2 rotary sensors for the X and Y axis rotations based on the turret rotation and tilt. The rotary sensors were unfortunately not that strong, but our idea was there and we were very happy with it!
We also were a very positive and highly motivated team. Working together with this team was a very satisfying experience.