Skip to content

Instantly share code, notes, and snippets.

@SamuelMarks
Created July 20, 2021 04:21
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SamuelMarks/dc2047e3baf4223cb1ffe62bec6ee9b8 to your computer and use it in GitHub Desktop.
Save SamuelMarks/dc2047e3baf4223cb1ffe62bec6ee9b8 to your computer and use it in GitHub Desktop.
Decentralised game console

Project proposal

Multiple phones + TV gaming.

Why

You arrive at a mate's place and they don't have a console. But. You. Must. Game.

(also who wants to buy a console?)

How

Decentralised. No central server.

Architecture

  • CDN: free, e.g., via GitHub Pages, GitHub repo release, or other similar means
  • WebRTC: STUN and TURN server(s) self-hosted (can use Google's for alpha release?)
  • Android (Google & others) and iOS (Apple) app store releases: with particular focus on TV support
  • FreeDOS running MAME for the web via asm.js or WASM via Emscripten
  • Small amount of HTML+CSS+JavaScript to handle the glue betwixt WebRTC (particularly other connected users) and FreeDOS
  • TBC: a way of searching for and installing games (including specifying the server… so as not to come against any licensing issues)

Supported games

Street Fighter and everything else supported by MAME. Though for licensing reasons it'll have to be limited to arbitrary games that MAME supports, rather than any title one would recognise.

Licensing

(Apache-2.0 OR MIT) is my preference. Though can be convinced to go zlib or pubic domain (CC0, Unlicense, or sqlite)

Related

jackbox.tv and friends

Open questions

Persistence

Whether there should be a persistence model, e.g., to GitHub, a paste bin, or just local web storage.

Keymapping

Does each device allow picking between role, e.g., between "screen-only", "controller-only", and "screen+controller"?

Latency mitigation and expose each connected device's latency on screen.

Might need some custom hardware support also, maybe even expose an interface to the keymap in the user's interface.

Integrations

Do we want the common modalities, like:

Future work

  • Integrations
  • Create custom games, including board games
  • High scores—and other game statistics—persisted to a specific location for less decentralised competiton

Team

Let's confirm this ASAP and start this weekend [23/07/2021]

@SamuelMarks
Copy link
Author

Great to have you aboard: https://tvconsole.github.io

One other idea I mentioned:

  • Use components other than touchscreen as controller, e.g., gyroscope or camera (e.g., gesture with hand/body your control sequence)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment