ARG Tools for iPhone

As a few read­ers of this blog may know, I have been tin­ker­ing with iPhone devel­op­ment for about a year. Technically, a bit longer than that — since the first jail­breaks and com­mu­nity SDKs — but real­is­ti­cally, with all seri­ous­ness, about a year of what I’d con­sider above “tin­ker­ing” but below “pro­fes­sional.” In recent months, I even picked up an iPhone devel­oper cer­tifi­cate for code-signing. At first, it was for the “gee whiz” fac­tor of run­ning code out­side the sim­u­la­tor, on a real device, but I quickly came to real­ize how close I was to hav­ing ship­pable apps.

Given that intro­duc­tion, I would like to present my first offi­cial iTunes Store app, ARG Tools (iTunes link). It is a bit of a niche util­ity, aimed mainly toward puz­zle solvers and ARG play­ers, specif­i­cally with an eye toward live events. For a long time, I have had a set of JavaScript-based encod­ing and decod­ing tools at stackoverflow.org.  I find them to be use­ful, but not always con­ve­nient.  I designed ARG Tools with the fol­low­ing things in mind:

Offline Use — The tools and ref­er­ence are specif­i­cally designed to work offline.  You can load the app up on your iPod Touch and run off to an event with­out wor­ry­ing about whether a WiFi access point will be avail­able.

Countdown Timer Decoder — A com­mon theme among ARGs and trans­me­dia sto­ries is an ini­tial count­down timer.  It often acts as a buffer, allow­ing the word to spread and a com­mu­nity to build up before a game kicks off in high gear.  This tool lets you punch in the count­down value and see the exact date and time at which the count­down hits zero.

Common Encodings/Decodings — The app lets you decode a num­ber of dif­fer­ent for­mats, from ROT-n (1..25) to Vigenere (that would have been crazy use­ful for that ARGFest cake) to sub­sti­tu­tion to trans­po­si­tion to base 64.

Common Letter Representation Reference — Codes, love them or hate them, are not always trans­form­ing one let­ter into another.  Many times, they are turn­ing a let­ter into a com­pletely dif­fer­ent entity alto­gether.  I solved a puz­zle a few weeks ago in which 6-packs of beer rep­re­sented let­ters in braille.  The ref­er­ence sheets in this app include a num­ber of com­mon encod­ings like braille, Morse code, and sem­a­phore.

Google Search - A Google search bar is always vis­i­ble on the home­page.  I admit that the app can­not con­tain every pos­si­ble encod­ing, decod­ing, or let­ter rep­re­sen­ta­tion in exis­tence.  I once had to solve a puz­zle in which let­ters were encoded as chem­i­cal names.  I solved another in which I needed con­stel­la­tion names.  An in-app Google search is a touch away.

Quick LinksARG Tools con­tains an embed­ded browser with links to the top ARG and trans­me­dia forums and web­sites.  You can quickly get to that piece of encoded text, copy it, and paste it into the app.  In the field, you can use your iPhone to report updates from a live event.  Players that may only be famil­iar with a few of the included web­sites might be exposed to new and dif­fer­ent sites.  Webmasters: the main menu links all include the suf­fix “?source=iphoneargtools” if you have a fancy log­ging setup that lets you track such things.

Easily Obtained — The app is small enough to be down­loaded over the air.  It is also free-as-in-beer (but I chose not to go Open Source).  This means that Person A can show it to Person B and Person B can instantly down­load it onto her iPhone.

Easily Expanded — This is more of an “under the hood” fea­ture than a vis­i­ble one, but the main menu is just a data file (a plist, for those in the know).  It maps main menu entries (names and icons) to embed­ded “applets” (ViewControllers, for those in the know) for each of the types of encod­ing and decod­ing.  It maps to self-contained sta­tic web pages for the ref­er­ence mate­r­ial (braille, Morse code, and so on).  It maps to URLs for the web links.  This means it is rel­a­tively triv­ial to add new items.  This, in turn, makes updates and bug­fixes eas­ier.

So go forth!  Download the app!  Tell your friends about it!  Give it high rat­ings!  More details as well as a few more screen­shots can be found at http://iphone.netninja.com/applications/arg-tools/.  If you have sug­ges­tions for how to expand its func­tion­al­ity, please share.

Posted in: Code iPhone Puzzle Games

14 thoughts on “ARG Tools for iPhone

    1. I admit that it would be nice to have an Android ver­sion, but I have to echo what I men­tioned to @Ari0ck a cou­ple of days ago. I don’t have an Android device. Although I can write Java code, I haven’t done so in a few years, so my Java is a bit rusty. (The Android SDK is Java-based.) And most impor­tantly, I have enough of a work­load in the queue for iPhone appli­ca­tions that I won’t have the time to invest in brush­ing up on Java, get­ting use to the Android SDK and emu­la­tor, and all that good stuff.

      1. fFair enough. I was about to ask: “Would you enter­tain shar­ing the source so some­one else could build the Droid port?” But it’s prob­a­bly eas­ier to just build fFrom scratch, eh?

        1. I’m a lit­tle hes­i­tant to release the source of this app for a cou­ple of rea­sons. The first and fore­most is that it’s all writ­ten in Objective-C, so isn’t ter­ri­bly use­ful out­side of an Apple envi­ron­ment. I do have JavaScript source for the var­i­ous tools on the tool pages at stackoverflow.org. I wrote those pages ages ago and basi­cally just ported them to Objective-C for this project. It should be easy enough to port from JavaScript to any other language/platform.

  1. Hi Brian,

    You have made a fan­tas­tic appli­ca­tion. Thank you.

    But I have a com­ment con­cern­ing Vigenere cipher.

    ARG Tools uses non sig­nif­i­cant sym­bols for pass­word count­ing. That is why the result
    is dif­fer­ent for the same phrase with dif­fer­ent quan­tity of spaces or other non lit­eral sym­bols.
    For exam­ple,

    passphrase: “PASSWORD

    1)
    phrase: “MESSAGEFORCIPHERING
    result: “BEKKWUVIDRUALVVUXNY

    2)
    phrase: “MESSAGE FOR CIPHERING
    result: “BEKKWUV UOJ YWGKTRAFC

    3)
    phrase: “MESSAGE, FOR, CIPHERING
    result: “BEKKWUV, FGJ, TLEHWJEBX

    In gen­eral case, non lit­eral sym­bols should not influ­ence on result:

    1)
    phrase: “MESSAGEFORCIPHERING
    result: “BEKKWUVIDRUALVVUXNY

    2)
    phrase: “MESSAGE FOR CIPHERING
    result: “BEKKWUV IDR UALVVUXNY

    3)
    phrase: “MESSAGE, FOR, CIPHERING
    result: “BEKKWUV, IDR, UALVVUXNY

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>