beyond-all-reason / spring

A powerful free cross-platform RTS game engine
https://beyond-all-reason.github.io/spring/
Other
222 stars 102 forks source link

When you host a game that is random positions or map defined positions, the countdown is only 3 seconds once the host loads in #295

Open ForbodingAngel opened 2 years ago

ForbodingAngel commented 2 years ago

Can it be made so that all "actual" players must click ready even in games where it is fixed, random start positions, or choose in game?

lhog commented 1 year ago

I've started looking into that. Do you want this setting as separate option like "fixed-wait", "random-wait" or as something like mod rule. Imposing it as requested might make a few other games unhappy.

ForbodingAngel commented 1 year ago

Imo the best way to handle it would be a fixed wait setting in the hosts spring settings, that way the host can control how long the countdown is with a default of perhaps like 5 -15 or something like that

On Sat, Dec 10, 2022, 1:40 PM lhog @.***> wrote:

I've started looking into that. Do you want this setting as separate option like "fixed-wait", "random-wait" or as something like mod rule. Imposing it as requested might make a few other games unhappy.

— Reply to this email directly, view it on GitHub https://github.com/beyond-all-reason/spring/issues/295#issuecomment-1345389894, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAC2HMTUYEGOC6SH7VPBL7DWMT2EBANCNFSM5X345DEA . You are receiving this because you authored the thread.Message ID: @.***>

sprunk commented 1 year ago

https://github.com/beyond-all-reason/spring/blob/BAR105/rts/Net/GameServer.cpp#L2127-L2133

As far as I can tell the rule is already that everybody has to be ready, UNLESS 30s passed since spring.exe was run, in which case those who aren't yet loaded are skipped (which means the game starts immediately in fixed/random modes because you are automatically ready when loaded). Some of that 30s will pass when loading (since it counts from .exe run). Perhaps just remove the 30s rule since if the host wants an early start not to be delayed by droppers or those who load too long he can just /forcestart?

Additionally the 3 second delay is controllable via startscript under the GameStartDelay tag (the default value is 4 but I think that's because 3-2-1-0 is four values): https://github.com/beyond-all-reason/spring/blob/BAR105/doc/StartScriptFormat.txt#L30