Unofficial iOS client for the popular GPS game Wherigo® Geocaching. I started working on this iOS app when Groundspeak Inc. removed the old unmaintained Wherigo app from the App Store at the end of 2020, and there was a 2-month period where there was no option to play Wherigo games on iPhones and iPads.
Later in 2021 Groundspeak relesed a shiny new Wherigo app that works/looks much better than the old one. It seems like a complete rewrite. Now I don't see an extra benefit of creating a third party app for the same purpose anymore bacause the official app is a very strong competitor.
Since I invested about a hundred hour in this project I'd like to open source this app which is capable to read cartridge files from Lua binary and even start the gameplay low level without UI. I couldn't find any working open source iOS client to play Wherigo cartridges so it might be interesting to others.
Wherigo is a free interactive, location-based experience on your GPS capable devices. You can interact with characters, manipulate items, accomplish tasks set before you, and answer questions on the field. Just like with multi stage geocaches, you have to go outside but the gameplay is mostly virtual and doesn't need physical containers to handle point by point navigation like Geocaching.
Wherigo platform was published by Groundspeak in 2008 and the cartridges (games) were designed to run on Garmin GPS devices. The concept of these games is to go out, have a walk and discover places so don't expect rich graphics since even a 10 year old Garmin can run it.
There are over 1000 Wherigo geocache worldwide. Cartridges are created by the community with builder applications but advanced users can even write the full source code. Either way the outcome is a Lua binary with .gwc extension that contains the game.
Uses the following projects:
- openwig - Core business logic in Java
- kahlua - Lua virtual machine with standard library for J2ME
- j2objc - Tool to translate Java source code to Objective-C (version 2.7)
- WhereYouGo - Android app, I'm using a few Java file transcompiled to handle cartridge files
I tried to rewrite the core business logic in Swift but it was so difficult and low level that I ended up transcompiling the existing openwig and other Java sources to Objective-C and called that from Swift. The transcompiled code might have strange method signatures and when calling these, it's really not Swifty. I didn't pick those poor method names, it's generated by j2objc.
Please contact me if you're interested to work on this project. If you found a bug, feel free to open an issue or even open a pull request to fix it.
Everyone is welcome to join.
- Import cartridges from Files app
- List screen to display imported items
- Details screen to show the game's description, with all metadata
- UI to display nearby zones, player actions, inventory, etc...
- Saving game state when exiting
- Loading saved gameplay
- Onboarding for how to import a cartridge in the app