Round-based gamemode that is locked when a round is running?
#1

Im progressing well with my current SutD project, so I reached a point where I need to think about essential developement lines.

First heres the setting:
Think about a round based gamemode. Players join, and spawn in a kind of "game lobby", waiting for more players to join. When theres a minimum amount of players ready, they can vote to start the round, or wait for more.
The rounds got no fix time, but it depends on the players how long its gonna take (succeed in a mission, or die and fail, to end the round), but the average time will be somewhere between 30 and 90 minutes. The team of players wont be big. Im thinking of something between 5 and 12 players, but not more.

And heres the decision to make:
Option 1: Once the round is started, the server gets locked. New players cant join, either by setting a password, or by kicking them on join. Players of that round will however be able to rejoin if they lost connection or left the game for whatever reason.
So if someone wants to play, but the round started, he will have to wait. Possibly for 90 minutes (or eventually join a second server for a parallel round, if it exists and isnt running too)

Option 2: Allow new players to join during a round. New players can join anytime until a certain maximum of players is reached. Theyll find their way into the running round, but depending on how long the round is already running it might be harder for them to keep up with the rest as they miss items and all that stuff.
Round difficulty is however adapted to the new amount of players, so the game will be harder for the old players. It might also bring tactical disadvantages for them to have a new member, as they might need to change their strategy and regroup with the new player.
In that case people wouldnt have to wait for a new round, if theres still a slot left, but everyone pays the described price.


As this is a major developement decision, Id just like to hear some opinions on this. Would you rather accept the waiting time, or live with the downside that new players bring with them?
Reply
#2

Accidentally voted for option 1 even though I wanted to vote for option 2.

I think you should disallow people from joining when only a few people are left or the time is almost up though.

EDIT: How about a lobby/spectating system for people that join when a round is almost over, or for people that died during it?
Reply
#3

If I were you I would go for a wider solution: run multiple "games" at once. Only one game is open for public at all time. For example; players join like with option 1. When there are enough players and the round starts, the current game is locked off for new players and a new "game/lobby" is created for the players who join next. So in the end you'll have like 5 "games/lobbies" running simultaneously on the same server. In the end, when a game finishes, you just dump everyone into the current open game lobby.

In short:
  • There is always one game lobby open, at every possible time.
  • In the background, there are multiple games running filled with players.
It would require a strong server than option 1, but this doesn't scare people away when a game is already running.

Edit: you could split the games up with virtual worlds and limit chat only to the game the player is in.
Reply
#4

Quote:
Originally Posted by Mionee
Посмотреть сообщение
Accidentally voted for option 1 even though I wanted to vote for option 2.

I think you should disallow people from joining when only a few people are left or the time is almost up though.

EDIT: How about a lobby/spectating system for people that join when a round is almost over, or for people that died during it?
Yep locking it close to the end will be important to prevent spoiling and exploitation. I also had that spectating option in mind but forgot about it here, thanks for reminding me, Ill probably add that no matter what option ill decide for.

Quote:
Originally Posted by Basssiiie
Посмотреть сообщение
If I were you I would go for a wider solution: run multiple "games" at once. Only one game is open for public at all time. For example; players join like with option 1. When there are enough players and the round starts, the current game is locked off for new players and a new "game/lobby" is created for the players who join next. So in the end you'll have like 5 "games/lobbies" running simultaneously on the same server. In the end, when a game finishes, you just dump everyone into the current open game lobby.

In short:
  • There is always one game lobby open, at every possible time.
  • In the background, there are multiple games running filled with players.
It would require a strong server than option 1, but this doesn't scare people away when a game is already running.

Edit: you could split the games up with virtual worlds and limit chat only to the game the player is in.
That would probably be the best solution. The main problem about this is indeed the performance of the server. Im not sure yet how "heavy" a single round exactly will be, but it will definitely need a great bunch of NPCs. How many NPCs exactly is a matter of balancing, and im still far away from gameplay balancing
Virtual worlds would help reducing the server load as it wouldnt need to stream all the players, but just some smaller independent groups. But Im rather concerned about what the samp server itself can handle. Even without the player/NPC streaming theres a lot of work for the server. Considering the independent rounds and virtual worlds would also be extra work for the server, and its also a big scripting effort, as I completely designed the gamemode to run just one game at a time so far.
Thats why I thought about several samp servers. That would be easier and a sure thing performance-wise. A global lobby would still be possible via sockets between the servers. Spectators just couldnt jump between the single rounds without joining a different server, and people would eventually need to switch the server to join a new round on a different one. But that wouldnt be much extra work for the players, especially if the server tells them which server to join.
Reply
#5

I chose option 2 because if I joined a server and got kicked until the round was over, I wouldn't return. No one is going to wait even 5 minutes to join a round, let alone 30-90 minutes. You'll lose a lot of players that way.
Reply
#6

A waiting lobby seems pretty good.
To wait for specific amount of players.

I agree with Potassium too.
Reply
#7

Well, you could let them join the server but send them into the lobby, with no possibility to join the current round, but maybe start another one? You could make multiple lobbies maybe.
Reply
#8

I'll go for the second option for some obvious reason stated in previous posts.
Reply
#9

Quote:
Originally Posted by DiGiTaL_AnGeL
Посмотреть сообщение
Well, you could let them join the server but send them into the lobby, with no possibility to join the current round, but maybe start another one? You could make multiple lobbies maybe.
Yeah, that sounds great pretty similar about what I thought.
Reply
#10

Thanks for the feedback so far!

I see, of course people wouldnt like to wait that long just to play a round. I just thought about that locking option because this is the way it works in the game that inspired me, and - at least in the small group of people I played with - it never was a big problem to wait an hour for the next round. But i guess this needs a group of players knowing each other, doing this with random guys wouldnt work.
Okay, Ill work towards option 2 then, and will add a server-wide lobby thats always open. At first I wont add multiple rounds on the same server, I might add that later, but Id rather go with separate samp servers with a linked lobby first.
However, I might still add a way to lock the round for new players. I thought about something like this:
Players got round-independent ranks in this gamemode. If a player joins, everyone in the current round who got a higher rank than the joining player can now vote to accept or reject the new player. If theres a certain amount of people rejecting it (2/3 of the current players or something), the player cant join. If enough people voted 'yes', or there arent enough people with a higher rank, the player can join.
Sure, this might discriminate new players, but by having the minimum amount of votes, people will mostly only get locked out of high-ranked games. New players can easily ruin the round, so well arranged teams might not want to have a new player in their game.
At the same time, high ranked new players could always join active rounds. The chance for very experienced players to ruin the round is much lower, especially when joining a low-ranked game theyll rather cause the team to survive longer, so theres no real need to make low-rankeds vote about them.

Random teams wont have enough players with a high rank mostly, so new players could still join them without problems.

I could explain the idea even more detailled but Im short on time right now
Reply
#11

I Can't wait for play this.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)