ZeroK-RTS / Zero-K

Open source RTS game running on the Spring/Recoil engine
https://zero-k.info
GNU General Public License v2.0
689 stars 206 forks source link

Add limit commanders modoption #1844

Open GoogleFrog opened 7 years ago

GoogleFrog commented 7 years ago

This modoption limits the number of commanders spawned per allyTeam. Beamer wants it for playing 1v1 with commshare.

ArchShaman commented 7 years ago

I suggest having it be a commshare all mode option only:

In an ideal world, initial unit spawner would be modified:

This is pretty easily done I think. Simply remove the 'mintime' part of the config if 'team 1v1' is enabled.

Edit: Perhaps 'all mode' should function as the old Comshare? That is 1 commander total.

GoogleFrog commented 7 years ago

Yes, only enabled during all merge would be good. The question of who gets the comm is still relevant because they need to select their commander.

ArchShaman commented 7 years ago

All mode takes the lowest human teamID in each of the allyteams as the controller. (EG: the first one with a leader that's human)

In an ideal world, don't bother to wait for the non-controller players and don't display their commander selection thing.

GoogleFrog commented 7 years ago

I would rather have the commander limit be a number modoption. This lets you play, say, a 2v2 with 5 players.

ArchShaman commented 7 years ago

Idea:

GoogleFrog commented 7 years ago

I think the first X players to choose a commander should get their commander. The later players are sent an event to tell the UI to hide commander screen and remove their ability/need to place a startpoint. My imagined scenario for this is highly organized teams so they are not going to be fighting over placement. It's important to give these teams the option as to which commanders are used.

ArchShaman commented 7 years ago

Perhaps also have a "Commanders remaining: " .. modoptions["CommanderLimit"] - currentlySelectedCommanders displayed inbetween Waiting for players and "Type !force to start sooner."

So this will probably be an easy addition (I'm hoping). Here's what I'm envisioning as a solution: Person selects their com -> if modoptions["commlimit"] ~= 0 then SendLuaRulesMsg -> "Selected com!" -> subtract 1 from commlimit and set as gamerulesparam "comms_remaining" -> store teamID as an active team / add to auto_ready's waiting for list. -> if commlimit == 0, remove comm selecter from non-selected players Autoready won't autostart if comms_remaining ~= 0 or modoptions["commlimit"] == 0

*Commlimit == 0 means no limit.