Developer Blog – Improving Sailaway’s Ocean Height Map Accuracy

Hello Pioneers,

This is Richard Knol, the developer of Sailaway. I’ve been behind the scenes more recently as I have been busy working on some big changes to Sailaway. The biggest of these tasks has undoubtedly been improving the accuracy of the map data so I thought I’d give you an insight into this process in my first developer blog!

Sailaway’s Map Data

The Sailaway maps are all rendered in real time based on the 3D model of the world that is stored on the Sailaway servers. This model was made with data from NASA and a few other sources and it holds the height of the terrain or sea floor at any location in the world.

There are a few issues with that:

  • The NASA data only provides the height of the land, not of the sea floor. It also contained measurement errors and it has a resolution of about 10m2, 30m2 or 240m2, depending on the area.
  • Most of the underwater height maps I found only have a resolution of about 240 meters
  • The underwater data I found and could use is inaccurate and incomplete with regard to coastal waters
  • Not all data sources use the same corrections for the fact that the earth is not a perfect sphere
    So all in all a rather depressing list of issues when you want to run a worldwide sailing simulator.

Luckily there are nautical charts available that give more accurate info about water depths and much more. But charts are 2D and Sailaway uses a 3D model. Basically, a chart tells you that there are regions colored light-blue where the water depth is 0 – 10 meters, and regions in another shade of blue where the water depth is 10 – 50 meters. But what happens in between?

Following that data strictly would turn the entire seafloor into a giant staircase. Additionally there are soundings on those maps that give the exact water depth at a certain location. But they don’t say anything about if that point is a peak with a steep slope or a single measurement on a horizontal and flat surface. So here’s what I did to improve the Sailaway 3D model with the US Electronic Charts as provided by NOAA…

Deciphering the data

First the charts were downloaded. All 1280 of them. Next they needed to be read, or rather deciphered. The format in which they come is called S-57 and it was defined by the International Hydrographic Organization decades ago. It dates from the days when computer scientists tried to write data dictionaries and press various record types into a highly efficient binary format. A time when JSON and XML were never heard of yet! So I deciphered the gibberish and extracted the data that I needed for Sailaway and pushed that into a JSON format. This was several weeks work, but in the end I had a neatly organized collection of 1280 JSON files and
1280 small overview images of the actual charts.

The US charts come in 6 levels. At level 1 there are large overview charts, building down to level 6 where a specific port is shown in high detail. I wrote a program that would process each of these maps starting at level1. It would download a section of the Sailaway 3D model, match the Sailaway depths/heights with the data of the chart and make the necessary corrections.

Unfortunately that technique didn’t work, because it would create a staircase seafloor after the depth regions of the chart are applied. And it would litter the seafloor with spikes or pits at the locations of the soundings in the chart.

So instead I used the charts to verify our own data and make gradual adjustments where needed. If the chart says the seafloor depth is between 20 and 200 meters, and Sailaway has 20.5 or 198, I leave it untouched. If the Sailaway model says 18 meters, the floor is lowered and also the pixels around it are lowered gradually to smooth the sea floor. This way I kept as much of the shape and structure of the seafloor intact as I could.

Then there was the problem of turning land into water or water into land when the coastline would not match the chart. Turning water into land without any information on what this land would look like will result in ugly terrain. There is no fix for this. Sorry.

Implementing the data

So now that the algorithm seemed to work (again a few weeks work) I could put the computer to work. Starting with Level 1, here is how the numbers look:

The Sailaway model is made up of 0.25 x 0.25 degree tiles. That means (360 x 4) x (180 x 4) = 1,036,800 tiles. The tiles have a resolution of 900 x 900 pixels. Each pixel is represented by 2 bytes. That means 900 x 900 x 2 = 1,620,000 bytes per tile. Times 1 million tiles is 1.5 TB of data, or 800 billion terrain heights.

To process 1 chart of Level 1 (typically a region of 20 x 30 degrees) took about 2 days to compute.

In the meantime, I read and imported all the buoys, lights, rocks, shipwrecks and other vital information from those charts into the Sailaway database. This resulted in 120,000 new objects all along the US coast.

So my computer was humming and after many days, when it was already processing the charts for Level 3, I discovered a stupid mistake. Imagine a tiny volcanic island somewhere. A beautiful thing in the Sailaway maps, where you can see the slopes and the crater clearly. But this tiny island is not big enough to have made it on the Level 1 overview charts. Instead it falls in the big area indicated as 200-2000 meters deep. After processing the chart, the entire Island has vanished and has been turned into 200 meter deep water. Of course when the charts of level 3 are processed the island is reinstated, but all of it’s characteristic volcanic shape is gone. It is now a flat surface a few meters above sea level.

As a result, the algorithm had to keep a copy of the original shape at hand. And every time it wanted to alter the current height of the land or sea floor it had to refer back to the old data and see if it could use any of the original height info to recreate some of the original shape of the terrain.

The algorithm was started again from scratch. And after many weeks it is now ready with correct calculations. Yay!! The result is a more accurate seafloor, and a very ugly coast. The last is because after processing the 2D charts, a pixel is either land or water. Imagine a nice coast with some rocks, some distant mountains, small pebble beaches between the rocks. The chart may have drawn a line over that coast, dividing it into land on one side and water of at least 20 meters deep on the other. The result is a coast of steep cliffs, that plunge into 20 meter deep water. The pebble beaches are gone, and because of the size of the pixels the coast looks like a horrible collection of zigzag cliffs.

To fix this, or at least make the coast look somewhat more realistic, is my challenge for the coming weeks. Wish me luck!

Ongoing may improvements

I started work on these map improvements early August. It is now the end of October and I am not done yet and this was only the US coast! The European and Australian coast will be even more challenging. But it is great fun to work on this and see the maps improve. Sailaway becomes more mature with every step we take.

I see players asking for more detail in the terrain often; for ports & marinas, and even trees and buildings. These would be awesome to have, I fully agree. But when you realize that the current work in progress coastline, made up of 10 x 10 meter pixels, already measures 1.5 TB of data. Just imagine the amount of data required when this includes the rest of the world! All that data has to be collected, processed, checked, maintained, refined and find its way to your computer somehow… don’t forget, Sailaway is a persistent online world.

The world is a really big place and I hope that the process behind how I implement this accurate data has become much clearer. Please do not expect the same level of terrain detail in Sailaway that you see in other games. They do not have to carry the weight of the world with them.

Thank you to all of you who have joined us in early access and support this project! I’m sure you can see from the process above, this is a passion project for me and I’m thrilled to see so many people sailing the seas I’ve created.

– Richard Knol, creator of Sailaway.

Sailaway Update V.0.9.018 – Bug fixes for multi-crew issues

Hello Pioneers,

There have been some wonderfully detailed posts on issues found while trying to multi-crew a boat in Sailaway, these have enabled us to narrow down what is causing them and deploy some fixes. Thank you as always, we have a wonderful community.

This update makes the following changes/fixes:
  • When the boat owner logs off another member of the crew should now seize control of the boat faster.
  • Boats would continue to steer towards the heading set first but they should now update according to any subsequent adjustments from other crew members.
  • Teleporting a boat should no longer leave the crew behind at the previous position.
  • During a race marks should no longer only detect the owner of the boat, it should detect all crew members.
  • All crew members now get mentioned in chat announcements regarding that boat.
  • All crew members will now receive the badge for the race or challenge they are completing.
In addition to these multi-crew fixes we have also adjusted:
  • The previous boat speed restrictions in high wind have been revised.

Any kind of networking related issue is hard to track down so please do report back to us on the forums regarding multi-crew performance since this update.

If you have a bug you would like to report, please follow the guide for ‘How to report a bug’ and post a new thread in the Bug Reporting Forum.

Happy Sailing,

The Sailaway Team

 


Sailaway Update V.0.9.017 – New music, audio and gennaker customisation plus some bug fixes!

Hello Pioneers,

Today we are adding more music to the game along with some new audio and customisation options plussome bug fixes.

Gameplay Music!

Created by Francisco Perez (who also created the main menu music) we now have music for when you are sailing. There are currently six tracks that play depending on the type of weather you are sailing in, from calm sunny days to exciting high winds!
We would love to hear your feedback on having music in the game, would you like more?
If music isn’t your thing or you prefer to listen to your own then you can turn this off by reducing the music volume to 0 in the audio settings menu.

New Audio

We have recorded some new audio for a few effects, there is new audio for the water, sails flapping and ropes being eased and pulled.

Dual Gennaker Colours

There are 4 new customisation packs that allow you to use 2 different colours on the gennaker like so:



Bug Fixes

  • Adjusted navigation lights to increase their visibility at longer ranges.
  • Other boats in your fleet should now travel again while you are online.
  • Adjusted the way map images are loaded to hopefully reduce the chance of them turning white.
  • The missing horn sound when completing a race is restored!
  • The large trench of water behind the boat has been smoothed out.
  • Dolphins no longer appear when anchored.
  • Boat speeds in massive storms were too high so have been reduced.
  • Foam near the boat was affected by boat shadow too much.
  • The Main traveler was operated from the wrong side of the 50′ cruiser.

If you have a bug you’d like to report, please follow the guide for ‘how to report a bug’ and post a new thread in the Bug Reporting Forum.

Happy Sailing,

The Sailaway Team

 


Sailaway Update V.0.9.014 – New boat, new tutorials, steam achievements and a few secrets….

Hello Pioneers,

This week’s update brings a whole host of new features!

New Boat

Introducing the new 50′ performance cruiser! This high-performance sailing boat is ideal for long range trips and racing at speed. It’s now available to sail in Sailaway!

New Features

You can now earn Steam Achievements! Some of them are retroactive too so make sure to start up the game and see what unlocks.

We’ve created 6 new sail trimming tutorials, these cover the following topics:

  • Curve depth – The theory behind having a flat or deeply curved sail
  • Curve position – The theory behind having the deepest curve at the front of your sail or more towards the centre
  • Top of the sail – The theory behind pulling the top of the sail closed or making it more open
  • Controlling the depth of the sail – Which trim lines to use to change the depth of the sail curve
  • Positioning the sail curve – Which trim lines should you pull to move the shape of the sail towards the front or the centre
  • Opening/closing the top – Which trim lines will open or close the top section of the sail

You might spot a few more additions, but you’ll have to find them for yourselves 😉

Bug Fixes

We’ve been fixing localisation mistakes over the last week so most reported errors should now be addressed.

Known Issues we are currently working on:

  • Race Buoys not appearing and race times glitching (we suspect these are linked). This one is taking a while to fix but we’re working hard to identify the cause.
  • Issue where other boats in your fleet sometimes stop sailing while you are online

If you have a bug you’d like to report, please follow the guide for ‘how to report a bug’ and post a new thread in the Bug Reporting Forum.

Happy Sailing,

The Sailaway Team

Unifying our forums

Hello Pioneers,

Sometime in the near future we will be making the Steam forums the only forums available to discuss the game and get feedback from the team. Running two separate forums makes life far more complicated than it should be and is leading to things getting missed or double information getting posted, having a single place for all this information should make the communication process between the Sailaway team and you (the players) far easier.

With everyone using Steam to play the game it makes sense to use the Steam forums, they also have less issues with spam and allow us much better moderation tools.

Apologies if this causes anyone any issues, please let us know in the comments below if it does.

Thanks,
The Sailaway Team


Update V0.9009 – Catamarans are now playable in Sailaway!

Hello Pioneers!

We’re pleased to be able to share the first new boat to be added to Sailaway.

Starting today, you can take to the seas in style with the new Catamaran. Modelled perfectly on it’s real world counterpart, the Catamaran features the iconic double hull design for extra stability in the toughest waters.

Put the new boat to the test in a race or just see how far you can travel, don’t forget to share your screenshots and stats with us too!

This update also marks the point at which the game is no loner playable outside of Steam. If you still haven’t moved your account across, here’s a handy guide to help you: https://www.sailawaysimulator.com/steam/

We hope you enjoy the new Sailaway Catamaran!

Happy sailing,

The Sailaway Team

Moving Sailaway to Steam

Hello Pioneers,

When we first decided to put Sailaway on sale we made the decision to both support the game via Steam and direct through a stand-alone installer so that we could cater for all potential customer types we might receive in the sailing and gaming world alike.

In theory this was a good plan but it has become apparent over the last couple of weeks that creating 2x PC and 2x Mac versions with every new release is both a lot of work and more importantly a slow process for anyone not on the Steam version.

Non-Steam users are all well aware of the frustration of having to download 3GB(PC)/8GB(MAC) versions each time we release a new version of the game, this current system is unwieldy for players and ourselves.  

Steam users however typically get automatic small updates of maybe a couple of megabytes due to how it only updates changed files, this is much faster for everyone involved and allows us to fix issues critical issues much faster.

So what does this mean? Well, after much discussion we have decided that it makes good sense to ask all players to move over to the Steam version of the game so that we can support and update everyone equally under one version of the game.

This means anyone that has so far purchased the non-Steam version of the game will be provided with a Steam key that will allow them to add the game to their Steam account and we are working to ensure that any current progress will be carried over once you start the game via Steam.

We need a bit of time to get all of this in place but thought you should know these plans ahead of time.

Steam has many great features outside of faster automatic updates, it also supports various community features such as sharing of screenshots, guides and has integrated forums that are all accessible while playing the game, if you haven’t taken a look already it is worth having a look at the Sailaway hub: http://steamcommunity.com/app/552920.

For any users who do not know what Steam is we would suggest you check it out at: http://store.steampowered.com/about/ and even maybe make a free account while you are there in preparation.  We will be providing a step-by-step guide on how you do this later so don’t worry if it doesn’t make sense to you right now.

As always your feedback is welcome, we know this could be a big change for some people so please do comment below with any thoughts.

Thanks,

The Sailaway Team


Patch V.0.9005 is now live!

Hello Pioneers!

We have a mixture of bug fixes and improvements for you this week. After taking part in the Back to Robinson’s Island race last week, we noticed that there were a couple of racing features that we could add to make it more fun to sail with a crew! Let us know what you think of these changes in the forums.

You can see the full list of changes in the patch notes below:

 

Patch V.0.9005

Fixes

  • Fixed chat focus being lost when the helping hand is working.
  • Sun rays are now blocked by land masses.
  • Sun rays should now be a bit less blue.
  • Small fixes to tool tip and waypoint behaviour.
  • Improvements to the map to reduce the white map issue.

 

Improvements

  • Improved buoy crossing detection.
  • When starting a race that allows offline sailing the game will now ask before replacing existing waypoints.
  • UI should now hide when you take a screenshot ingame.
  • Voyage waypoints are now auto-saved quicker.
  • Enhanced the water level computation algorithm which should make the boat less prone to dive underwater in heavy waves.

 

New features

  • Sailaway Dev Team members will show up with green text in the chat.
  • The map now shows all boats in a race regardless of them being online or offline.
  • Players now need to raise sails 5 minutes before the start of a race. This prevents players from cheating and getting a head start.
  • Added a Race chat channel for races, this chat is persistent so you can see what you have missed.
  • You can now mute a person from all channels by clicking the minus sign in their direct channel.

Thanks for the continued support!

Happy Sailing,

The Sailaway Team


One day to go

Today is April 24th 2017. One day before Sailaway becomes available to the public after 2 years of constant development.

Sailaway’s main ingredient is passion. It emerged from a passion for sailing and for sharing that experience. Sailaway isn’t just a collection of logic and data and physics. It has been written, changed, rewritten, redesigned and tweaked until it became a true sailing experience.

I hope that people will learn to sail, improve their skills, or just have fun on the water. But most of all I hope that people will catch the same fever that I have had since I was 10.

Enjoy!
Richard Knol

Save