The Goal

Raceme.io is an online multiplayer network developed for the acclaimed simulation racing game Assetto Corsa. Its goal was to provide a matchmaking hopper system with integrated performance and safety ratings much like iRacing's online environment. My role in the project was to handle all UI/UX development and deployment as well as integrating our frontend with a rapidly evolving backend codebase. The project is in the midst of being open sourced currently.

Screenshot of Raceme.io's persistent Lobby/Chat System Screenshot of Raceme.io's persistent Lobby/Chat System

The Infrastructure

Building a multiplayer network is no simple feat. Especially when you include the hurdle of building one as a third-party solution for a video game that is still in rapid development. We decided to utilize AWS for spooling up our dedicated race servers with a Redis server middle-manning our persistant lobby system layer. This allowed us to keep specific AWS images particular to their Assetto Corsa server binary versions. Not only did this allow users to play with previous versions of the game but it also kept the core functionality of our site completely agnostic of our server infrastructure choice.

The frontend is built with a combination of server-side and client-side rendering. This was absolutely necessary since we pull a current version of the frontend directly into our Assetto Corsa ingame plugin. The issues we ran into getting the frontend to behave the same in the browser as well as ingame far outweighed the cost of maintaining two separate codebases. We chose Vue.js as our view-model layer for it's small footprint as well as its unopinionated nature. Again, being able to fit an ever changing mold was an absolute necessity.

The Tools

  • Node.js
  • Expressio.js
  • Redis
  • AWS
  • Jade + LESS
  • Vue.js