boardgameio / boardgame.io

State Management and Multiplayer Networking for Turn-Based Games
https://boardgame.io
MIT License
10.04k stars 709 forks source link

Ideas Thread #49

Closed jchristman closed 6 years ago

jchristman commented 6 years ago

Didn't see an "Ideas" thread for those of us who are not contributors to the project, so perhaps this can be a place for people to drop in ideas not currently on the Ideas Project Roadmap, and then someone could add them to the Roadmap if they think it's a good idea? I'll start off with a couple of ideas in comments.

jchristman commented 6 years ago

I for one would love to use this to implement a "7 Wonders" type of game. This requires to functionalities that I don't believe currently exist:

  1. Non-player "Board" players
  2. Asynchronous turns that are executed simulatenously

The non-player "board" is just a way for a game developer to join a client into the game that receives state information to render a board. In the example of "7 Wonders", I would love to use an Airplay iPad on a TV to get a nice view of everyone else's cards they have played and such. This "player" does not move, but is just a display of the current, non-secret state. It gets no secret information.

The simultaneous turn thing is fairly straightforward in concept. Everyone picks a card and "ready's up". When all players are ready, the server executes the turn.

I'm more than happy to help with some of this code. I'm excited to see that so much progress has been made on this in what seems like a very short time.

jchristman commented 6 years ago

On a side note, with how many stars and followers this have, you may have an avid community of developers that are looking to pitch in and help. Perhaps opening of a slack for this may not be a bad idea? Just a thought... Love the work so far!

nicolodavis commented 6 years ago

Hey Joshua! Thanks for getting this thread started.

  1. The non-player clients are actually quite easy to implement. The current model is to have a null client that can essentially act as an admin (play on behalf of any player). Perhaps we should re-purpose this to a view-only client instead and use "admin" or something else for a proper admin client (with some security measures in place to prevent anyone from becoming an admin client).

  2. I've been working on the idea of phases, with some hooks to determine how the turn gets passed along between different players in each phase. An asynchronous phase could just be a simple boolean setting to the phase config object.

Happy to review a PR for [1] if you want to take a stab at it. I'm already working on [2], so you should see that sometime in the next week or so.

A Slack community sounds good too. I just fear that I may not have enough bandwidth to keep up with the volume of messages (perhaps the community will help answer questions and so on?). This is just a hobby project that I work on in my free time in the evenings. Let's give it a try, though! Do you have a preference between Slack / Gitter / IRC?

vdfdev commented 6 years ago

+1 for Slack or Gitter 👍. I love IRC but it is not as easy to use.

jchristman commented 6 years ago

+1 for Slack because I’ve never used gitter. Therefore, learning curve... 🙂

dentemple commented 6 years ago

+1 for Slack or Discord :)

nicolodavis commented 6 years ago

I want to play around with Gitter for a bit (the ability to view posts without signing in is a plus for me). Let's try that, and migrate to Slack / something else if it doesn't work well for us.

nicolodavis commented 6 years ago

OK, let's settle on Gitter at https://gitter.im/boardgame-io for now. I figured out how to do different rooms per topic. I'll add a badge to the repo.

nicolodavis commented 6 years ago

Closing this now that we're having discussions on Gitter.