Inspiration ⚡
Arcadia (Greek: Αρκαδία) refers to a vision of pastoralism and harmony with nature
The theme for BackyardHacksIII is to make a project which either supports the environment or celebrates the outdoors. Our project celebrates the outdoors by making those who would otherwise spend their time inside gaming enjoy their natural surroundings. Not only does this improve the mental and physical wellbeing of users, but furthermore it may lead to them feeling a greater sense of affinity with the environment, which could result in them taking better care of it in the future.
What it does ⛹️♂️
Players participate in a virtual treasure hunt, looking for secret "Arcades" within parks near them. The arcades' locations are a mystery, so users have to walk around in the park and make guesses to try and work them out. Each guess results in a distance and a direction to the arcade, with players trying to get there in a minimal number of guesses.
Upon finding an arcade the user can play a mystery mobile game, specifically targeted for that arcade, and potentially register a high score, which others can try to beat, but only by attending this arcade in real life. Then, the user is encouraged to take a few moments to enjoy the natural surroundings into which they have been brought, before heading on to find the next arcade. Badges encourage the users to both beat the high scores on the games, and take some time out to look around the park they are in.
Arcades are automatically generated in parks across the globe using a proprietary binary hashing algorithm on Open Street Map data, and they are the same for all users in a given area, meaning users can even meet up, make friends and try to beat each others' scores at arcades in their local parks. The arcade locations change every day, and games would change regularly.
How we built it 🤖
Arcadia is a Progressive Web App or PWA, which means it's a website that can also be installed as an app. Users can visit the website on their mobile device to start playing!
Initially we began to build a Kotlin Android app, but upgraded to a progressive web app in order to ensure the experience was available for users of all different devices.
The server is built with Python Flask, and it serves a JSON API which is queried by frontend Javascript code to locate the user and communicate their position to the backend tasks that run on the server we are hosting.
There are 5 interlinked 3NF tables in our database which efficiently store all the required user and app data. The data is queried using SQL commands in our Python backend.
Challenges we ran into 😬
There are always many challenges when building applications, especially when the team is working remotely and is using a technology they have never tried before!
Our main issues seemed to revolve around our game development as our Javascript was unwilling to play nicely. We were eventually able to resolve this but it took a reasonable amount of time!
We had other issues due to having to face the learning curve of a new technology, however we were able to iron out these bugs and unforeseen glitches in our code.
Accomplishments that we're proud of 🏆
We are proud of being able to work together as a team and feel our team synergy has improved as compared to our previous (and first) hackathon. This is a real achievement for us as it shows that as a team we can move to bigger and brighter things.
What we learned 📚
Each member, on top of having to learn PWA for the first time also learnt something new to them: Tom learnt about SQL and building and managing a database within Python as well as the haversine formula, Hamish has learnt to switch and adapt as errors and bugs come his way and Quentin has learnt the joys of CSS, as well as how to play Flappy Bird.
What's next for Arcadia 🔮
- More games will be added to the arcades to ensure the game remains engaging for repeat users. This would keep people using the app and thus getting outside and having fun with it.
- Special arcade types could also be added that were scheduled and announced prior to their launch to increase user interest.
- Greater testing and tweaking could be performed to ensure that the game works effectively everywhere, and at high performance.
Log in or sign up for Devpost to join the conversation.