Cover photo
256 followers|99,368 views


Shared publicly  - 
What if someone would plot railroad tracks in detail on Google maps... and animate trains on them that you can control? Wouldn't that be cool? ? Surely not what do you think?
Paul van Dinther's profile's profile photoDave Jenkins's profile photoAndrew Leahy's profile photo
I'm not going to be satisfied until I have an actual SimCity model of the real world.
Add a comment...

Shared publicly  - 
Brainwave! Of course! With my pixel based land/water system I was unable to produce a decent collision normal for the shore line.

Now I am working with vectors I actually have this data. The image below from wikipedia ( ) shows how I figure out if we are on water or land. 

All I have to do is keep track of the last line crossed and calculate a perpendicular line to it (It is called a normal)

Knowing the speed vector of a collision point on the ship and the normal will enable me to calculate a more correct response for the ship.

The current approximation is not bad but doesn't deal well with shallow angle impact like what happens during docking.
Add a comment...
Inching forward with ships 2. I might again spend too much time "testing" The new land water system works perfectly. Here I am touring the canals of Amsterdam in the Netherlands in a canal cruise boat. This ship physics for this vessel are totally different from a river barge or cruise ship. This boat doesn't have a bow thruster but it is fairly lightweight so it responds to the controls much quicker.

It needs to because you will steer the boat through the intricate network of canals in Amsterdam. The detailed intricate land water data ensures that land / water detection is immaculate.

I am so keen to release this ship simulator. It will blow your mind but it needs to be polished and perfect.
Paul van Dinther's profile photo
Add a comment...

Shared publicly  - 
A complete rewrite of the landwater system was required as Cloudmade decided to ditch their small users. I relied on their land/water image tiles for land collision in Ships.
Weeks of hard work wasted but one learns from that. Check out my post about cloud based software.


I was already thinking that text representation of area's might as well be vector based but it takes a lot of CPU power to test to see if a point is inside a complex polygon. If only it were possible to produce map tiles that had selfcontained polygons. Well, Michal Migurski was onto it well before me and already produced an online data source hosted on openstreetmap providing exactly the data in GEOJSON format.

The new vector based system is faster, just as accurate and uses less bandwidth. It is also comforting that the entire server solution is opensource so if needed I can build my own server.

In order to make the data flow as fast as possible I wrote a localStorage manager. This javascript based library makes use of memory, HTML5 local storage and an intermediate server to cache tile data. This means that one user will only request a specific data tile once for each browser/computer.

My server will serve the tiles from it's own MySQL database if possible and only if it is not there will it request the time from the openstreetmap server. The image shows how things go down. This solution should be super scalable while over time the data frequently used data will be cached in my server in MySQL

localStorage has a storage limit so my storage manager maintains a timestamp everytime a piece of data is requested. If the localstorage is full (There is only 5MB to play with) the oldest data will be deleted to make room for new data.

With this out of the way I press on to get Ships2 finished. My graphics designer is already giving it all a once over.
TANG HUANG's profile photo
Add a comment...

Shared publicly  - 
Calling for experienced ship crews.

Experienced skippers rank of captain down to third officer familiar with Azipod driven ships the size of a river barge and up.

The new Ship2 simulator is nearing completion and I am keen for experienced crews to provide feedback on the new ship physics.

Currently I have a large single azipod river barge with bow thruster to try out and the massive "Oasis of the seas" cruise ship with three azipods and bow thrusters.

Apply here in the comments below: listing your rank and experience and I will get back to you.
Paul van Dinther's profile photo
Add a comment...
Have them in circles
256 people

Shared publicly  - 
After 4 days agonizing, trying to get the ship to "bounce" correctly after hitting land the land. I think I finally succeeded.

Detecting land is no longer good enough, I wanted to have the ship respond to the land collision in a realistic manner.

As usual the code is painfully efficient with barely anything extra to do. Coolest part is the pointInPolygon detection routine that passes back the nearest line to the tested point, data it had already. I only calculate the normal for this when there is an actual land collision.

A ship hitting a boundary line doesn't simply bounce like a ball does on a wall. The drag vectors forward and sideways are very different and a ship would behave more as if it were on rails (But not quite)

Persistent pushing a ship against the boundary line should cause the ship to slowly align itself with that line ect. So many things to consider. The current solution is cheap in CPU cycles as it doesn't require a full blown physics engine but one of these days I need to look into those as the solution is still not perfect but it is going to be your job of course, to NOT crash into the dock.

I just send a boat heading south on the river Amstel in Asterdam, since the boat does not yet accumulate collision, it simply bounces it's way along the river. Very cool.

Back to commercial work for a few days now.
Add a comment...

Shared publicly  - 
Very happy with my UI system for Ships2. I had a need for numeric displays so I wrote a new LED display instrument today that can be added to a ship config file. Very clean. The attached image shows apparent wind, true wind and speed in meters per second.

  name: 'truewindspeed',
  type: 'leddisplay1',
  left: 120,
  top: 10,
  width: 48,
  height: 26,
  params: {digitcount:3, color: 'green'}
  callback: 'shipManager.currentShip.trueWindVector.length()',
  update: true

Especially the callback is cool because any parameter for the ship can be shown. Turn rate, speed, drag, slip, apparent wind, power parameters, cavitation, fuel, fuel consumption for each engine and many many more.

The above format is used for all instruments in the ship instrument library. Even controls such as levers, knobs and wheels.

I also implemented a damage tracking system. Each vessel is equipped with collision points. Each point is checked for land/water and is given a solidity index. Collision damage is based on impact speed for that point and inertia. A collision point will fail when you exceed 100% damage. When a collision point fails, the ship fails.
Kent Morrison's profile photo
Add a comment...
I happen to have a massive collection of historic ship location data and I could not help myself and quickly plotted each point in 10% opacity on the NASA Blue marble image.

Kinda pretty don't you think? Cool to see where ships travel as they cross the Tasman Sea between New Zealand and Australia.

OK, I better get back to work now.
S. Ricklefs's profile photo
Add a comment...
High speed Land Water detection service for GIS users.

As a spin off for the Ships2 program I end up with some exciting new technology. I have a need to test a latitude and longitude quickly to see if it is in water or land. In fact, I want to do this test at least 30 times per second for 7 points. That is 210 tests per second to see if a point is in water or land.

Existing water/land services could not even hope to provide this data at such speed so I had to invent my own and it works really well.

So now I am turning this land water service into a web based service and maybe someone else will want to tap into this.

As a service, the data needs to cross between domains. It also needs to be transmitted fast. So I designed an encoding algorithm that can represented the land water data in text using a highly compressible method. We are talking already compressed map tiles in PNG format 8337 Bytes in size that go over the wire as text with a size of no more then 1921 Bytes. But these bytes can be compressed further in the HTTP protocol. Data size depends on tile content but high zoom level tiles 16 and up compress even further. The compression software figures out how the tile is best compressed and stores the compression method in the tile data.

Since the tile data is now text it can passed between domains via ajax calls without a problem and without the typical Cross Domain security errors.

The image below shows a base 87 encoded representation of the data after my algorithm had a go at describing the image content. However, encoding methods vary depending on tile content.

This technology could easily be expanded to provide extremely fast elevation or depth data for any point on the globe.

Just geeking out here but this is cool stuff.
Christian Southworth's profile photo
You're alive!!!!!
Add a comment...

Shared publicly  - 
Anyone keen to stay up to date with the Geo based applications I write. Make your way to

To get the latest new first hand.
A look into the water/land detection kitchen. For the new Ships2. A highspeed land water detection is required for the entire world and online services are simply not fast enough so I rolled my own.

At the top left you see a map tile showing water in blue and land in red. This dataset is generated by cloudmade and cached on my server (As per TOS ) Unfortunately, soon this service is no longer available for free.

Anyway, with 65536 tiles in cache at zoom level 8 the low resolution tile is quickly picked up and it takes ages to sail out of it. A 3 x 3 pixel area around the ship location is sampled. You can see the ship position by the single green rectangle. If a hint of red is detected we proceed to pull the high resolution image tiles at zoom level 12.

At the bottom left you can see the ship with all it's defined collision points displayed. This enables a land/water accuracy close to 0.5 meters for any location in the world (Depending on data quality of course)

Since tiles are cached on the server, it is possible to improve individual tiles where desired. At some point I may build in an editor so you can paint your own tiles simply by outlining water on the Google Map using your mouse.

Obviously, when you play the game the red/blue images are invisible.
John Nolan's profile photo
Your link above returns one to this page.
Add a comment...
Have them in circles
256 people
Contact Information
Contact info
64 9 8375251
Google earth related applications and games. The planet is your playground.
Welcome to our news page where the world is your playground. Google Earth is a highly detailed 3D representation of our entire planet. Rather than just looking at it, why not play on it! brings you top quality ideas, applications and concepts that will let you experience your planet in a whole new way.

And the best thing. Everything is free!