Cedarville University Cedarville University
DigitalCommons@Cedarville DigitalCommons@Cedarville
Scholars Symposium The 2023 Symposium
Assassins App Assassins App
Corrissa Smith
Cedarville University
Hannah Oaisa
Cedarville University
Dilean Munoz
Cedarville University
Henry Anderson
Cedarville University
Follow this and additional works at: https://digitalcommons.cedarville.edu/rs_symposium
Smith, Corrissa; Oaisa, Hannah; Munoz, Dilean; and Anderson, Henry, "Assassins App" (2023).
Scholars
Symposium
. 9.
https://digitalcommons.cedarville.edu/rs_symposium/2023/poster_presentations/9
This Poster is brought to you for free and open access by
DigitalCommons@Cedarville, a service of the Centennial
Library. It has been accepted for inclusion in Scholars
Symposium by an authorized administrator of
DigitalCommons@Cedarville. For more information,
please contact digitalcommons@cedarville.edu.
t
Abstract
Assassins Mobile App
Faculty Advisor: Dr. David Gallagher
Students: Henry Anderson, Dilean Muñoz, Hannah Oaisa, Corrissa Smith
Contact Us: assassinsappbeta@gmail.com
Technical Architecture
The Assassins app is created using Flutter and Google’s Cloud Firestore
database. It consists of four main “layers”: the database (in Cloud
Firestore), the database API (implemented in the app using the FlutterFire
library), the app objects (an in-app abstraction of the data), and the UI.
These layers are kept as separate as possible to modularize the code.
Cloud Firestore
Cloud Firestore is a document-based database. Unlike a typical
relational database, which stores data in tables associated by various
unique-ids, data is stored in a hierarchical format of collections and
documents (loosely similar to the idea of folders and files). As a result, data
is stored in a very JSON-like format, mimicking how the app objects will
store data. Cloud Firestore is external to the app.
Database API
Within the app’s codebase are functions that control reading and writing
from the database. These functions ensure that data is updated in real time
by attaching listeners to Firestore documents. When a listener is triggered,
the database’s listener code passes the new data to app objects and pushes
a global “updateping to the UI. With a relational database, some sort of
ORM (object-relational mapping) framework could have automated some
of this API, but because we used a document-based database, we
constructed these functions ourselves. The FlutterFire library provides
good support for reading, writing, and listening to Cloud Firestore.
App Objects
The app objects store all the relevant information about players and
games. They call database API functions as necessary to read and write
data from the database. However, because of the APIs abstraction, they
remain agnostic as to what the database really is and how these reads and
writes actually work.
UI
The UI is built using Flutters stateful widgets. These widgets are given
the app objects (ie, games and players) they are supposed to show. The
widgets are subscribed to a global update stream that informs the widgets
if any app object’s data has changed. That way, the UI does not deal with
the details of an app’s data changingit is simply instructed to refresh the
page.
Development and Deployment
Apple Instructions
Step 1. Install TestFlight
Step 2. Scan QR code
Step 3. Join the beta and install the
app!
Android Instructions
Step 1. Scan QR code
Step 2. Tap on the .apk file
Step 3. When prompted, go to
settings and enable the installation.
RE-ENABLE THIS SETTING LATER.
Step 4. Install app
Language
The Assassins app is built in the language Flutter, which is based on Dart. Flutter is a
cross-platform language, meaning the app does not have to be rewritten for Apple/iOS
and Android devices.
Development Environments
Flutter is a cross-platform language, but it still needs to be compiled for each
platform. As the Android platform allows developers much more ease of access (iOS
development requires a Mac computer and is much more difficult to test on a real
device), most of our development was done in Android Studio. One member of the
Assassins team regularly tested the developing app on iOS using Xcode. Most cross-
platform difficulties involve connecting the app to outside resources, such as the
database and notification streams. Otherwise, there have been very few cross-platform
problems.
Deployment
Deployment of the Assassins app is currently in its beta phase. Deploying a beta app
to Android devices is relatively simple: an .apk file can be distributed directly to beta
testers and installed by them. (Beta deployment can also be done through the Google
Play Store, after the app and developer are registered). Deploying a beta app on iOS is
much more difficult and requires an Apple developer license. To fund this license, an
alpha version of the app was taken to Cedarville Universitys entrepreneurial contest,
The Pitch, where it won second place.
Anticipated Impact
We hope for the Assassins app to simplify the experience of playing assassins,
making the game more accessible and streamlined. Short-duration games may
become more common, as the app eliminates the work required to organize them. We
believe that technology and games should be used to connect people and support real-
life interactions, rather than replace them.
The Assassins mobile app is a tool created to facilitate the popular campus game of
Assassins, common to Cedarville University and other youth communities. In a game of
assassins, players are assigned targets in a single, randomly ordered loop, and
“assassinateeach other with a designated “weapon” (potentially a plastic spoon, nerf
gun, or water gun). Once a player assassinates his target, he is assigned his former
target’s target, and assassinations continue until only the winner remains. Assassins
games can vary widely in duration, ranging from half an hour to several weeks.
Traditional tools for managing game information and distributing target lists include
spreadsheets, emails, and group messaging. As a result, creating and distributing the
target list can be time-consuming, and short-duration assassins games are
comparatively more work to organize and are therefore less common. To address the
hassle in organizing games of assassins, the Assassins app keeps all game information
on one platform and allows users to create, join, play, and moderate games of assassins.
The app is designed using Flutter, a cross-platform language, to enable release to both
Apple and Android platforms. It is backed by a Google Firestore database, and the back-
end code is designed with modularity in mind to make it easier to maintain and update.
By streamlining and enhancing the management of Assassins games, this app will
simplify the game-playing experience and make Assassins more accessible
User Interface
Wireframe
Mockups/High-Fidelity Designs
AppUser
Game
Game
Player Player
Player
Player
A sample of the
databases schema
An illustration
of the
app objects
and their
relationships
Download the Beta
Note: The app only supports sign-in with Google