Terpiez is an augmented reality (AR) game where players search for and capture virtual creatures called Terpiez hidden around campus. The game features statistics tracking, a map to locate Terpiez, a list of captured creatures, and detailed views of each Terpiez.
-
Title Bar and Three Tabs:
- A title bar at the top of the application.
- Three main tabs: Statistics, Finder, and List.
-
Statistics Tab:
- Displays the number of Terpiez captured by the user.
- Shows the number of days the user has been playing the game.
- These values are initially hard-coded.
-
Finder Tab:
- Displays a map with the user's location and the distance to the nearest Terpiez.
- Uses a fixed image to represent the map.
- The distance to the closest Terpiez is initially hard-coded.
-
List Tab:
- Displays the types of Terpiez the player has caught.
- This list is initially hard-coded with built-in icons representing the Terpiez.
- Clicking on an icon takes the user to a detailed view.
-
Details View:
- Shows a larger image of the Terpiez along with its name.
- Initially, only the name of the Terpiez is displayed.
-
User ID and Activity Tracking:
- User ID and days active are stored in Shared Preferences.
- Connects to a Redis database to store and retrieve data.
- Prompts for Redis credentials on first startup and prevents further action until entered.
- Credentials are stored securely using
flutter_secure_storage
.
-
Redis Database Interaction:
- Stores data as JSON on the Redis database.
- Tracks Terpiez found by the user using the app's UUID.
- Fetches location data, Terpiez details, and images from the database.
-
Map and Data Display:
- Main map shows the closest un-caught Terpiez location and the user's current location.
- Removes caught Terpiez from the list of locations.
- Downloads and stores Terpiez images and species data locally.
-
List and Detail Views:
- List of Terpiez shows thumbnails and names.
- Detail view includes the name, full-sized image, stats, description, and a map of capture locations.
-
Catching Terpiez:
- Displays a dialog with the Terpiez image and name upon capture.
- Monitors connection to the Redis database and shows notifications for connection status changes.
-
Sensor Input:
- Replaces the "Catch" button with a shake detection using accelerometers.
- Provides visual cues when a Terpiez is in range.
-
App Icon:
- Replaces the default Flutter icon with a custom icon for both Android and iOS.
-
Sound Indicators:
- Plays a sound when a Terpiez is caught.
- Plays a notification sound when within 20m of a Terpiez.
-
Background Service:
- Creates a background service for notifications.
- Communicates between the app and the background service.
- Tapping a notification opens the finder tab.
-
User Preferences:
- Adds a Drawer with user preferences.
- Allows users to enable/disable sounds and clear data.
- Persists user preferences for sound settings.
All Terpiez images by Noah McMullen.