World Editing

Ideally the Sailaway world would be an exact copy of the real world, with the same water depths, the same landscape and the same buildings and vegetation. Of course this is impossible. The world is simply too big, the Sailaway Team is simply too small, and the available information is simply too scarce. We’ve decided to make more use of the enormous expertise that is present among the Sailaway sailors and intend to create a World Editor. This is what I am working on right now. I’d like to share my ideas with you and appreciate your input in case I forgot something or if you think a different approach would be better.

The World Editor will be a separate program in WebGL so it will run in your browser. Embedding it in the Sailaway executable would make the program and the user interface overly complex. The downside is that it will be an extra program to maintain and support.

There will be 3 different types of edits:
– terrain heights and water depths
– terrain texturing
– placing objects

World Edit Object

All edits are encapsulated by a world edit object. This world edit object will contain the id of the user, the longitudes and latitudes of the edited world section, whether the edit is published or not and a publication timestamp. If there are multiple world edit objects for the same area, they will be applied in the order of publication.

To allow 2 people working in the same area on different world edit objects at the same time, new height values are only stored when they have actually been changed with respect to the original height. This means you can work in the same region as long as you don’t edit the exact same location, because then the one published last will determine the terrain height for that position.

Of course there is the danger of someone pushing out weird shaped islands, drawing their name in the terrain, or making unintended errors. If this happens, you can disable those edits in the stack. If it was done intentionally, notify us and we’ll address the user to prevent future incidents.

Terrain Heights

The terrain heights are stored in a grid format that uses 2 bytes per sample. Since the range is -10000 to +10000 meters, the accuracy would be insufficient for detailed editing. For this reason Sailaway uses an algorithm where steps are smaller around 0 and bigger at greater depths/heights.

The current Sailaway terrain heights have a resolution of 30 meters. The world edit object will allow much higher resolutions, but the download size would become immense if even a small region like “The Netherlands” would be stored in a resolution of for instance 1 meter. It would mean a download size of 250 km x 150 km x 2 bytes = 75 GB. To prevent this, you can use multiple edits within the same world edit object with different scales. The best way to edit an area would be to start at a big scale and then create separate height edits for smaller regions where you need a high resolution. Here’s an example for the port of Rotterdam.
First you edit the whole region N51.91, E3.95 to N52.05, E 4.175. This region measures 0.095 degrees vertical and 0.225 degrees horizontal. The fixed grid size is 512 x 512 samples, which means 0.0001855 degrees by 0.0004395 degrees per height sample or roughly 22 by 22 meters.

This would show large saw teeth in the landscape at close distance.

To prevent this the next edit within this same world edit object could cover a smaller region.

In this case N51.955, E4.025 – N51.966, E4.055. At 512 x 512 samples, it would provide a resolution of roughly 2.5 meters. And you can go much smaller than that if you want to. The high resolution edits are only downloaded by users, when they are sailing at a close enough distance to see that amount of detail.


Terrain Texturing

In texture mode you can paint the terrain by using a blend of predefined textures that are optimized to repeat without showing any obvious repetition. The edits are again stored in a grid of 512 x 512 tiles. The region that is covered by that grid is determined by you. This way you can quickly paint an entire desert, and create additional detail by adding world edit objects that only cover a specific beach. This works the same way as described under the Terrain Heights section.

The file format uses 1 byte per tile. Each tile can display up to 16 different textures, blended together by alpha in 16 steps. 16 x 16 = 256 = 1 byte. If the total alpha of all 16 textures adds up to less than 1, the original terrain texture that Sailaway uses + earlier entries in the edit stack will shine through.


Placing Objects

Right now Sailaway reads the OpenStreetMap database to place buildings in the world. Plus we added some iconic buildings and structures at various locations ourselves (like the Golden Gate Bridge). To extend this and also allow for the creation of docks, jetty’s, dikes, sheet piling, trees, etc. it will be made possible to upload static 3D models. The required format will be .OBJ, which is very simple and straightforward and supported by most 3D editors. Each model will have only 1 material for performance reasons and .MAT files are therefor not supported. Instead, you will be able to upload a texture and/or specify a color in the editor. Transparency will be clipped by a cutout shader.

After uploading an object, you specify if it is a single instance object (like the London Tower Bridge) or if it can have multiple instances (for instance a tree). If it’s a multiple instance object, it will automatically become available for everyone to use after it is published. Once someone else uses it, you can no longer upload a new version of the same object. Placing the objects in the world is done by placing them on the map and adjusting the scale, rotation and color.


24 Responses to “World Editing”

  1. Richard Knol

    Yup, already thought of 2 things I forgot:
    – races should never use any terrain updates that were published after the race start (to prevent someone from erasing an island to sail a shortcut and then reinstating it again behind him. lol
    – need to find a way to combine a user created 3D model and an existing fixed light in order to upload real world models of lighthouses

  2. Christoph

    Hi Richard,
    I just downloaded Sailaway from steam and wanted to say I’m really impressed. By far the best sail sim I’ve ever seen.
    Though it’s off-topic here, just wanted to contact you for one question:
    Is it possible to use a head tracker with your sim? Or are there plans to implement head tracking for it in the future? IMHO that would be a huge
    leap forward in the development of an immersive experience.
    Probably the easiest way of creating support for head tracking would be via Open Track. The guys from open source platform “” seem to be
    especially cooperative and their hard-/software package worked immediately for an average user like me on some successful steam sim games like War Thunder.
    Since my own abilities in programming are poor, I would be glad if I could help in any way to make head tracking work on your brilliant simulation.

    Kind regards,

  3. Glenn Slingsby

    I’m not a Sailaway user (yet!) but the World Editor holds interest for me. Without knowing much about the programme, will it be possible for a user to download a model (of a building, for example) and place this in the World they are creating? What format does this model need to be in? Are you only looking at recreating copies of objects found in the real world are can imaginary buildings be included? I would think some architects would love to be able to offer buildings for members to use. And for myself I would love to design 3D models to be included…

    • Richard Knol

      Hey Glenn, yes you can upload a 3D model. (not yet, when the function is finished. right now I am working hard on the terrain editor) The Wavefront OBJ format will be supported. Most 3D modeling tools can export in OBJ format. The buildings should be real though. We try to simulate the real world in Sailaway.

  4. Hi Richard, any reason we cannot use Google Earth Data? Google has a more and more growing number of “3d-objectified” harbours, points of interests, water depths and so on. Of course it would require an online connection to stream this data online via the Google API’s, but how could a small community of volunteers ever recreate what Google has done in the past and will continue doing in the future? Just some thoughts. Paying SailAwaySim User here. Cheers!

    • Richard Knol

      Hi Andre, If only that were possible. The problem is that Google is free up to a certain usage and above that the fee climbs rather steep. We’ve also used Bing satellite imagery for a brief period, but Sailaway ran out of the data limit within one or two weeks. The game is targeted at a niche audience and simply doesn’t make enough money to be able afford such services.

  5. Would it be possible to stream real world information including renderings of surfaces and 3d objects (bridges/houses/parts) via the Google maps/earth APIs? That would save a lot of work no volunteer could possibly chip in.

  6. Christoph

    Hi Richard,
    I would really appreciate (and use!) your planned world editing tool. From the sailor’s perspective though, it would be more important to create water depths in detail than terrain heights. I like the idea to let the users/editors create multiple instance objects like trees, jetties etc.

    Though Sailaway’s community is still small (like all sail sim communities…), I think it’s just the right approach to solve as much issues of development as possible by creating editor tools and let the users do the detail work on the map. This will tie a lot more people to the project and accelerate development. Another idea for the future would be a boat editor where you could use polar diagrams and other parameters to give the boat a realistic touch. Or an editor tool for special scenarios like creating your own tutorials (with defined map, weather, tasks etc.) that could make it still easier for newbies to use Sailaway AND in fact learn real sailing. That could spread the popularity of Sailaway among sailing schools a lot.

    Just another suggestion: what about including live AIS data (e.g. from to depict the real traffic going on in places like Rotterdam harbour? Is it imaginable to link up ship objects in the sim to a real AIS signal and give it its real parameters (course, speed, name, vessel type)? Just for a small section of the map where you’re actually sailing, off course, and only with a small number of different vessel types depicted in the sim.

    Kind regards,

  7. Davide Gessa

    Hi Richard,
    glad to read about this wip feature!

    Regarding the placing object, it could be awesome to merge the work already done by flightgear users; this flightsim provides the ability to upload new scenery object and to place scenery object in the world.

    The world scenery of flightgear is open, so you can easily:
    – Transform all flightgear scenery models from .ac to .obj
    – Get the objects coordinates from the flightgear scenery (only from coasts, we can’t fly on sailaway), and integrate them in the sailaway scenery

    That’s only an idea, but it could reduce the effort to get a cool world on sailaway 🙂

    – Scenery models of FGFS:
    – Scenery objects on FGFS:

  8. I think enabling us, the users, to make our favourite places even nicer and at the same time make the whole comunity profit from this, is a great idea! I am realy looking forward to this

  9. Good time of a day.
    It’s a great idea, but I think there aren’t enough Sailaway sailors for that. Nevertheless, I will be glad to join this work on the geography of the game world in my free time. It will be very interesting for me.
    With respect and the best wishes.

  10. Frederick Dreany

    I am strongly considering the purchase of Sailaway in October after having checked out all the other options and similar sail sims available and watching Youtube videos of all of the other choices. A WIP world editor, availability on Steam, the ability to personalize the boats, number of boat choices and general appearance of the screenshots are all very convincing plusses for me in making a choice to purchase. However the appearance of the water is not as good as programs using the Unrealengine 4, and the price is much higher than competing programs but those seem not to be a game changer considering everything else. I will be keeping tabs on the game until I make a purchase decision. Thank you.

    • Frederick Dreany

      I am continuing to keep an eye on Sailaway. It seems that you are using a graphics engine called Unity which you have tweaked so as to make the waves look more realistic I am also watching the progress with other state of the art graphics engines such as NTpro 5000 and Seagull 6000 and of course Vehicle Simulator. Sailaway is a very unique sailing simulation with features that make it totally far beyond the competition and it seems to have a promising future so at this point it is definitely on my purchase list for late in October. I’m looking forward to it.

  11. Alex Nuta

    It would be great if we could store depth data from a depth sounder with geocoded location and just upload that as a file. That way, as we sail, we make the sailaway maps more precise. Similar to what Google Earth/Maps is doing with their cars.

    • Richard Knol

      There are certainly 1 or 2 interesting links there. When there is time we’ll see if we can find some additional data to improve the ocean floor. I also saw that Antartica was recently mapped in high detail. That would be cool to implement in Sailaway as well.

  12. Josh Drake

    Richard, Im editing the gulf coast of alabama and florida and keep finding gigantic shipwrecks that have entire bayou’s blocked as well as parts of the ICW. How do I go about removing some of these objects or at least changing them out to something smaller? Thanks for your hard work. Im appreciating the world editor very much and feel a quick tutorial will get more people involved in helping improve our coastal regions. Cheers.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>