Profile cover photo
Profile photo
Google earth related applications and games. The planet is your playground.
Google earth related applications and games. The planet is your playground.

About's posts

Post has attachment
I started a Facebook group where the latest progress for Ships 2 Career will be posted. In the future this group also enables you to post your adventures in the game, your videos and your tips and tricks.

Come and join!

Post has attachment
Finally, this took ages but here it is. The exact same interface but using Web-GL via pixi instead on the HTML5 canvas via the discontinued Kinetic library. The anti-aliasing isn't quite as good as with canvas but the speed improvement is noticable.

Here I just crashed into the dock because Ships has full land water detection for the entire world and all known rivers.

There is still more code that needs to be moved to web-gl including the ship animation itself. Given the extra graphics power I want to look into a more pleasing bow wave and stern wave. Maybe a particle system?

Post has attachment
I am extremely excited about my growing library of pixi.js based touch screen controls. They are intuitive, fast and support both multi touch and tactile feedback using the HTML5 vibrate API. Toggle switches that actually toggle. You got to throw them over and you will feel you did so. The helm wheel can have a configurable level of inertia so that you can throw the wheel and let it spin out.

All this work is being done to prepare for "Ships 2 Career" transition from Canvas technology to the faster WebGL technology and to fully support touchscreen devices of any make and model.

Checkout the JSON data required to configure the new Numeric LED display. You can define the texture atlas, it's layout and the character references.

Post has attachment
A friend send me this video and initially thought he was looking at "Ships 2 Career"

But this is real. Ships does look exactly the same though be it slower. This video is playing fast.

Amazing helmsman skills will be required in Ships 2 Career as well. 

Post has attachment
The increase of screen resolution on mobile devices does nothing to improve user interaction with the touchscreen. controls still need to be physically big in order be interacted with.

So I set out to design and program new ways to interact with touch screen UI controls.

I need these smaller controls in order to make Ships run on mobile devices that use touch screens.

This demo is a screen recording on a Samsung Galaxy S5 running my code in a Chrome browser. The software is a UI library I am writing that uses Pixi.js on top of WebGL.

The top if the video is cropped off in order to hide the URL of the demo.

Post has attachment
I used my Tourmaker for a museum project. We went through 9 iterations of the camera path before the red one was approved. Only in Tourmaker is it possible to tweak the path until it is perfect.

Post has attachment
I put in a bunch of refinements to my GEMovie application. It is really a box of tools all inside a single UI. by no means elegant but it works.

At the top I can click the get my broadcast IP. I need that to be able to send my UDP messages out onto the network. Google Earth is configured to slave to the messages which contain camera positions (See Google Earth Liquid Galaxy)

Next I load a flat CSV file that contains a long list of camera positions produced by my Tour maker software. I load this list via the File menu. The name of this file also becomes the project name for all the output.

I can specify a camera heading offset. for example if I set the Field of view in the Google Earth Driver.ini file to 60 degrees then I can create additional camera views beyond the first 60 degrees by setting the heading offset to 60. This way I can produce 360 surround video footage with ridiculous resolutions well beyond 20 thousand pixels.

Time to wait between frames is simply a kludge to give my computer time to save the image file after a snapshot has been taken from Google Earth.

Basically GEMovie drives the camera inside Google Earth and instructs Google Earth to take snapshots which end up on the windows clipboard. GEMovie then detects the clipboard has changed and stores the clipboard content into a sequentially numbered file.

Folder for frames determines where those files will be stored.

The Filesize slider allows me to specify the level of JPeg compression or uncompressed BMP files. This can get pretty big. 9366 1080p frames add up to over 33 Gig of data. But it will be perfect.

The thumbnail shows the last image captured. Underneath it you can set the size of the captured image. It simply instructs the Google Earth window to be setup at a certain size taking into account the window borders and title bar.

Underneath that there is a start and end frame number with a SET button. This determines which camera positions will be rendered to images. Clicking the SET button also sets the Google Earth view to the start position so it is ready to record.

So then the whole show is started by clicking on the Record button. This causes GEMovie to move the camera to the next position, wait for one second (As specified by "Time to wait between frames") before it instructs Google Earth to take a snapshot.

The waiting time is to ensure Google Earth has fully streamed in all the data. It has to be a dumb time because I have no means of telling when Google Earth desktop is done loading.

Across the bottom is a progress bar showing how far we are in rendering the frames. Once this process is complete (Or I can click STOP) we can proceed to compile the frames into a video.

I am doing this using FFMPEG. Currently my preferences are mostly hardcoded with the exception of the frames per second. It can be changed in the user interface before clicking on Build Video.

That button will call FFMPEG with the correct parameters and produce the final video file.

I'm pretty chuffed with this setup. It produced video that is far superior to the movie maker feature inside Google Earth Pro and it can produce video at any size you want even if the video resolution is greater then your screen. I tried 2160p but the highest vertical resolution I can get out of Google Earth is 1861 pixels (See image) while captured on a 1080p display! We 
2 Photos - View album

Post has attachment
3 years ago I wrote Tourmaker. A browser based precision camera animation tool that is fully based on cubic splines. It is capable to produce mathematically exact camera positions following a spline that is editable in real-time. The output is a long list of camera positions for each movie frame. It can even do camera offset for super high-res surround videos with resolutions as high as computers are capable to handle.

I also wrote GEMovie a few years back but refined it a bit as I currently have a museum visualization project that requires stupid high quality video footage. Movie maker in Google Earth Pro is hopelessly inadequate.

GEMovie Talks to Google Earth pro by sending UDP data packets that setup drive the Google Earth camera. Then it waits for a one second after which it sends a key press to Google Earth CTRL ALT C  which causes Google Earth to copy the current screen to the clipboard.

GEMovie then detects the fact the windows clipboard changed and saves the image to a file with a sequential file name.

Finally I use FFMpeg to compile the image sequence into a video. The result is stunning and unfortunately. I can't show it to you. :-(

OK, one single frame then ;-)

It is so cool that software I wrote ages ago, suddenly becomes relevant. But it is such a pitty that come December all this stuff will become useless when Google Earth plugin will no longer work.
3 Photos - View album

Post has attachment
Transition from KineticJS to Pixijs looks like a good idea. Here is the dialKnob control for you to try. It should work on any browser including Touch screens.

Tap/click and hold to drag the knob around. You can drag outside the control area which makes adjustment easier. Double tap/click to center the knob.

Please let me know how it works for you in the comments.

Post has attachment
The ships 2 simulator is using a canvas that lies over the top of Google Maps. The javascript code uses KineticJS to render to the canvas but KineticJS is no longer maintained.

In addition I was unhappy about the performance of KineticJS and tests proved that pixijs is a much faster option. Also Pixijs is maintained by a company rather than a one man hobbyist and more likely to stick around (I hope)

So, I am considering a big overhaul on the ships2 application and replace kineticjs with pixijs with some added advantages such as touch support meaning ships2 can be played on touchscreen devices.

More research to be done to find out how big a job a change over is. The main issue will be how well the coordinates translate. But with the improved render speed I will be able to render much nicer graphics.
Wait while more posts are being loaded