Midgame team-joining concept discusison
Moderator: Moderators
Re: Midgame joining concept discusison
It should default to being off unless the game specifically allows it and the players at match creation choose to allow it... and do so in a way that the engine has a way of blocking players from joining at all if the match doesn't support the feature... and implementation would need to bridge to the lobby to facilitate new players knowing if they have the option of joining to begin with.
- Silentwings
- Posts: 3720
- Joined: 25 Oct 2008, 00:23
Re: Midgame joining concept discusison
Sorry, but I think you understand ~nothing of what's happened here. Let me make it clear. A synced callout is something a game only uses in its synced code, if it wants too. There is no on/off/default/bridge/lobby/whatever involved, there is just Spring.AssignPlayerToTeam(playerID, teamID), if and only if it appears in the synced gadget code of the game being played.SinbadEV wrote:...
This is all somewhat academic at the moment - I don't even know if my patch will be used.
There is currently no way to support a 'midgame join' without replaying all the previous progress of the game and it is very unlikely to be otherwise in the near future.
Re: Midgame joining concept discusison
ECONOMIC VICTORYgajop wrote:This is not a feature like Unicode. It's not something most games should just be expected to support, very few will probably. Gamers will not expect your game to have this, as it's something nearly no popular (commercial) RTS has.
However, if you look at the code presented it provides a pretty neat feature: being able to (re)assign teams to players. I can easily imagine it being quite useful for things completely unrelated to the OP, and this is just stuff for me:
1. Scenario Editor: Ability to take control of a certain team, in both edit and test mode. Pretty useful if you can switch teams around to get a better idea how things will look to players.
2. Scenarios/Missions: It's pretty easy to imagine scenarios in which you as a player would change team (instead of just changing the teamID value of a whole lot of units). Example: A mission where the "main" character gets compromised (psychologically,chemically, etc.) and changes sides.
gajop cornered the market in being the voice of reason
Re: Midgame joining concept discusison
What is currently possible:
There is command /team but it only works with /cheat enabled.
(Sometimes it is used to manually put new players into game)
It is not possible to create new teams, must join existing ones.
But one could just have lots of empty "NullAI" teams, as place holders for midgame joiners to use. That was discussed before but afaik never done. I think it would work but in practice be a bit clunky.
It might get interessting if there was some new Lua functions, like:
Then on (existing) PlayerAdded(playerID) the new player would be shown some Lua'ed messagebox: "Would you like to join the game? yes/no"
And with above new functions he would be put into game.
Games that do not want this midgame join just do not include such Lua. Maybe there could be a way to get lobby-status of new midgame-joining player (was he spec, which team was he on, which color) but not strictly nessecary.
The lobbies would keep their "Start" buttons, like they always had, no need for extra button.
There is command /team but it only works with /cheat enabled.
(Sometimes it is used to manually put new players into game)
It is not possible to create new teams, must join existing ones.
But one could just have lots of empty "NullAI" teams, as place holders for midgame joiners to use. That was discussed before but afaik never done. I think it would work but in practice be a bit clunky.
It might get interessting if there was some new Lua functions, like:
Code: Select all
Spring.CreateTeam (teamID)
Spring.CreateAllyTeam (allyTeamID)
Spring.MovePlayerTeam (playerID, newTeamID, newAllyTeamID)
And with above new functions he would be put into game.
Games that do not want this midgame join just do not include such Lua. Maybe there could be a way to get lobby-status of new midgame-joining player (was he spec, which team was he on, which color) but not strictly nessecary.
The lobbies would keep their "Start" buttons, like they always had, no need for extra button.
Re: Midgame joining concept discusison
Yeah, would be great to have this. Asked for it some time ago, but I don't remember the answer.knorke wrote:Code: Select all
Spring.CreateTeam (teamID) Spring.CreateAllyTeam (allyTeamID)
Silent's code does that partially (assigns a team).knorke wrote:Code: Select all
Spring.MovePlayerTeam (playerID, newTeamID, newAllyTeamID)
It should not assign an allyteam, a different function should do that.
I wrote that ages ago: https://github.com/gajop/spring/commit/ ... 4f35a0bcf2 but I never properly tested it.
In case it's not clear why those should be different functions, well, a single team can have multiple players, even AIs controlling it, so your proposed function could have a confusing effect - it would actually indirectly change the allyteam for other players as well.
Re: Midgame joining concept discusison
Do you feel that- a disturbance in the force, as if a thousand non-existant nil-checks screamed in unisone, forever sylenced by the devs..
Re: Midgame joining concept discusison
+1Beherith wrote:What if spectators could control chickens? Seems like a fun addition... Great stuff Silentwings :)
Or at least place them when game starts...
Re: Midgame joining concept discusison
[/quote]
Another thought, i suppose you could asign them to a already existing team to share command, might be interesting too.
A mmortt game on spring is fairly realistic, such a feature would kick ass in that case.
And if the engine supports this, why not try it some time.
Oh youre right i missed the obvious solution, still this one depends alot on player cooperation.SinbadEV wrote:You wouldn't need to re-balance anything if when a new player joins they would start with no units and it would be up to the other players to share units with them.
Another thought, i suppose you could asign them to a already existing team to share command, might be interesting too.
Its definetly a bizzare feature unfit for most rts, but who says spring has to be limited to rts?gajop wrote:This is not a feature like Unicode. It's not something most games should just be expected to support, very few will probably. Gamers will not expect your game to have this, as it's something nearly no popular (commercial) RTS has.
However, if you look at the code presented it provides a pretty neat feature: being able to (re)assign teams to players. I can easily imagine it being quite useful for things completely unrelated to the OP, and this is just stuff for me:
1. Scenario Editor: Ability to take control of a certain team, in both edit and test mode. Pretty useful if you can switch teams around to get a better idea how things will look to players.
2. Scenarios/Missions: It's pretty easy to imagine scenarios in which you as a player would change team (instead of just changing the teamID value of a whole lot of units). Example: A mission where the "main" character gets compromised (psychologically,chemically, etc.) and changes sides.
A mmortt game on spring is fairly realistic, such a feature would kick ass in that case.
And if the engine supports this, why not try it some time.
Re: Midgame joining concept discusison
gajop wrote:Yeah, would be great to have this. Asked for it some time ago, but I don't remember the answer.knorke wrote:Code: Select all
Spring.CreateTeam (teamID) Spring.CreateAllyTeam (allyTeamID)
Re: Midgame joining concept discusison
i like that idea of midgame join (however it will be solved incl matchreplay)
but when there is a spec who can join a team - it should be a "teamspec" so it cannot see what the other team does (otherwise its speccheating).
so there should be normal specs (no team assign, not able to join later)
and teamspecs (limited slots per team and preassigned @ gamestart)
and normal players
so teamspecs can join their team they whatched at any gamestate instantly or via replay resync later
just an idea..
cool?
but when there is a spec who can join a team - it should be a "teamspec" so it cannot see what the other team does (otherwise its speccheating).
so there should be normal specs (no team assign, not able to join later)
and teamspecs (limited slots per team and preassigned @ gamestart)
and normal players
so teamspecs can join their team they whatched at any gamestate instantly or via replay resync later
just an idea..
cool?
Re: Midgame joining concept discusison
The concept is somewhat useless, we still demand the old loading speeds. Now a spectator (like me) needs to wait way too much to replay-o-load the whole battle, and usually it ends before that.
- CarRepairer
- Cursed Zero-K Developer
- Posts: 3359
- Joined: 07 Nov 2007, 21:48
Re: Midgame joining concept discusison
This topic name is a bit misleading. We can join midgame now. It should be referred to as midgame-team-join.
I once made a small fork of ZK called ZK Chat where the players get a commander that could not build units and whenever they talked a chat bubble appeared over their heads. They would all be on the same team and they could walk around, terraform random ramps, and talk with each other about their favorite topic of the day. Without such a midgame-team-join however it required everyone be present at the game start.
I can't recall if it was before or after the concept of luasockets/lualobby but using gajop's liblobby work and a midgame-team-join, all these concepts could be combined into a 3D avatar-based chat client that could hook up to spring channels. It could even spawn units for all the users who are in a channel but haven't joined the spring "battle" that would just be like critters on the map moving around randomly but we can chat and communicate with them.
I once made a small fork of ZK called ZK Chat where the players get a commander that could not build units and whenever they talked a chat bubble appeared over their heads. They would all be on the same team and they could walk around, terraform random ramps, and talk with each other about their favorite topic of the day. Without such a midgame-team-join however it required everyone be present at the game start.
I can't recall if it was before or after the concept of luasockets/lualobby but using gajop's liblobby work and a midgame-team-join, all these concepts could be combined into a 3D avatar-based chat client that could hook up to spring channels. It could even spawn units for all the users who are in a channel but haven't joined the spring "battle" that would just be like critters on the map moving around randomly but we can chat and communicate with them.
- Silentwings
- Posts: 3720
- Joined: 25 Oct 2008, 00:23
Re: Midgame team-joining concept discusison
I've no intention of using it for midgame joining, only for replacing afk players at gamestart, but my
as described above will be in 98.0.
Code: Select all
Spring.AssignPlayerToTeam(playerID, teamID)
as described above will be in 98.0.