Sailaway page header image
   

Under the hood

Geo location

For efficiency all positions in the simulator are computed as 32 bit float numbers. These have a high precision when close to zero, but the precision drops rapidly at higher values. This is why most games have a horizon of about 5,000 meters or even less.

The real world is far bigger than that, which is why Sailaway II used a tiling system. The world was divided in tiles of about 2km. When you sailed to the edge of a tile, the world and the boat would be swapped over to the next tile without you noticing that (in an ideal situation). There also was non-linear scale to enable the camera to view land at 50 kilometers. This non-linear scale made it sometimes hard to place large objects in the world editor.

In Sailaway III the camera is always static and the world moves instead. All global positions are stored as 64 bit doubles and converted to more efficient 32 bit float local positions relative to the camera. This ensures a smooth continuous world, a horizon at 50 kilometers, a linear scale and high precision.

Modular

To save memory, only the parts that are actually needed by the program are loaded.

One distribution

The world editor is no longer a separate program. This makes it easy to switching between sailing on your boat and editing your home port.

Local caching

Height maps, world edits, textures, 3D models. They are all downloaded from the server once, then stored in a local cache. Sailaway will run smoother, faster and uses less bandwidth. Old cache data is cleaned up automatically and when the original data on the server is updated, the local version is automatically refreshed.

Server interface

A new communication handler with the Sailaway servers, that runs asynchronously, more reliable and more efficient.

Unity Data-Oriented Tech Stack (DOTS)

Here's how a computer performs computations: it looks up the location in memory of the data it requires, then reads the data, performs the operation, and writes the data to a new location. All subsequent operations will have to wait on the previous.

The DOTS system changes this for large numbers of identical computations. For instance: the Sailaway ocean consists of 64K vertices (points in the world that are connected and form the surface of the sea). Those vertices need to be lifted and lowered constantly to simulate the waves. These are 64K identical computations. In the traditional way, it would take far too long to run this on the CPU, resulting in a very slow frame rate.

But with DOTS, the data for those 64K vertices is stacked in the right order in a single chunk of memory. The CPU steps through that chunk of memory as it performs the same operation in a loop. This is super fast! And all this runs in a separate thread, that has no effect on the rest of the application.
More on DOTS...

Unity Scriptable Render Pipeline

The new render pipeline of Unity is more efficient, customizable and offers easier access to internal data.
More on Scriptable Render Pipeline...

orbcreation b.v. - dr. schaepmanstraat 66 - 2982ag ridderkerk - the netherlands - terms and conditions