College of Engineering Unit:
A New Way to Play Capture the Flag
Capture the Flag (CTF) is a traditional outdoor sport that involves players on two or more teams having a flag, and the objective is to obtain the opposing team's flag and bring it back to your team's zone or base. Enhanced CTF is a way to play Capture the Flag in real life with no physical materials, only your phones, and your friends.
In recent years there have been several games based in the real world that have gained popularity: Pokémon GO, Minecraft Earth, and more by Niantic. However, many real-life games have never been attempted to be turned into an app. Enhanced CTF is that app. Our project is to bring CTF into the virtual world and enhance it by introducing new features and benefits.
- Chess Mode: Play Capture the Flag with chess-themed special abilities for each player!
- Stars: Powerups that randomly spawn around the map. Pick them up to gain temporary special abilities such as improved sight or invisibility!
- In-Game Shop: Collect coins spread around the map to purchase upgrades in the in-game shop and gain a temporary advantage!
The frontend is built with Flutter, a framework built by Google that uses the Dart programming language. It allows us to develop for both iOS and Android simultaneously.
The backend is written in Typescript, and it runs on a Heroku dyno. It communicates with a PostgreSQL database also running on Heroku.
In total, 44,000 lines of code have been written for the frontend, 45,000 for the backend, resulting in around 90,000 total lines of code for the whole project.
The frontend and backend communicate via HTTP requests. In retrospect, the best way to do this would have been web sockets, but it would require too much to change it now.
Monetization can be a complicated issue for mobile developers. Developers must recoup the cost of development somehow, but they must tread carefully for fear of upsetting users. Within mobile games there are generally three accepted ways to do this:
- Paid App – reduces possible user base unless the app is from a known entity with a proven track record.
- In-App Purchases – typically cosmetic in competitive games to avoid pay to win.
- Advertisements – can often be seen as intrusive and drives users away.
Advertisements were our choice of monetization. Banner ads are only displayed once a user has created or joined a game. After every game, an interstitial ad is shown to every user. This makes our app minimally intrusive while also enabling future purchase of more computing power and server space.
A special thank you is extended to Scott Fairbanks, the original creator of the Enhanced CTF idea and our project partner throughout the development of our project.
Scott had a lot of trust in us and gave a lot of freedom in creating the app. Almost all of his feature ideas were implemented in our final version.