
February 2023 - Ongoing
Single Player | Top-down | Adventure
All assets & coding created by Kevin Kincaid
Salty Seas is a top-down, third person adventure game. The game is set in a fantastical version of the Age of Exploration. Players must navigate through the treacherous waters and dangerous pirates surrounding different islands in order to deliver cargo to complete their contracts.
I began developing this game in my system design course at SCAD. The core focus of development was to create a system that simulates water conditions and a navigation system that relies on players adjusting individual sails and the rudder to travel across the ocean.
Development Process
Initial Concept

The initial assignment for the course was to come up with ideas for three different game systems: a gameplay system, a development system, and a generative art system. For the gameplay system, I concepted an idea for a sailing system that incorporated aspects of real life sailing. Players would have to account for water currents and wind direction when sailing. To keep the calculation cost down, the system would rely on a tile-based grid to determine current.
The sailing system was the most well received prototype, so I began to flesh out the system. The main goals was to deliver a fun and effective sailing mechanic that was relatively simple to understand. I planned out the coded system that would need to be created in unreal, and then broke down the concept into a roadmap. The four main sections were: the water tile grid & controller, the navigation of the boats, wind currents, and the optional hazards. The overall plan can be seen below.

.jpg)
Paper Prototype
Before beginning development on the Unreal project, I created a paper prototype of the system. The goal was to demonstrate that this system could function, and search for any weaknesses in the system. This consisted of the tile grid, a single boat with a rudder and sail, a chart of wind directions, and a counter to track the time of day. Each grid piece had a direction & water speed, and the column had a letter above which related to the 'wind zone' it belonged to.



Turn goes as follows:
1) before moving players can adjust the boat. The rudder could be adjusted by 45 degrees, and players could do the same with the sail. They could also raise or lower the sail.
2) The boat moves based on which tiles the hull points occupy. Each hull point tries to move according to the movement information on the tile, and the overall
movement of the boat is a rounded average.
3) The boat is rotates based on the rudder compared to the direction of movement.
4) If the sail is active, the player looks at the wind chart. They find the current time and the tile section letter. If there is a wind current, the boat moves accordingly.
5) the turn ends, and the time counter moves forward by 1.
The paper prototype worked well. It demonstrated the system, and was understood by the other reviewers and professor. There were some slight problems with the boat getting pulled perpendicular to the current rather often, but it seemed this was related to the integer based nature of this current system. Given that the digital version would have the calculations occur more often, this would not be a lasting problem.
Digital Prototype
From the paper prototype, I began developing the digital iteration. The majority of the system was the same, although I now had to take into account some of the aspects of continuous calculation of movement. Much of the time was spent in setting up the data structures and functions so that the water tiles could pass information efficiently to the boat. Additionally, there were some features added. Each tile had a 'depth' level, and when the water fell below a certain point based on the time of day, it would turn to sand and boats would run aground on it. Boats could also drop anchor in order to hold their position intentionally. Another aspect added was 'boat stress'. If the player put too much strain on the boat from steering into the wind, the boat would sink. This can be combated by dropping the sail to allow the level of strain to reduce.
After completing the core system, I went back and added elements later on the road map. These primarily consisted of hazards. The most basic was rocks, which would damage the hull if the player collided with them, and push the player away. These were also adapted into the shoreline. More complicated were the ocean hazards that affected the wind & water currents. Three were programmed into this version: A straight, a whirlpool, and a storm. Both the straight and whirlpool can be moved around the map in-editor, and will update the water currents around them to match the intended motion. Storms will do this as well, but also maintain a wind current that follow their direction of travel. Storms can also be attached to a spline based path that will move them around the level as time passes.
Salty Seas Version 1
One last element added was the cannons, which was more for fun and theming of the system instead of directly adding to the project intentions. Overall, I completed all elements of the intended roadmap, except having larger and more complex boats.
Next Stage
Following completion of the class, I continued working on the project. There were several improvements I wanted to make. The first was relating to the ships themselves. The sail and rudder were already sepearate actors, but the current design relied on a single type of boat. I redesigned it so there would be a parent boat class and child boat actors. When placed in the level, the boats will spawn and attach the necessary actors based on their 'ship schematics'.
Having a more complex system required a new control scheme. Now instead of one set of keys always referring to turning the sail and the other connecting to the rudder, the player can change the active element and control it specifically. Left/Right keys will turn the current element, and space will cause a change such as firing the cannon or lowering the sail. Plays can change elmenents with the up and down keys or by clicking the schematics in the top right.

.png)
After building the new ship system, I added a control system based on who controls the ship. Setting a ship to 'pirate' mode will have the ship wait in location for the player ship. When the player passes within range, it will raise the anchor and begin to follow the player. Cannons will also shoot at the player. There are a couple other ship modes, such as 'civilian' which follows a set course, and 'navy', which will pursue pirates instead of the player.
.png)
.png)
.png)
.png)
This version was developed with the goal of submission to SCAD's study Entelechy competition, which was achieved on time. As such I worked to make it more of a game, and have specific goals. This came in the form of cargo. In each level players must either deliver certain amounts of a type of cargo, or earn a certain amount of gold. Ships have different amounts of cargo slots. When they reach port, they can open the trading panel, and sell or buy items. Destroy enemy ships also releases cargo boxes into the water, which players can collect.
Since this was intended to be a playable prototype, I also added a menu, instruction screen, and worked to improve the visuals to a more professional state. This included replacing the arrows indicating water current with particle systems that produced waves.
Ongoing Development
Although the Entelechy submission represented a major improvement, the game is still very much a prototype. There are multiple elements to the system that still need to be created, both on the developer side and for better gameplay. I will continue to develop this system, and hope to have the next stage completed by the beginning of July.




