Inspiration

We love speedruns: the challenge that's associated with attempting to play a game perfectly to human standards, squeezing out milliseconds with complicated movements that are painstakingly planned, optimised, and executed. And we're not alone: speedrunning is a very popular activity on the internet, both to spectate and to participate. As of recently, the most popular games to speedrun have been "retro" games. We decided to make a game that has speedrunning as a design choice, automatically uploading one's times to a leaderboard, and providing a social space to discuss speedrunning.

What it does

RUN IT BACK is a game and a speedrunning community. The game is a maze that challenges the player to move to the exit portal as quickly as possible, with timing being conducted down to the millisecond. Before the game begins, players must enter a player ID that our website provides. All of their attempts are logged to our website to allow players to compete against themselves and each other.

Our website provides a pre-built community around the game. Users make an account in order to play the game. Once they have an account, they are able to view others' times and access the speedrunning forums. These forums allow users to discuss previous times, share strategies, and develop a more intricate understanding of the game

How we built it

The website frontend is built with TypeScript using the React framework. It sends HTTP requests to the backend using axios. The backend is running JavaScript on express.js, and interfaces with a MongoDB database. Several API endpoints are provided to manage users, times, and forum posts. User authentication is handled with Auth0. When a user successfully authenticates, a JSON Web Token is created which is then used for communication with the backend.

The game itself is made in Python using pygame. It is packaged into an executable by PyInstaller and served by the backend web server.

Challenges we ran into

Packaging the game proved to be a big challenge, as it point-blank refused to compile on a Mac. We also had to ensure that all of the assets were bundled into the final executable.

We were challenged by ensuring that user state persisted across the frontend. We ended up storing a JSON Web Token in the browser's LocalStorage that functioned as a session token.

Accomplishments that we're proud of

The forums are a big part of the final product. It was a challenge learning to make these in React, but they tie the whole project together.

What we learned

We now have a more advanced understanding of React, Express, and pygame.

What's next for RUN IT BACK

We anticipate that we will polish the website more and add more levels to the game.

For instance, we look to further implement the Forum feature and the Times feature. With the forums, we hope to allow users to reply to each other's threads. This would allow for further community interaction. Additionally, with the Times feature, we hope to implement sorting (via fastest times) and a TAS (Tool-Assisted Speedrun) tool.

Share this project:

Updates