• Register

Ahoy, Matey!
Driven by the Age of Sail - Sails of War is an action-heavy, fast-paced, combat-game offering a fun and exciting experience of team-based multiplayer combat!
Powered by Unreal Engine 4, Eight players take control over various types of ships with the goal to outmaneuver and sink the enemy ships of the Coalition or Pirates.

  • View media
  • View media
  • View media
  • View media
  • View media
  • View media
Post article RSS Articles

Sails of War Blog Header 8

Tobias here - Programmer for Sails of War! It’s been a while! In December we shared footage of basic multiplayer online gameplay and explained the designs and goals of Sails of War. We’ve both been rather busy, with Lukas moving, and other personal reasons impacting our work and timeline quite a bit.

However, we have been working on Sails of War with what time is available. In this blog, as mentioned in the last, we’ll be primarily displaying and explaining buoyancy mechanics but also delve into what’s happened since that last blog post. A lot has changed!

Buoyancy is one of the cornerstones of Sails of War, affecting the player’s ship on more than just a visual level. This system affects a number of aspects of the gameplay in Sails of War. It both adjusts the ship’s position & rotation, affecting not only aiming cannons but also altering the ship’s movement and speed. Buoyancy has now been implemented into Sails of War. More than a month of brainstorming, research, design testing, and prototyping was done before a completed system was fully laid out. We’ve looked at various examples of buoyancy that been demonstrated and discussed by the phenomenal Unreal Engine 4 Community. Unfortunately, none of these projects could be adapted or used effectively in an online capacity or integrated into existing systems. Thus we decided to design our system for buoyancy and wave interaction internally with some inspiration from some of these projects. Since December we’ve come from a static ocean with no effect on ships to a dynamic, customizable, scalable, and modular ocean whose settings are used to calculate both buoyancy and rotation.

A mathematical formula is used to obtain the height of a wave at a specific point in location and time. We’ve rewritten the Gerstner Wave Ocean Material from scratch to match the same formula in code allowing the calculations and visual aspect to be identical and function independently of, but synchronously with each other.

After obtaining the wave point it is used (and many others around the ship’s hull) to calculate the upward velocity of the ship. Currently, the formula and calculations are simplistic and are not actual buoyancy calculations. Rather as of right now we look at the current frame of the game compare the difference of the wave heights from that and the previous frame. Then add the difference to the velocity of the ship while factoring in immersion at that point. Once several other systems have been fleshed out this will be revisited and expanded upon to incorporate a more realistic calculation for buoyancy while ensuring that the result is fun but believable. Below is the debug visualization of the ship’s buoyancy. What is shown is the buoyancy points surrounding the ships hull forming an outline, the interior triangles, and the surface normals of the triangles. As well as the origin point of the ship itself.

Sails of War Buoyancy Blog Visualization

We adjust the ship’s roll and pitch after reading the wave height by utilizing a mathematical formula. This formula is used to calculate immersion, basic forces, and the surface normals of triangles that make up an outline of the ships hull at the waterline. These angles are then adjusted based on immersion of the triangle, combined together and averaged. Once this is done it is compared to the current rotation. From that comparison, we obtain the new rotation rate for the next frame by using values unique to each ship that create different results and behaviors. The result of all of this is a believable, smooth and adjustable system for rotation:

Most Importantly we’ve worked with Epic’s built-in replication system, adjusting parts of it slightly to get this system working in multiplayer without any issues with 8 players! Down the road optimizations will be made to the movement replication system for performance and bandwidth optimizations. One of the most important optimizations will be making pitch entirely client side, as it is only dependent on time and location.

In the future, we will incorporate more advanced mechanics and depth, pun intended, that the effects of Buoyancy, Waves, & Ship Design have on the movement of the ship. The speed of the ship being affected by whether the ship is going up or down over a swell, wave impacts, ship righting, and actual buoyancy formula calculations are several of the mechanics under consideration and design right now.

Other adjustments have been made. We have added an elliptical orbit for the camera as shown in this diagram:

Sails of War ShipCameraOrbit Diagram

When rotating the camera around the ship the player now follows a similar path to the elliptical shape of the ship itself, rather than being far away from the ship when looking at the left or right broadside.

Elsewhere we’ve been rather busy with under the hood overhauls of several systems. Weapon firing, reloading, changing and tracking ammunition has been entirely redone. This will allow for better performance, management, and expansion of the system if needed. The movement has also been redone entirely from the ground up to support buoyancy and rotation. We’ve also been rather busy quashing bugs and issues within the game itself. This has led to various other systems being redesigned, adjusted or replaced. From here on existing systems will not need to be completely overhauled or redesigned, everything from here on out will be new or expanded content or systems!

Stay tuned for images of the Frigate! Next up is the Ship Combat Milestone! We’ll explain and demonstrate not only aiming but also the various systems centered around combat including the effects of certain projectiles hitting specific areas of the ship, the causes, and types of sinking, damage resulting in flooding, flooding resulting in listing, the potential for fires to start, repairing and minimizing damage, and much, much more!

If you wish to read more about Gerstner Wave Calculations there’s a great article written by NVIDIA, which you can find here.

Special thanks to Unreal 4’s Ocean Community Project for its open discussion of ideas and implementations for buoyancy. You can find the forums for this project here.

Another amazingly detailed and in-depth set of articles are written by Jacques Kerner about his work on Just Cause 3’s Buoyancy and Water Interaction System. You can find them here and here.

Don’t forget to join the discussions on the offical Sails of War Discord. You can also follow us on Twitter and YouTube.

Thanks for reading, until next time
- Tobias

Online Play and Important Milestones - DevBlog #7 - Sails of War

Online Play and Important Milestones - DevBlog #7 - Sails of War

News 1 comment

Just before the end of an exciting year, we are finally able to share gameplay and more importantly online play with you. Including a video, in this Blog...

Good News, Updates and more - DevBlog #6 - Sails of War

Good News, Updates and more - DevBlog #6 - Sails of War


A couple months of hard work, coming updates, news and game ready Ship models.

All done and painted - DevBlog #5 - Sails of War

All done and painted - DevBlog #5 - Sails of War

News 5 comments

After more then 5 months of hard work we are finally ready to show some ingame screenshots!

Only missing paint - DevBlog #4 - Sails of War

Only missing paint - DevBlog #4 - Sails of War

News 1 comment

We explore the 3D model and process of creating a ship, and also look into the future and texturing workflow.


So, another Naval Action sort of speak?

Reply Good karma Bad karma+2 votes
PortsideInteractive Creator

Naval Action is all about simulation. Our game has more focused on a fun multiplayer experience. Sails of War will in many ways be easier and less complicated - less boring in places. Start the game, drop in a match, have fun.
I'll have a blog post about gameplay in the near future; keep an eye out for it.

Reply Good karma+1 vote

Damn, ship games are the real focus of indie games lately. Not complaining, ships are my favorite thing to make :)

Reply Good karma Bad karma+2 votes

Ich habe mich gerade durch die Bilder geklickt und die Infos gelesen. Einfach nur wow. Sieht schon jetzt verdammt gut aus. Bin schon echt gespannt, was weiter kommt ;-)

Reply Good karma Bad karma+2 votes
Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.

Follow Profile
Sails of War
Send Message
Release date
Game watch

Latest tweets from @sailsofwar

Drifting and fast turning movement in Sails of War!@UnrealEngine #UE4 #UnrealEngineT.co

Jul 27 2020

Splash! Full Buoyancy in heavy seas! @UnrealEngine #UE4 #UnrealEngine #IndieGameDev #indie Follow the development… T.co

Apr 7 2020

Splash! One step closer to full Buoyancy - with gameplay impact on ships and guns! @UnrealEngine #UE4 #UnrealEngineT.co

Mar 3 2020

The video below depicts a buoyant force being applied to each submerged triangle and summed without any dampening w… T.co

Feb 23 2020

Final steps for a per triangle-based buoyancy system before applying forces - Waterline intersection of the partial… T.co

Feb 6 2020

RT @StratmannLukas: Proud to share this and proud to share it on @EightyLevel T.co

Jan 29 2020

More steps towards a more advanced buoyancy system: Per vertex plane projection onto the water grid to get the dept… T.co

Jan 28 2020

Steps towards a more advanced and accurately based buoyancy system: a wave height grid used to approximate the surf… T.co

Jan 21 2020

RT @StratmannLukas: Lots of @UnrealEngine Materials made for this one. Background Art Pipeline for @SailsOfWar up and running. Performa… T.co

Jan 19 2020

RT @StratmannLukas: **WIP** Exploring different Foliage Materials in @UnrealEngine. Unlit. Cuts down Lightbake time drastically (obviou… T.co

Nov 25 2019

Embed Buttons
Link to Sails of War by selecting a button and using the embed code provided more...
Sails of War
Last Update
57 members
You may also like