Oceanair
By Team Fresh Water
About
Oceanair is a 2D tactical turn-based strategy game made with a custom game engine. Players would play as soldier teams having the mission to eliminate the sea monsters while exploring deeper underwater to find out the source of the monster that attacks the world.
Project Info
-
Role: Producer, Gameplay Programmer
-
Team Size: 7
-
Time frame: Fall 2021 - Spring 2022
-
Engine: SDL(C++)
-
Repository: Github, Sourcetree
Game Trailer
Introduction
This project is a GAM200 project and we need to create our game engine from scratch instead of using pre-made engines like Unreal or Unity. Our team decided to use SDL(C++) as our render engine for our game project. We spent the whole of Fall 2021 planning and creating systems and tools we need for our game engine. Then, we use the engine to put assets into the project in Spring 2022.
Game Engine
Since we have to craft the game engine ourselves, we need to plan/design the data flow of our engine to be the most organized as possible. As a producer and technical director, I worked on designing our engine system with all the features we should have to make the tactical turn-based game. Including UI Manager, GameObject, SoundManager, and Rendering animated 2D sprites.
In order to work with both the designer and artist team, I need to make a system to allow them to work with. And since our game is a tactical turn-based game so I wrote a Tilemap setting system that will go read thought the Excel file to getting the data designer and artist team assign not only the map but also character status for game balancing.
Not only Object class as a base class but I also create a great engine system for comminicate throught all class in the game. With all these tools we have we could easily complete the project and filled it with content we want.
Gameplay
After we built our game engine, It's time for us to use the tools we craft to create the game out of it. Even though, I spent a lot of time working on the game engine, I still can delivered multiple main gameplay mechanics and cool feature to our game to make the game unique and enjoyable.
-
Enemy Pathfinder using A* algorithm
Since our game is designed to be PvE, we need to have a behavior for the enemy and pathfinding to find the player's units. I implemented an A* search algorithm for them.
-
Character class and skill
To increase the variety of the game, I also implemented each soldier unit to have a signature skill to help the player in different ways. Each skill has different mechanics including;
-
Restoring unit HP
-
Buff Increasing unit attack accuracy
-
Restoring O2 to all nearby units
-
Exploring a huge area once
-
Line of Sign
The game is planned to have a little bit of horror and the player needs to explore the path carefully. On top of the A* algorithm, I implemented Dijkstra to check and scan the area in the map.
-
Boss Behavior
To complete the game with a proper satisfying grand finale, our team came up with a unique and challenging boss behavior that was implemented. The behavior includes;
-
Huge hitbox
-
AOE attack
-
Multiple attacks per turn
Other
-
Combat Damage Indicator
Since we need a valid combat indicator, I show the percentage of attack hits and how much the enemy is going to hurt visually.
-
Speed Optional Setting
Since we need to continue working on the previous group code, I need to refactor the code so our team can work on it separately.