Time: 4 weeks
Team Size: 14
Engine: Unreal Engine 4
Try the game!
Some of my teammates
The project was quite fun, but we had some major communication issues. With 4 game designers that barely talked with each other the rest of the team got quite confused. Because of this lack of communication between almost everyone had their own “idea” of what the game was supposed to be. And we overscoped so much. So much was cut in the end, and we were overworked. A few of the mechanics I still don’t understand to this day. Such as the “heartbeat” mechanic. And, I noticed that a few of my fellow team members didn’t fully understand it as well. The team itself was quite dysfunctional, we argued quite a lot and a some people just wouldn’t listen to feedback.
In the end, I got few clownfish in the start area. And some funny looking jellyfish in a later section of the game.
What I’ve learned during this project:
- How to use splines in UE4
- Really explain why certain things needs to be cut
- Material Manipulation in blueprint and C++
Bahari is an atmospheric single player adventure game with focus on exploration and photography. The main character is a free diver whose passion for photagraphy will take you on an underwater adventure to explore the beautiful depths of the sea. With his trusty camera in hand he sets out to discover a hidden treasure in the depths. The atmospheric underwater enviroment, and the lack of enemies produces a relaxing and calm experience. As a free diver he doesn’t have an oxygen tank, which means he has to keep track of his oxygen level. Bahari is a tribute to nature and a depiction of a sea life that may not exist in the future.
As a feelgood game, Bahari doesn’t have many mechanics and if the player wants to, they can just swim around and photograph fish. However in order to actually complete the game, the player must find 6 stone tablets that are hidden in the game and photograph them. There are underwater currents that forces the diver to move in a certain direction, and some fish may swim in odd behaviour that might indicate something imporant. The most important mechanic is the oxygen level. The oxygen will slowly drain, by swimming through bubbles the player can replenish their oxygen. Another method is “To beat your heart”.
During this project, my primary task was the background fish AI. Not all fish in the level were made by me, a designer made some fish AI as well in blueprint.
It was my first time creating a real AI, which was a real challenge. The first two weeks was spent just trying to get a Boids algorithm to work. We wanted the fish to feel realistic. But I couldn’t get Boids to work so I had to simulate a similar behaviour. In order to solve the problem I used splines. I learned how to use splines and designed a system that the designers could use. Once the fish swam along the spline, they didn’t seem too “alive”. They all swam at the same pace, the fish material was moving at the same time for every fish on that spline.
A big part of the fish AI was that they were supposed to flee if the player got too close to them. I did that by creating a manager for the fish, which contained a “flee box”. So once the fish entered their flee state they would swim to that box, stay there for a few seconds and then swim back, continuing their patrol.
After a few iterations the fish had their own spline created from the original spline but with the different points was chosen within a radius of the original point. They moved differently, but the material still moved identically on all the fish.
So, in order to fix that, I worked together with one of our 3D artists to help me understand how the material worked. By creating a copy of the material, the fish could have their own movement speed on the material. I am quite happy with the end result, but I would probably try to do it some other way today.