Dear shipmates,
A new status update on our progress with the Android port of Floating Sandbox!
Remember the nifty 3-milestone plan that I had outlined a few months back? Well, let me start with an admission of guilt: I've deviated from the plan, your Honour.
Milestone 1 is complete, as announced in February.
I was then supposed to work on Milestone 2 - the port of the physics engine and rewriting of the "glue" - when I changed my mind and started working on the first half of Milestone 3, namely the UI framework. I wanted in fact to work on something fun and creative - and the results paid off I have to say.
After a couple of iterations writing and re-writing code, Floating Sandbox Mobile has now a stable, versatile, and performant UI framework entirely built upon OpenGL ES! This new subsystem is built upon "classic" UI concepts - such as Windows, Controls, and Event Handlers - but it's focused on touchscreens and thus caters to the new needs of Floating Sandbox on mobile platforms.
On top of that it's optimized to minimize both the number of OpenGL system calls necessary to draw the UI at each frame, and the bandwidth necessary to transfer vertex and attribute arrays to the GPU. It's so optimized that at each frame, the whole UI is rendered with only 3 system calls and with *zero* buffer uploads when there are no changes to the layout.
You can catch a glimpse of the first UI features (the tool selector, the settings window, and the rendering of text) in my latest video:
As you can see towards the end of the video, the new UI framework also facilitates auto-layout of controls when the screen changes orientation.
With the UI work behind me, I've resumed following the original plan and I am focusing again on Milestone 2. So much that last night I've finished porting the entire simulation engine to Android (took only half an hour, thanks to the fantastic work achieved in Milestone 1) and tonight I will officially begin working on the "glue"!
The most time-consuming task for Milestone 2 will consist of fine-tuning the simulation code for ARM CPUs - the CPUs that are nowadays ubiquitous in mobile devices. The core simulation algorithms in Floating Sandbox for PC are in fact currently implemented with x86 intrinsics, but these will have to be re-written for ARM CPU's in order to take advantage of the vectorial computation capabilities of the ARM floating-point units. Part of this work will consist of getting familiar with the various ARM architectures out there to try and make sense of the environments in which Floating Sandbox Mobile will run.
As always, wish me good luck as I enter this new rabbit hole
Gabe
9 comments