tonarino / bomberman-of-the-hill

13 stars 5 forks source link

Queueing/many player support mini-RFC #42

Closed PabloMansanet closed 2 years ago

PabloMansanet commented 2 years ago

The problem

With the resolution we're aiming for and the map size that we have, there's a clear limit to the number of players that can compete on the same arena. From my initial testing, I'd say 12 simultaneous players is about as far as we can go before we run out of breathing room. 8 would be ideal.

We want more than 8-12 players to participate, especially after deciding we want to open the event to outside participants and stream it on twitch, so we need to find a way to have everyone play for a fair amount of time and keep them engaged.

A queue system proposal.

I propose we rework the file upload/file handle systems to behave under a simple set of rules:

There's a couple implicit principles in the proposal that I think we should maintain even if the implementation particulars change:

An illustrated example

For the example, I'm going to assume that MAX = 4 (the number of players that can play at the same time in an arena) and that players are named alphabetically from A to Z.

As always, open to thoughts, suggestions. implementation concerns, etc :) I'm also unsure how much of this process we want to represent in the UI. Maybe some sort of message signaling who's playing the next round could be fun!

strohel commented 2 years ago

@PabloMansanet this looks good! I like the rules that encourage players to experiment and make mistakes along the way.

I'd like to add some requirements on the implementation/operational side that I thing would be useful during the event:

Operational requirements (suggestion)

Queue system proposal questions

When a match ends, all players on it get pushed to the back of the queue, and the next set of MAX players get added to the next round.

Would it be okay to instead do nothing with the players when a round ends? I.e. that they would need to re-upload their WASM (even if unchanged) if they want to participate in the next rounds?

In theory that would not guarantee 5 minutes of play for every new player if they join late in the round - but that can only happen when there is nobody in the queue. Meaning that such a player can reupload their WASM and very likely to get into the next round anyway.

Reuploading should not even despawn the character: The AI change will happen live.

We already have this on the game engine side, right? (as long as the upload server replaces the correct wasm file)


Coming up with a slight variation of the system, one that could be particularly straightforward to implement AFAICS. I'll mix in some implementation details I'm thinking of.

Rounds system proposal (slight modification of top of queue system proposal)

What do you think?

I think I can start implementing basics of this on the upload server, and see how far will I get before my time off. CC @bschwind.

PabloMansanet commented 2 years ago
* We'll likely restart both the game binary and the upload server binary during the game event (perhaps to quick-fix bugs). Such a restart should not catastrophically reset things. (okay to replay current round, but should not drop the queue etc.)

That's a good point that I hadn't thought about!

Would it be okay to instead do nothing with the players when a round ends? I.e. that they would need to re-upload their WASM (even if unchanged) if they want to participate in the next rounds?

That makes more sense probably, and it's an easier condition to explain :) also allows people to opt out of playing if they just want to observe.

Reuploading should not even despawn the character: The AI change will happen live.

We already have this on the game engine side, right? (as long as the upload server replaces the correct wasm file)

yup!

Rounds system proposal (slight modification of top of queue system proposal)

I really like your proposal! Feel free to get started on it and I'll help with what I can :)

strohel commented 2 years ago

Resolved by #46.