Start | Races | Maps | Help | API | Code | Contact
SailNavSim
What is this?
SailNavSim is a virtual sailing navigation simulator where you can sail and race with your friends and others online. You can participate in anything from a quick race across a small lake or harbour, or sail away on a month-long ocean passage to another continent or to your favourite remote island. The simulation runs in real time, so sailing over various distances will take as much time as you might expect in the real world. Anyone can sail, and no account creation or personal information is required!
How to participate
In order to sail, you must either create a new race or join an existing race before it has started. Everyone joining a race begins with the same boat type at the same starting position and is subject to the same weather conditions at this geographic position when the race begins.
Quick start
A "quick start" mode is made available at the top of the main start page, where only your name (or alias) is needed as input. This will allow you to immediately start a single-player instance with some randomly chosen race parameters. To create a custom race, see below...
Creating a race
To create a race, fill out the form on the starting page with the following details:
- Starting position: Choose the starting geographical position coordinates (in decimal degrees, with negative values for south latitude and west longitude) for boats in your race. If the position is inland, it must be within 100 metres of water or boats will not be able to start. Typically it's best to choose a starting position on the shore or in the water just offshore.
- Finishing bounding box: Choose the ranges for latitude/longitude that boats must reach in order to successfully finish the race. This is done by inputting the decimal degrees of latitude/longitude of the southwest ("minimum") and northeast ("maximum") corners of the bounding box.
- You may also specify whether or not a sailor must reach land inside the bounding box in order to finish.
- Waypoints (optional): Create up to three waypoint boxes by providing ranges for latitude/longitude that boats must pass through on their way in order to successfully finish the race. This is done by inputting the decimal degrees of latitude/longitude of the southwest ("minimum") and northeast ("maximum") corners of the waypoint bounding boxes, in the same way as for the finishing bounding box above. Leave any waypoint boxes blank in order to have fewer waypoints (any from zero to three).
- Boat type: For every created race, a specific boat type must be chosen. All participants in the same race will be given an instance of this same type of boat. Each boat type has a distinct wind response profile (more details about this in the Wind response section below).
- Boat modes:
- Damage mode: Check this box to enable boat damage (see section on Damage mode for more details).
- Apparent wind damage mode: Check this box to enable boat damage calculations based on apparent wind gusts instead of true wind gusts (applies only when damage mode is enabled).
- Wave resistance mode: Check this box to enable wave resistance (see section on Wave resistance mode for more details).
- Celestial navigation mode: Check this box to enable celestial navigation mode (see section on Celestial navigation mode for more details).
- Celestial waves mode: Check this box to enable wave effects on the accuracy of celestial sights (applies to celestial navigation mode only; see section on Celestial navigation mode for more details).
- Hide live nearby boats mode: Check this box to turn off visibility of nearby boats when in live mode. Data from nearby boats will not be provided when in live mode.
- Race starting time: With the exception of single-player mode (which starts the race without delay), races do not begin immediately when they are created, rather they must start at some chosen time in the future, based on this setting. This is to allow other participants to join the race and prepare before the race starts. If the creator chooses to start the race "now", then this initiates single-player mode, and the "race" begins immediately.
- Position sharing interval: This is the amount of time between position reports from all boats being shared with all other participants in the race. Every sailor always has access to their boat's most recent report (within the last minute), however this information may be shared periodically at a greater interval, depending on this setting.
- Public or private race: Multiplayer races are made public by default, so anyone is able to discover your race and join if they want. You can also mark your race private by checking this box, so you will need to share your race ID with those you want to invite to join.
- Race description: A short description of your race, perhaps quickly describing the starting point and destination. If the race is not marked private, then this description will also be shown on the public races page.
- Private message to racers: A message to the race participants, which is visible to them once they have joined the race. This can include further details about the race, for example even instructions on how participants can find and join a dedicated chat (should the race creator be inclined to host this somewhere).
Joining a race
To join a race, you must know the race ID and also provide your name (or alias) for the race. The creator of the race (or another participant in the race) must provide you with this race ID, which is available to them once they have created or joined the race. Participants may join a race at any time up until the start time of the race, as specified by the race creator.
You can also join any race advertised on the upcoming public races page. The race ID is provided there for each public race that has not yet started and is accepting new joiners.
Controlling your boat
Controlling your boat requires no specific knowledge of boat rigging, or putting up and trimming sails; all you really need is a basic understanding about the directions in which you can sail relative to the wind. For all boat types, there are three primary control inputs for your boat:
- Steering course: The primary control you have is that of the steering of your boat. A numeric compass course (from 0 to 359 degrees) must be provided here. Your boat will steer this course as long as is practical based on wind conditions, until you change the course again. As is the case when sailing a real boat, attempting to sail a course too close into the wind will result in your sails luffing and your boat making no progress or even being pushed in the opposite direction by the wind (see section on Wind response for more details). You may set your desired course as soon as you join a race in preparation for the start of the race.
- Starting: Your boat may be started if on land provided that it is within 100 metres of water in the direction of the set course. If you land during a race and need to get back onto the water, simply set your course back towards the water and command your boat to start. Starting a "stopped" boat while on the water will result in it resuming its course. You may not start your boat until the race begins.
- Stopping / Sails down: Your boat stops automatically once it reaches land, but it can also be controlled by taking your "sails down" if on the water. In this condition, your boat will drift with the wind at 1/10th the wind speed, and will also be subject to any ocean currents.
For advanced boat types (of which there is just one for now, the Advanced Prototype), the fraction of sail area exposed to the wind can be controlled more finely (from 0% to 100%) instead of a binary sails up/down setting. The more sail is up, the more power it generates to move the boat; however, too much sail power generated in high winds will increase the boat's heeling angle and cause excessive leeway (slipping sideways along the water) as a result. While being able to control the sail area so precisely (in increments of 1/100 here) isn't that realistic -- this can be thought of as having 100 reefing points -- the "prototype" advanced boat type is designed to allow this level of control for now.
Wind response
Those who have sailed before, whether in the real or online world, may have come across polar plots showing wind response curves for a particular boat at different wind speeds. There are several different types of boats currently modeled in SailNavSim, many based on approximations from available (though sometimes sparse) data of real-world boats. Use the links below to see the polar plot and wind response tables for each of the different boat types as modeled in the simulation.
Basic boat types
As is obvious from the data in the links above, each boat has a different wind response profile. Additionally, for each boat, the fastest point of sail relative to the true wind direction (visualize the wind on the plot as coming from the zero degree point, from top to bottom) depends on the wind speed. Integrating this knowledge with the otherwise most direct geographical course to any waypoints and to the finish location is a large part of what makes navigating in a sailing race -- particularly over vast distances with changing weather conditions along the way -- an interesting activity.
Depending on the specific boat type, when steering within about 20 to 40 degrees on either side of "directly into the wind", your sails will be ineffective in powering your boat along your chosen course. In this case, the force of the wind will begin to push your boat backwards, where you will start to see a negative speed through water for your set course. Steering directly into the wind has the same effect as taking your sails down, where your boat will be pushed "backwards" at 1/10th the wind speed.
Advanced boat types
Advanced boat types use a different model in the simulator that, instead of using direct polar data lookups as in the case of the basic boat types (above), calculates aerodynamic and hydrodynamic forces being applied to the boat and determines boat velocities (ahead and abeam) based on these calculations.
Sea ice
Another variable that has an impact on your boat speed through water is sea ice. This value is calculated from sea surface temperature and water salinity, whenever these values are available. Although most of the ocean surface around the globe has no sea ice, in areas where it is present your boat will be slowed down in proportion to the amount of sea ice in that location, coming to a complete stop through water upon reaching 100% sea ice concentration.
A global map showing the sea ice concentration, as modeled by the simulator, is one of the maps which can be found on the weather/ocean maps page.
Damage mode
If boat damage mode has been enabled by the race creator, then boats will take damage while wind gusts exceed the damage threshold (by default 45 knots, but higher for certain boat types; see list below), unless the boat is stopped (on shore) or has its sails down. Damage will be repaired automatically, but only while wind gusts have decreased to below 25 knots. Boat damage has a linear effect on boat speed: for example, a boat with 50% damage will sail at half of its expected speed; a boat with 75% damage will sail at only a quarter of its expected speed.
The following boat types have higher damage thresholds, set at 55 knots:
- Volvo 70
- Super Maxi Scallywag
- Maxi Trimaran
- IMOCA 60
- Volvo 65
If apparent wind damage mode has also been enabled, then apparent wind gusts are used for the calculations instead of the default true wind gusts. This takes into account the fact that it is the wind gusts "felt" by the boat (a function of both true wind and boat vectors over water) that count toward damage.
More details, including some examples, pertaining to the rates of damage accrual/repair are provided below:
- Damage is accrued at a rate of 0.25% of the remaining difference to the maximum damage (100%) per hour for each wind gust knot squared above the threshold. This calculation is applied on every simulation iteration (once every second). Some examples below...
- With gusts at threshold+5 knots, damage is accrued at a rate of 6.25% of the remainder to 100%, per hour. Compounded per second, this reaches approximately 6% after one hour from zero damage.
- With gusts at threshold+10 knots, damage is accrued at 4x the threshold+5 rate. Compounded per second, this reaches approximately 22% after one hour from zero damage.
- With gusts at threshold+15 knots, damage is accrued at 9x the threshold+5 rate. Compounded per second, this reaches approximately 43% after one hour from zero damage.
- With gusts at threshold+20 knots, damage is accrued at 16x the threshold+5 rate. Compounded per second, this reaches approximately 63% after one hour from zero damage.
- Damage is repaired at a rate of 0.25% (absolute) per hour for each wind gust knot below 25 knots. This calculation is applied on every simulation iteration (once every second). Some examples below...
- With gusts at 20 knots, damage is repaired at a rate of 1.25% per hour.
- With gusts at 15 knots, damage is repaired at 2x the 20-knot rate: 2.5% per hour.
- With gusts at 10 knots, damage is repaired at 3x the 20-knot rate: 3.75% per hour.
- With gusts at 5 knots, damage is repaired at 4x the 20-knot rate: 5% per hour.
A global map showing the wind gusts which affect boat damage, as modeled by the simulator, is one of the maps which can be found on the weather/ocean maps page.
Wave resistance mode
If wave resistance mode has been enabled by the race creator, then boats will slow down based on the waves and swells being encountered. This effect is relatively minor in calm seas, but it becomes increasingly important in rougher seas where the waves are higher, particularly for the smaller/slower boat types. The "wave data" section on your boat information page will show details about the waves at your position, including their effect on your boat's speed.
When this mode is enabled, the boat speed through water is adjusted by multiplying it by a speed reduction factor (SRF), a value always between 0 and 1, which is a function of the wave height (WH) and the specific boat type's wave resistance constant (WRC), according to the following formula: SRF = 1 / exp(WH^2 / WRC). Wave height (WH) is provided in metres, with the wave resistance constant (WRC) chosen based on the boat type, as indicated below:
Boat type | WRC |
SailNavSim Classic | 75 |
Seascape 18 | 60 |
Contessa 25 | 100 |
Hanse 385 | 125 |
Volvo 70 | 175 |
Super Maxi Scallywag | 200 |
140-foot Brigantine | 200 |
Maxi Trimaran | 250 |
IMOCA 60 | 160 |
Improvised Lifeboat | 50 |
Volvo 65 | 175 |
AC72 | 200 |
Advanced Prototype | 75 |
Tables showing calculated speed reduction amounts for various chosen wave heights are also provided on the wind response pages for the different boat types. A global map showing wave heights, as modeled by the simulator, is one of the maps which can also be found on the weather/ocean maps page.
Celestial navigation mode
In celestial navigation mode (if enabled by the race creator), celestial sights of the Sun and the 20 brightest navigational stars (plus Polaris) may be taken, subject to time of day and cloud coverage (from one sight every minute with 0% cloud coverage, to no sights possible under 100% cloud coverage):
- Sun, when above the horizon (that is, during daylight)
- Stars, chosen randomly on each attempt from the stars visible above the horizon (of the 20 brightest plus Polaris), only during nautical twilight
Other than sights being made periodically, the following modifications also occur in celestial navigation mode:
- Geographic position (latitude/longitude) is only available when near land and when land is inside visibility range (as indicated in the weather data). The last "known" geographic position is always shown on the boat data page (and also available on the race map).
- Magnetic compass (°M) is always used instead of degrees from true north (°T), and for displayed wind direction this value is further modified by a random amount of up to 5 degrees in either direction.
- Speed over ground and course over ground are not available.
- Ocean current data is not available (although it is still simulated, and therefore affects boats).
- Reported speed values for wind speed, wind gust, and boat speed through water are displayed modified by a random amount of up to 5% (from the true speed) every boat report.
- Wave height (when available) is displayed modified by a random amount of up to 10% (from the true wave height value) every boat report.
- Ocean ice (when available) is displayed in increments of 10% (from 0% to 100%).
- Live boat data is not available (on both the race map and through the WebSocket directly).
- Boat report sharing interval is always 1 minute, for all boats which are within visible land (and therefore "know" their exact positions).
Additionally, the following assumptions can be made for sights:
- Chronometer: Sight time is always accurate to within 1 second of UTC (Zulu) time.
- Sextant: Measured altitude angle (from horizon) is accurate to within 1 minute of arc, unless celestial waves mode is enabled. Additionally, the sight is taken from the sea surface, so there is no correction required for dip angle.
- Sight on center of object: Relevant for sights of the Sun, the altitude angle is always given to the center of the object (rather than lower limb or upper limb).
- Atmospheric refraction is modeled, which has an effect on the observed altitude (compared to true altitude, as if there were no atmosphere). This should be taken into account and corrections applied, especially for low altitude angles.
- Approximate azimuth angle is informational only, and accurate to within 10 degrees at best (becoming less accurate closer to the zenith, and also subject to errors if celestial waves mode is enabled).
If celestial waves mode is enabled, the altitude and azimuth readings for each sight will have some random error added. This error is a function of the wave height (WH) and the boat type's wave resistance constant (WRC, also as discussed in the waves mode subsection above). This error adjustment is calculated as follows:
- Maximum altitude error: |E_ALT_MAX| = 100 * WH^2 / WRC (in arcminutes)
- Maximum azimuth error: |E_AZ_MAX| = 100 * WH^2 / WRC (in degrees)
- Average error in each case above is 25% of the maximum error.
Viewing your progress
Your boat progress and details are updated once per minute, and some of these details (including position, speed over ground and true wind) are also shared with other participants in the race at a regular interval, which may be less frequent than one minute depending on how this was configured when the race was created. All boat status, geographical and weather information is provided on one page, with additional links to show extended hourly boat data and a maps page also available.
On your boat maps page, the race map shows the positions and recent tracks of all race participants as of the most recent shared reporting time, as well as the geographical bounding boxes for the finish and for any waypoints along the way. Since the simulator is always running with a one-second simulation timestep interval, a "live boat" feature is also available to let you see your boat position and speed updates with each one-second update, which can be especially helpful for getting through canals and other narrow waterways. If the live boat sharing functionality has not been disabled by the race creator, then other boats in the race will also be shown live when they are nearby (within 15 NM) but with reduced heading and position accuracy: other boats' live headings will be rounded to the nearest 16th/32nd/64th compass point depending on distance, and their live positions will also lose precision over farther distances (to no worse than about 50 metres, for boats more than 5 NM away).
The simulator's live weather and ocean data can also be selected for visualization as an overlay on the race map. The separate Windy weather map shows your boat position and approximate weather conditions at the present time (note that this may disagree somewhat with the weather data shown on the race map; see the section on Weather and Ocean data for more details), as well as the ability to view weather forecasts to help you plan your route.
The race map shows all boat positions displayed as boat icons, which are colour coded as follows:
|
Not Finished |
Finished Race |
Your Boat |
|
|
Others |
|
|
Finishing a race
To finish a race, a boat must reach the finishing bounding box after passing through all race waypoints (of which there may be zero or more for any particular race). Each individual sailor may or may not finish the race, depending on whether they satisfy the race finish rules as specified when the race was created. Regardless of the outcome, all participants may continue to sail as long as they wish, subject to boat deactivation rules.
Further details
The above information is certainly enough to get started and participate effectively in a race, but there's more you may still want to know, so feel free to continue below...
Your boat "key"
Since there is no requirement to create an account and no username or login required, your boat is set up with a unique key when you create or join a race. In a sense, this "key" takes the place of a username/password combination and should be treated as such. Just as sharing a race ID with anyone allows them to join that race, sharing your boat key with anyone will give them the ability to fully control your boat in the race. So it's up to you to keep it secret, or share it for the desired effect if you wish.
Boat deactivation
After the race has started, boats will be subject to automatically be moved to a "deactivated" state after 14 days of inactivity. Boat inactivity here is defined as the period of time during which no course change or start/stop commands have been sent to the boat. Although deactivated boats are left over in the race and still show their statuses as of the time of deactivation, they are no longer simulated, and therefore they do not move and cannot be controlled further. Deactivated boats will also continue to be shown on the race map at their latest position but with a transparent boat icon shown instead.
Date and time
All dates and times are by default displayed in Coordinated Universal Time (UTC) or "Zulu" time (hence the "Z" suffix). You have the option to choose displaying dates and times in your browser's local time zone instead (see the setting at the top right of most pages, next to the menu). Note that in celestial navigation mode, all dates/times for sights will always be shown in UTC, regardless of this setting. For convenience, in many places, the relative time (as of the page load) is also shown alongside dates/times.
Boat history
Hourly boat logs, which include the boat positions at the top of each hour, are kept for at least 30 days. Extended boat logs, which contain the boat positions at noon and midnight UTC (1200Z and 0000Z) for each day, are further retained for at least 365 days. This data is used in order to draw the historical boat tracks on the race map, to show the hourly boat log data, and may also be used in the support of additional features in the future.
Weather and Ocean data
The weather and ocean data used here are sourced from the NOAA GFS (Global Forecast System) weather model forecasts and from the HYCOM ocean model. Data are chosen to approximate the weather and ocean conditions at any point on the globe at the current time. Although a number of different weather variables are displayed, only the following variables currently have any effect on boats: wind direction and speed, ocean current direction and speed (where available), sea ice concentration (calculated from sea surface temperature and water salinity, where available), and wave height (if waves mode has been enabled for the race). Many of these variables can be found visualized on the weather/ocean maps page. The raw data from which these maps are generated is the same data that is used by the simulator. Additionally, some of this data can also be selected for visualization as an overlay on the race map.
But I see that the weather data shown to me doesn't agree with what's on the Windy weather map!
The weather data used in the simulation and displayed to you, including the overlayed data shown on the race map, may disagree with what you see on the Windy weather map due to a combination of two main reasons:
- Windy uses the ECMWF weather model by default, which although should be very similar overall for relatively near-term forecast data within 6-9 hours (which SailNavSim uses), it can still differ from the data derived from the GFS model used here.
- SailNavSim "blends" data from two adjacent GFS forecast periods on an almost continuous basis. This means you won't get sudden sharp weather fronts taking over your boat at any time, but you will also experience more gradual changes in weather rather than sudden discontinuities every few hours when the latest weather model data is loaded.
Geography
As already mentioned above, your boat will sail freely (subject to the weather, of course) while on water, but it will come to a stop upon reaching land and will need to be steered back towards water and "started" again. The geographical land/water data used is available for the entire globe to an accuracy of about 30 metres, so for the most part any land you see on an online map should be found just as well in the simulation at the same coordinates (some exceptions apply; see Land/water inconsistencies under quirks). SailNavSim also makes an attempt to ensure all geographical calculations take into account the realities of the Earth's shape, as one of the main goals is to model the real world as accurately as possible from a navigational standpoint, so all geographical calculations and information displayed ought to be reasonably accurate in these aspects.
Is it possible to transit any of the major canals?
The geographical data used by SailNavSim includes various major canals represented as waterways, which means it is possible to transit these canals in your boat. However, in order to do this successfully, your boat may require frequent course corrections to stay the course of the canal (depending on the specific canal) from one end to the other. The following major canals are currently known to be transitable in SailNavSim:
- Kiel Canal
- Panama Canal
- Suez Canal
- Welland Canal
- The nearby Niagara River to the east can also be transited; Niagara Falls is NOT modeled as a hazard!
There may also be other, smaller canals which can be transited. The above list may be updated in the future should any others be identified.
Advanced boat types
Most boats available in the simulator at present follow the basic model where the sails may be either up or down, and the course through water is steered directly (where the boat's heading is always the same as its course; that is, there is no leeway). Some new boat types are being introduced that are referred to here as "advanced" types, which add the following characteristics to make the simulation more interesting:
- Wind response and performance modeled by the balance of aerodynamic and hydrodynamic forces rather than a simple polar data lookup
- Leeway (non-zero movement abeam through the water), caused by the interaction of these forces
- Control of the fraction of sail area exposed to the wind (reefing), impacting boat speed (including leeway)
Other quirks
There are a few quirks with the simulator's behaviour that are worth mentioning. These may be fixed or mitigated at some point in the future, but for now it's good to be aware of them when creating, joining, and participating in races. Some of these items can be attributed to the fact that the simulator intentionally "updates" only once per minute. While this "feature" contributes to the slow-paced nature of the simulation, it does come with a few side effects. Although boats are simulated internally with a timestep interval of one second -- this also allows for the "live mode" functionality you can enable on the race map to show some fast-updating boat information -- many updates and checks still only occur once per minute.
- Boat details/control delayed on joining: When you join or create a race, there is a delay of up to one minute before your boat details and controls become available on the boat page. Similarly, the map page will not show any data until that same time, which will occur on (or very shortly after) the start of the next minute.
- Waypoints and finish boxes: When entering waypoints and finish boxes, your boat's presence within them must be captured by one of the per-minute updates. For this reason, when creating a race it is wise to make waypoints and finish boxes wide enough such that your selected boat type will be unlikely to sail through them in less than one minute's time.
Sea ice north of 80°N: If you sail north of 80°N latitude, you will find that the ocean data is missing, and the simulator will assume there is no ice present. This is caused by missing data for high latitudes from the sources of ocean data used at this time. This quirk allows you to sail, for example, around and near the north pole year round. Sea ice and other ocean-related data is now available to 90°N (updated June 2024).
- The north pole: If you happen to sail to the north pole, your boat will be stopped and made permanently immovable just before arriving at (about 10 metres from) the pole, which is done intentionally to avoid some of the challenges of mathematical calculations in the simulator when at the poles. The south pole also has a similar constraint, but it isn't possible to start your boat there anyway due to being on permanent land/ice.
- Land/water inconsistencies: In certain locations, the race map image tiles and the geographic data used by the simulator may be inconsistent. For this reason, a geographic data map is available on your boat's map page, which will show your boat position overlayed on images generated from the raw geographic data used by the simulator. This information can be used to determine, for example, whether a narrow canal can be sailed through, or whether there may be any "uncharted rocks" nearby. And if you happen to find your boat stuck on some land that isn't visible on the race map image tiles, then this additional information can be very helpful to get back on water.
Light winds with fast ocean currents: Strange behaviour may arise whenever there are light winds with fast ocean currents. Currently, wind response calculations applied to the boat do not take into account the effects of currents (relative to true wind) when determining the through water vector. Ocean current data are only applied afterwards in order to determine the over ground vector. The "true wind" and gusts as observed by your boat now take into account the effects of any local ocean currents (updated March 2023).
I'm a programmer and would like to explore more!
Please visit the Code page for more details which you may be interested in. There you can find links to code repositories and information about the public API which you can use.
Great! I look forward to hearing from you, so please head on over to the Contact page and leave me a note.