iScheme has been used to develop non-trivial distributed iPhone applications. Below are the representative example applications:
AmbiScrabble is a digital version of a scrabble-like game where players work collaboratively with their iPhones to form words. The screen shot below shows the AmbiScrabble application on the iPhone.
The game works as follows: Players are organised in teams and each player has a rack of letters. Letters are consumed by forming valid English words. The team that first consumes all its letters wins. Players belonging to the same team can exchange letters among themselves.
The AmbiScrabble game has been designed in a peer-to-peer fashion without assuming a centralised server to coordinate the game. It is also fault-tolerant such that player failures do not hamper the game progress. These design choices are primarily motivated by the fact that the game runs on iPhones equipped with wireless technology. Connectivity using such a technology is often characterised by frequent network disconnections either as because of limited connectivity or users may continuously move about.
We implement the game logic and distribution concerns of the AmbiScrabble application in iScheme, while the graphical user interface (GUI) is implemented in Objective-C using the Cocoa framework.
The videos below demo the AmbiScrabble game application running on the iPhone emulators. In the demos we use three iPhones (2 emulators and 1 iPhone device). The recording only shows the emulators but the interactions involve the three devices.
Thanks to Nick De Cooman for undertaking the AmbiScrabble project (under supervision of Engineer Bainomugisha and Elisa Gonzalez Boix) to validate the Scheme and Objective-C symbiosis
PolyGlot chat is a distributed chat application that enables users to write text messages in their preferred language and have the text message translated in realtime to the receiver's language.
The application works as follows: When a chat application is started the user is prompted to specify the preferred language. Then a text chat conversation can begin with a selected a buddy. When a chat message is received from a buddy, it is automatically translated from the buddy's language to the user's specified language. For instance, if Bob (an English speaker), sends a message “Hello there” to Tim (a Dutch speaker), the message is displayed as “Hallo daar” on Tim's chat window.
The PolyGlot chat application has been designed in a peer-to-peer fashion without assuming a centralised server. We implement the chat logic and distribution concerns of the application in iScheme, while the graphical user interface (GUI) is implemented in Objective-C using the Cocoa framework. The translation happens using the Google translator API which is accessible from iScheme, thanks to the Objective-C and Scheme symbiosis.