A competitive physics based action game built in JavaScript, running in Node.js with deployment to Heroku. Clients run Matter.js and Pixi.js for game world physics and rendering, respectively. One client acts as a host of the game world, with clients communicating through the server as a middleman. The server is authoritative in regards to the creation and deletion of world objects. Client-to-server communication is done via socket.io. The server runs on an MVC framework utilizing Express, bodyParser, CSRF, etc. It utilizes Redis and MongoDB on the backend for user accounts, statistics, and sessions.
Players compete with each other in dynamically created 1v1 games where they must capture as many gems as possible in their goal zone. They can't, however, interact with the gems directly - they must use three abilities (shooting cannonballs, throwing grenades, or summoning a gravity well) to try to manipulate the world physics to retrieve the gems. User accounts store various statistics, such as how many games they've won and lost, and how many points they've scored.