Retro Yeti Escape Game for iPhone and iPod Touch

I’ve just finished developing Yeti Escape for Vivid Reflection, my iOS development company. Yeti Escape is a new Christmas-themed retro game for iOS. The story: Present-hungry yetis have escaped from the North Pole and threaten to ruin Christmas. Pixel Santa must save the day by throwing spare presents at them. Can he still make his deliveries on-time? The game is available now on the App Store and I’ve made a short 2 minute video demoing the retro gameplay and awesome 8-bit sound effects and music so please check it out.

Yeti Escape Demo – 8-bit Retro Arcade Game from Vivid Reflection on Vimeo.

The Yeti Escape game is made in Cocos2D and has Game Center leader board support so you can challenge your friends too. It’s a fun variation on the classic 8-bit arcade shooter. You play by tapping the screen to fire presents from your sleigh, aiming to hit the yetis. Once they consume a present they disappear back to their slumber in the North Pole. If they escape, they eat everyone’s presents and it’s game over. In some ways it plays a bit like a modern-themed twist on the arcade classic Missile Command. As Pixel Santa is moving through the game world, you have time and aim the shot just right to hit the moving yeti. There are a number of different yetis all of differing strengths and speeds which try to escape at different times and if you’re not expecting it you’ll find yourself shrieking as some “super powerful bad-ass” sumo yeti escapes with your last life.

Please let me know what you think about the game in the comments. What’s your best bit about 8-bit retro games?

If you’d like to keep up-to-date on the apps and games I develop, follow @VReflection on Twitter or like Vivid Reflection’s Facebook page. The game has just gone live and Yeti Escape can be downloaded on the App Store now.

iPhone App: Windsock takes off

Windsock Screenshot of Dynamic mapsWindsock app iconWindsock, my latest iPhone app is live in the App Store. It’s a clean, easy-to-use app that lets you check the wind forecast remotely and up to 4 days in advance. I built it because a hobby of mine is remote control plane flying but often there are days when the wind is too strong or in the wrong direction and packing the flight gear, driving down to the park only to find it is too windy to fly was frustrating (the plane has a wingspan of 56″ which is tricky to get out of a car at the best of times let alone when it is windy also strong wind is likely to make you lose control of your model and fly it into a tree or worse).

Instead I built this app to drop windsock markers down on a map and get the latest wind readings for a near-by location so I know if it’s great weather to fly. You can also save it as a site and with a quick glance see the best park or field to fly in. It is also iCloud ready so will sync your sites between devices and has a relative compass mode to help you discover the wind direction – beats throwing a bit of muddy grass in the air!

The app uses high resolution data to give high-resolution readings every 3 hours up to 5 days in advance. Tapping on the detail view within the app will condense the rows to give you a daily overview of the wind readings. I’ve tried to design it to work in two modes, the first mode is more of a quick overview so you can compare sites and decide the best one to go to, the other mode lets you drill down and view the forecast for a particular site.

It’s also a handy app if you do other outdoor activities, such as kitesurfing, windsurfing, paragliding, kite flying or just fly model planes. Please check it out on the App’s website or on the App Store.

‘Cut the Rope’ HTML5 JavaScript Preloader

Screenshot of Cut the Rope HTML5 Javascript web appDevelopers from the popular iPhone game Cut the Rope and a crack team of HTML5 gurus from PixelLab, have developed an awesome JavaScript version that runs inside most modern web browsers using JavaScript and a number of powerful HTML5 features such as canvas and media APIs. You can find out how they did it from the behind-the-scenes video they’ve posted.

One of the interesting snippets from the dev blog is that the group behind the creation of the app have released an open-source preloader for JavaScript apps called PxLoader. It supports some extremely useful features such as being able to load in your canvas images in groups, use progress bars, get callbacks when various groups have loaded and supports a plug-in architecture so you can load in sounds too. It’s released under a fairly liberal MIT license and the PxLoader source is available on GitHub.

Image loading in Groups

A good example is using it in an HTML5 game to load menu sprites before actual game sprites since you would want the menu to display and load first. PxLoader can also provide progress updates to many listeners and will scope the updates and statistics to only the set of “tags” a listener is interested in, a tag being the text name of that group.

// Delay each image and append the timestamp to prevent caching 
var baseUrl = 'http://thinkpixellab.com/pxloader/slowImage.php?delay=1time=' + new Date, 
    $log = $('#sample3-log').val(''), 
    $menuProgress = $('#sample3-menuProgress').text('0 / 50'), 
    $gameProgress = $('#sample3-gameProgress').text('0 / 50'), 
    $totalProgress = $('#sample3-totalProgress').text('0 / 100'), 
    loader = new PxLoader(); 

// Queue 50 images for each section 
var addImagesForTag = function(tag, $progress) { 
    for(var i=0; i < 50; i++) { 
        var imageUrl = baseUrl + '&i=' + i + '&tag=' + tag; 
            pxImage = new PxLoaderImage(imageUrl, tag); 
        pxImage.imageNumber = i + 1; 
        loader.add(pxImage); 
    } 

    // add a listener to update progress for the tag 
    loader.addProgressListener(function(e) { 
        $progress.text(e.completedCount + ' / ' + e.totalCount); 
    }, tag); // scope listener to the current tag only 
}; 

addImagesForTag('menu', $menuProgress); 
addImagesForTag('game', $gameProgress); 

// Listen to every event to update total progress 
loader.addProgressListener(function(e) { 

    // log which image completed 
    var line = ' Image ' + e.resource.imageNumber + 
        ' Loaded [' + e.resource.tags[0] + ']\r'; 
    $log.val($log.val() + line); 

    // scroll to the bottom of the log 
    $log.scrollTop($log[0].scrollHeight); 

    // the event provides stats on the number of completed items 
    $totalProgress.text(e.completedCount + ' / ' + e.totalCount); 
}); 

// Start downloading images for tags in prioritized order 
loader.start(['menu', 'game'])

You can play with a working example of the group image loading on the PxLoader homepage (Sample 3).

Reverting your library from a beta of iTunes

As an iPhone and iPad developer, Apple often present you with beta versions to install which sometimes require you to also install a beta version of iTunes. Of course the contents of these beta versions are under strict non-disclosure agreements but the process of rolling back isn’t so I’ll quickly explain how to do it…

When you installed the beta, it will upgrade your iTunes library database but if you try to downgrade back to the old version at a later date you’ll be presented with an error message saying that iTunes cannot read your library.

Don’t panic! The beta version has just moved your library database to a backup folder and with a simple drag and drop you can have your old library database up and running again. Your old database should be found in ~/Music/iTunes/Previous iTunes Libraries dated with when you upgraded. Just drag that back into ~/Music/iTunes renaming it to iTunes Library.itl (you’ll probably need to delete the existing iTunes Library.itl file too as that belonged to the beta version and you just uninstalled that).

That’s all you need to do to get your old iTunes library working again. Just before you begin make sure you back up everything!

WWDC Update: 5 key points for iPhone apps

It’s now been just over 3 weeks since the torrent of information unleashed at Apple’s World Wide Developer Conference refreshingly drenched the brains of designers, developers and engineers. I’ve resisted blogging about the public announcements to fully let the impact soak in and gage everyone’s reactions but now feels like a good time to talk about where the future of computing is heading.
Continue reading