Planning to build a Discord spatial layer

Wed Jan 06 2021

MVP

build a browser extension that edits the discord web client UI to include a canvas element

this canvas element should contain a multiplayer 2D environ

minimally, players should be able to move around the space with the arrow keys and this should update in real time (client-side prediction optional)

we should include SOME minimal discord integration element in the MVP to showcase its potential. i'm not sure what form this would take, building a discord bot is probably too time-consuming

what's the point?

how is it different from gathertown, second life, minecraft?

my thought: discord servers are already communities, with chill VC hangout rooms and the like we want to piggyback on this community, not try to supplant it. the only way we can get adoption is for people to use our software is to piggyback on an existing platform that people already like using. that's the main hurdle facing all the YC startups like gathertown rn i believe

also, discord allows us to write bots and there is already lots of bot games on discord that people enjoy playing: adding a spatial layer might be compelling to the demographic that likes playing botgames on discord.

what needs to be done?

  1. check discord API: find a way for a our game to see which discord server its in and get a list of all the people in the server and a way to make sure that a user owns/controls his character
  2. actual game state sync
  3. canvas rendering of gameworld and players
  4. handle player input (update state)
  5. modify discord web client to include our canvas
  6. package up as browser extension?

these can be done in parallel (figuring out how to share and update state, figuring out how to render game state, figuring out how to modify the web client) which makes it ideal for hackathon

Technical unknowns

  • How do we get a list of all the people in the server? is there a Discord API?
  • think about how a server admin would set up and reset the game state

further extensions

  • allow players to customise their avatar
  • grab text messages and display inside client
  • allow text commands to mutate gamestate