Tankfeud is a multiplayer 2D tank battle game I am making with my friend Jonas, written in Nim using Norx. Backend is also in Nim and there is a Flutter mobile companion app, and a shared JSON protocol over websockets tying them together.

The backend uses Tidb for persistence and Redis to coordinate between instances.

  • The game — Nim and Norx, talking to the backend over a custom websocket pubsub.
  • The backend — Nim and websockets on top of Redis and Tidb.
  • The app — Flutter, shipped as a mobile app and as a web build.
  • The protocol — one JSON wire format over websockets shared by game and app.