Lights Off Settings

Working on all sorts of things at the moment, but here's a quick preview of the Settings pane for Lights Off. This might give you hints towards the directions being taken for Lights Off 2.0. Enjoy =)

Blog Update

You may have noticed some recent changes to the appearance of the blog: • Firstly, all my current and upcoming applications are featured prominently at the top of the page. This allows you to click on an application to display any blog posts about said application. Will be a great navigation tool for people wanting the up-to-date information about certain applications without having to sift through the other blog posts. • Secondly, my latest Twitter tweet is always displayed above the latest blog post. This is a running commentary of all things related to me, and as such can often include valuable nuggets of information about any of my iPhone applications. I hope these two additions will combine to make this blog more friendly for new visitors, especially as the App Store will direct customers to this blog for more info about any of my applications. This isn't just a static webpage, it's a direct conversational approach to customer support and I hope it will stand by me in the long term, and of course allows me to post screenshots and/or videos to help out. All my open source projects will be hosted on Google Code as and when I can make them public. I will provide more information and proper links in the sidebar when that occurs. Until the next update! -out

Speed Testing

So, guess what, it works, and is pretty accurate too (I presume this is GPS-compatible only). It starts to register changes if you're going more than 4km/h from what I've seen, so that must show the accuracy of the GPS receiver inside iPhone 3G. Even better, you'll see this app on the App Store as soon as Apple OK it =) My first App Store release, and yes it's free.

MobileNuker

So… who's been a naughty boy then? I continued work I'd spent on iPhone OS 1.0 on porting a WinNuke app to the device, for proof-of-concept purposes only. What it does is uses the RPC out-of-bounds exploit existing on Windows 3.x, Windows 95, Windows NT 3.x, Windows NT 4, and Windows XP. On XP it causes a svchost crash, meaning the computer does a forced-shutdown with a timer to alert the user. On the earlier platforms, it causes an instant Blue Screen Of Death. No this app will never make its way to App Store, don't ask =) Will be hosted on Google Code as with my other open projects. I did a quick n' dirty video capture showing it in use, no smoke and mirrors; it's just a straightforward port of the Linux/Unix code. The target is XP SP0 running in Vmware and using shared networking. YouTube Video: http://www.youtube.com/watch?v=Rt4_zO0hmV8

SpringBoard Icons

Stack Update

So, currently, SpringBoard goes out of its way to kill any GUI app that dares not be launched by it. So still no update on the feasibility of getting Stack working as a daemon. Otherwise, the UI stuff is up and running on 2.0 with both fan and grid view. Interesting menuing system to add to an application perhaps?

[MobileDoom] UI Update

Just working ideas out, here's a look at the current build:

Options

As mentioned earlier, the use of either rendering mode in Doom is up to you at compile time:

Whither CoreSurface?

The iPhone Doom port is knowingly destined never to hit the App Store, so one important question is asked:

Should I use only official (read SDK/NDA) APIs, or should I branch out into other APIs to make the game run faster?

I can't honestly answer that. I enjoy having the preference in my code, and I intend to let other have said preference when the code hits the GoogleCode project site.

So, built into the code is an #if switch, allowing you to choose whether to use the UIKit (and completely App Store-allowed) API or the private CoreSurface screen buffer API (being private, the only documentation comes from the iPhone Open Toolchain and is not covered by non-disclosure).

CoreSurface is a direct and insanely fast screen buffer, allowing you to draw graphics as fast as the hardware permits and without having to go through the CoreGraphics layers directly. Similar to the iPhone OS 1.0 code, the game can render into a CoreSurface buffer which is then displayed inside a Core Animation layer. Why would I bother doing this? For a software-rendered game like Doom, it's an order of magnitude faster than what I must do for UIKit (rendering the buffer directly into a CGImageRef and blitting that to the screen). CoreSurface is what many of the unofficial emulators and game ports use, including Zodttd's brilliant Quake 1 port to iPhone.

With CoreSurface enabled in Doom, the framerate is super-smooth and the colours are as they should be. So I will leave the option in the code for budding developers to play around with. And here's hoping Apple are given some impetus to make CoreSurface available through the public SDK, as I think the benefits would be very welcome.

[MobileDoom] Accelerometer+Landscape

Just playing around with possibilities atm, using the accelerometer for controlling forward walking and standstill (backwards doesn't seem to work in Doom code… will investigage). Large touch targets for turning and shooting, have tried accelerometer based turning but wasn't impressed, but we'll see.

Bonus Side Effect! Doom 2 Running =)

Looks like the iDoom source has full doom2 support, so I loaded in the doom2.wad game file and it seems to be working great!

[MobileDoom] A few more gameplay shots

Well, it seems to be working alright, no crashing so far. Even managed to get to Level 2, so I think this code handily beats our original port ;-) Apologies again for the even weirder colours this time, I'm poking around trying to get the right set.

Doom's Working =)

I swapped out the engine code with that from iDoom 1.3 and ported over the iPhone glue code, and now I have a fully working game with sprites, enemies, door opening, and controls. I'll have to keep working on the palette stuff as the colours are rather off, but I'm rather pleased at getting it all running through the SDK =)

I hate the Doom engine (aka, John Carmack, fix my code please =)

Right, so, I finally managed to get drawing moved to UIKit from the private CoreSurface APIs in Doom, and get meaningful output. I spend an hour working out iPhone OS' button mechanisms (very nasty btw, no [self action] or [self target], oops, NDA), finally get really nasty looking but working controls so I could test the rest of the game and performance, and GUESS WHAT? Some nasty bugs (most definitely my fault due to hacks used for iPhone OS 1.0) in the WAD/sprite engine mean that no in-game sprites show up. No items, no keys, NO ENEMIES. So, while the levels are playable, you're pretty much flying blind until I go back and undo the damage. But hey, it's actually up and running. Once I have the whole lot finished off, I'll make sure to post the code back up to the googlecode repository where the 1.0 code lies. Until then, have a screenshot. A nasty, yucky screenshot. But a screenshot nonetheless =)

Speed

Another work-in-progress (gotta love a new platform, you keep thinking up new ideas!). No idea when it will be finished or hit the App Store, but it will be after the next major release of iPhone OS (think late September). So, it's dead simple, shows you how fast you're going according to the GPS sensor in iPhone 3G. Will test it on the road in a few days and see how accurate the sensor is.

Lights Off 2.0 Sneaky Peek!

Still a work in progress, more of Adam Betts' fine art. More to come - keep visiting =)

Lights Off 2.0 direction whiteboard

Yes, I realise it's black and not white =P Redesigned GUI not shown.

Shanghai Mahjong (BUY IT)

So, very simple, if you enjoy the odd game of Mahjong, and would love said game on your iPod touch/iPhone, definitely buy Shanghai Mahjong. Lickable graphics, subtle animation, hundreds of tile layouts to choose from, downloadable online content (backgrounds and tilesets), and "swoosh" sound effects! All for €3.99. It's a steal, don't even think twice.

Future (App Store!)

Right, so we have two games coming to the store at an undefined time in the near future. Lights Off will be the iPhoneOS 2.0 remake of Lucas Newman (currently an iPhone engineer @ Apple) and Adam Betts' insanely popular and addictive unofficial iPhone game. Adam and I are working on gameplay ideas and new artwork, and in general thinking up how to make this THE definitive Lights Off. Watch this space! The other game has yet to have its gameplay or name finalized, so I'll leave you on a scavenger hunt of my past blog posts to find more info about it. I am working on other confidential iPhone ventures too, and I hope to be able to show you the fruits of our labour soon. Shouts out to Lucas, Adam, Steve Demeter, Mike Lee and Wil Shipley. Onwards and upwards!

Twinkle (aka, GET THIS APP)

Twinkle. It's a Twitter client (with more services coming) and independent location-based messaging app. With stars. Another winner from the Tapulous team, kick-ass UI and ultra-friendly user interaction. It's free. If you have Twitter, GET THIS NOW (link).

iPhone 3G

Not bad - I ordered on O2's site last Friday before going to Oxegen, arrived today, when I'm just recovered from Oxegen. Beautiful device, like a polished pebble. Doesn't fit in the 1st gen iPhone dock, grr $$$. Gotta wait a few days for my SIM to be ported from Vodafone and activated.

Games!

Aha found a back door into some of the games. Log into American store, copy game URL, log back to Irish store, open URL in Safari. == instagame. Some sweet titles amongst all that other crap.

This is not a watered down version of Lights Off…

…or a mobile version of Lights Off, or the kinda-sorta-looks-like Lights Off, Lights Off. It's just Lights Off, on your phone. Based upon the original iPhone Lights Off idea created by Lucas Newman and Adam Betts, inspired by Tiger Electronic's Light's Out. Lucas has suggested I release it, so I'm working to clone (and improve upon) his original code in a clean-room fashion. Not all the animation and functionality is there yet, but I'm working on it. Includes all 212 levels from the original game. My thanks go to Lucas Newman (now at Apple), one of the people who originally inspired me to develop for iPhone! video

So, why no Stacks?

People have been asking when Stack is gonna be coming to iPhone 2.0. The honest answer is, it can't with the SDK. Firstly, applications are sandboxed - you cannot access files or resources outside of your sandbox (i.e. can't grab the app icons). Secondly, Springboard doesn't allow you draw on top of it (from what I've seen). If and when a proper jailbreak is released that removes both of these limitations, then it's possible I can offer a download of MobileStack through Cydia. I will certainly try to write it, even as a proof of concept to myself. But as an official application through the App Store, it will never happen. That doesn't mean the code won't be put to good use! Stack provides a very capable pop-up fan or grid menu implementation; keep your eyes pealed for that showing up elsewhere ;-)

SameGame in action

Early build, not representative of final product. Sound is a work-in-progress, scoring method to be implemented, and other coolness that I can't talk about. =) video

iPhone Apps

So, been bored and worked on a few apps with a good friend and mentor of mine. Who knows what will be released, gotta wait for Apple to clean up its act on the Irish App Store.

App Store Day (iPhone 3G Day-1)

Well, been quite pleased with the launch of the App Store; there are some great titles available. Just not in Ireland. FUCK. While the US gets to play with Super Monkey Ball, Enigmo and Cro Mag Rally, we Irish have "Mr. Shuffle" and "FingerPaint" as the sole Games category entries. Grrr. Nevertheless, there IS some great software available. Remote (Apple's iTunes/AppleTV remote), Twitterrific, Sketches, AIM, NYTimes, Exposure (digging the find-flickr-photos-near-me feature), Facebook (Facebook chat included! Just not working yet…) and iScopes (not that I care for horoscopes, but I simply love the Core Animation wheel rotation UI). (A deluge of screenshots below) So where are my apps? Mr. MobileStack developer, have you not got any apps for the App Store? Alas, no I do not =) I have a few ideas (mocked up in code) that I haven't seen replicated, so I might finish them up and submit. Regardless, there's a LOT of "shitware" in the store (Erica Sadun's, Glenda Adams' shame on you, to pick out a couple). And, yes, the Steven's Creek software is up. Seems like HIG-adherence isn't important to Apple anyway =) P.S. Apple, please get all those bloody eBook-in-an-app entries into somewhere self-contained.

Flare Kit : Learning Interface Builder's Plugin Model

Well I've been spending the past few days furiously trying to learn something new. Took me a long time to decide on 'what', but I've settled on the following idea:

• Moving my custom controls to Interface Builder, so I can drag and drop them into new apps, set all their properties, and use them like never before - all without having to write a line of code.

Why did I pick this? It allows me to learn something new, yet not have to stray out of my own code. Less headache! Play in my sandbox! Yay!

Fortunately, IB3 in Leopard makes this really easy, once you have a good grasp of Cocoa coding. I went back to my flagship demo app, the Flare browser, and chose the UI elements I wanted to rip out and make reusable:

  • The Tab View - arguably my prettiest custom control
  • The Zoom Slider - complete with floating value indicator
  • The URL Field - essentially a clone of Safari's address field. Icon+text, doubles as progress bar.

A bit of mucking around later, and a bit of learning about NSCoder (for archiving class values to a nib), I had a working version! I went ahead and refactored everything to make it clearer too. I dub thee Flare Kit!

So now, with my palette, I can create the following UI without writing a single line of code! This will make a lot of things easier in the future, and I can continue to work on my palette and make its classes rock solid and usable anywhere. Who knows, maybe someday there'll be a public or source release =o) Thanks go to Len Case as usual, for helping me out and talking me through ideas.