• 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.
Sailsofwargame.com

  • 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

News

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.

Comments
Hrocker
Hrocker

So, another Naval Action sort of speak?

Reply Good karma Bad karma+2 votes
PortsideInteractive Creator
PortsideInteractive

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
MrEmjeR
MrEmjeR

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
eniex.at
eniex.at

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 Report Profile
Icon
Sails of War
Platforms
Windows
Contact
Send Message
Release date
Game watch
Follow
Share
Style
Genre
Arcade
Theme
History
Project
Indie
Twitter

Latest tweets from @sailsofwar

Watch and read our latest Blog Update. Replicated Buoyancy and many more improvements! @UnrealEngine #IndiegameT.co

May 13 2019

RT @StratmannLukas: Missed our first @SailsOfWar video DevDiary? No worries I got you covered: Youtu.be #UnrealEngineT.co

Dec 12 2018

RT @StratmannLukas: Late night #UE4 Gerstner Wave Fun: Setting cos and sine period to 2π in the material to make it match c++ code. #UnrealEngine @SailsOfWar

Dec 10 2018

We are excited to share, including a video, this important milestone: Indiedb.com via @IndieDB @UnrealEngine #ue4 #Screenshots

Dec 9 2018

Teased a video coming soon back in August. It's coming soon - promise! T.co

Nov 15 2018

RT @StratmannLukas: Amazing reference images for future VFX work on @SailsOfWar cannons! Thanks @smartereveryday - truly awesome video… T.co

Sep 28 2018

Latest Sails of War DevBlog: Indiedb.com via @indiedb @UnrealEngine T.co

Aug 12 2018

RT @StratmannLukas: Sails of War - Dinghy. Detail for our Cutter ship via @artstationhq Artstation.com

Jul 27 2018

Last month @UnrealEngine and @NVIDIAGameDev selected us for their Edge program. Super stoked to find this… T.co

Jun 28 2018

Embed Buttons
Link to Sails of War by selecting a button and using the embed code provided more...
Sails of War
Statistics
Last Update
Watchers
57 members
Articles
9