We’ve just finished a new version of Orbitals, with some sweeping graphical changes, and some interface tweaks.
Instructions are now included in-game, via the new Instructions button.
Click the image to play!
We’ve just finished a new version of Orbitals, with some sweeping graphical changes, and some interface tweaks.
Instructions are now included in-game, via the new Instructions button.
Click the image to play!
I’ve just finished writing a first version of a JavaFX web game called Orbitals.
To play, click, drag, and release the small spaceship to launch. Use the gravity of the planets to attempt to reach the spinning starbase.
Lost your ship? Unlikely to get home? Press the RESTART button and start the level again.
Can’t solve the level? Press AUTOSOLVE and the computer will show you how it’s done!
Want to try a new configuration of planets? Hit the GENERATE button and try a new challenge.
Try to beat the par time. Sometimes it’s easy, other times it’s hard. Really hard.
Bugs? Recommendations? Comments? Post below and I’ll consider them for the next version.
04/09/09: I just noticed a bug that stops the game working properly in some browsers. Should be fixed now.
04/09/09: I’ve also taken out the signing – the program’s not accessing the local computer or any other site, so it wasn’t needed
Anyone who has been developing for Symbian will well know of the constraint of having to use MS Windows to do the development on. Windows is the only ’supported’ platform even though much of the tool chain is based on open source components easily compiled to Linux and OS X. There are workarounds, such as the efforts of Martin Storsjö here, which is how we currently do it in our offices, as we predominantly use Mac’s and Linux machines for development.
With Nokia open-sourcing Symbian, I for one have been hoping for some effort towards making the SDK tool-chain cross-platform.
The Symbian Foundation have been releasing various code and initiatives, but as yet there is no mention of any work towards making the SDK tool-chain truly cross-platform. Lets just hope at some point this happens though, because as good as Martin’s work is, its not ideal and is always playing catch-up to Symbian releases.
Over the last month there has been quite a bit of movement in the ’smart’ phone market.
We have Nokia’s eagerly awaited N97, the Apple iPhone 3G S and the news of the upcoming Android phone, the HTC Hero.
To top this off, we have a new version of Eclipse which has a package, Pulsar, aimed at easing J2ME development to multiple target devices.
So lets start with the Nokia N97…
I have been a happy Nokia user for some time. The N95 was in my view the best smart phone around. It ticked all the boxes for me. Then the update to N96, which was to be honest just a new-look N95, so still a decent phone. However, with the splattering of touch-screen phones now on the market, Nokia needed an update to enter this space too – the N97.
The pre-release photos and news showed a super looking touch-screen phone that also has a slide-out qwerty keyboard (very useful with a touch-screen phone for giant hands like mine).
However, first reviews are awful (here is one from The Register). From poor keyboard to poor display to poor build quality to poor software with lots of bugs. A real shame. If they had gotten this device ‘right’ it would have been a real contender in its market place.
The iPhone 3G S…
Well, to be fair, this is a well built device. The operating system is also pretty solid. Nothing mind-blowing added, well, apart from the compass that is. How did we all live without a compass on the Jesus Phone!
The most interesting thing is really the version 3 of the iPhone’s operating system which now has parental controls. What this equates to is Apple allowing the creation of ‘adult’ applications.
The HTC Hero…
This is important because it will be an Android based phone that doesn’t look like a geek phone (not that I personally dislike the look of the G1). It looks slick, has good specifications and hopefully will work well and be built well. Importantly it looks like Android will continue to spread.
And so finally Eclipse Pulsar…
It is well known in the J2ME development community how darn difficult it is to target multiple J2ME devices. Pulsar aims to make it much easier to install the relevant SDK’s and create Java based applications which target them.
I have yet to try this package out, but if it works well, we will likely make a move towards using it. More on this one soon.
The accelerometer in the iPhone allows for lots of interesting new methods of user interaction (here’s a good list of examples.)
We’ve recently been making an iPhone app which required a tilting back and forth mechanism — essentially the ability to ‘nod’ and ’shake’ the iPhone. A tilt back and forth on the x-axis being a nod, and on the y-axis a shake (the app runs in landscape orientation.)
To watch for a nod or a shake, you can’t simply observe the present accelerometer values — you need to watch a range of them over time. Once you’ve got a set of data over time, you can do a bit of analysis on a particular window and see if it matches the gesture you’re after.
The free Context Logger app is very useful to watch the incoming data from the accelerometer and see what the data looks like for the gesture you’re after. For our gesture, a nod or shake, you get some kind of oscillating waveform. In an ideal world with ideal user interaction you’d get a nice
smooth sine wave with a fixed amplitude and frequency every time — not likely though in real life! You’re more likely to get some kind of triangle or saw wave with all kinds of bits of noise.
If you could really force the user to do one kind of nice wave for you, you could probably do a fourier transform to look at the incoming data and check for a spike at a certain frequency (e.g. suggestions here.) I do think there’s something to be said for forcing the user to conform to an expected input gesture — you can’t possibly capture every user’s interpretation of what a nod or a shake is — but at the same time you have to give a bit of leeway.
So in our case we tried to be more general. We simply watch for oscillations (ensuring the peaks are over a certain amplitude to ignore the low-level noise you always get) and if we get enough in our window on one axis we take it to be a nod or shake. We take an oscillation to be a change from a negative deviation from the mean of the values in our window, to a positive deviation from the mean, or vice versa.