Page 2 of 2
Re: Midgame joining concept discusison
Posted: 29 Apr 2014, 20:57
by SinbadEV
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.
Re: Midgame joining concept discusison
Posted: 29 Apr 2014, 21:01
by Silentwings
SinbadEV wrote:...
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.
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
Posted: 29 Apr 2014, 21:27
by FLOZi
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.
ECONOMIC VICTORY
gajop cornered the market in being the voice of reason
Re: Midgame joining concept discusison
Posted: 29 Apr 2014, 21:38
by knorke
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:
Code: Select all
Spring.CreateTeam (teamID)
Spring.CreateAllyTeam (allyTeamID)
Spring.MovePlayerTeam (playerID, newTeamID, newAllyTeamID)
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.
Re: Midgame joining concept discusison
Posted: 29 Apr 2014, 21:48
by gajop
knorke wrote:
Code: Select all
Spring.CreateTeam (teamID)
Spring.CreateAllyTeam (allyTeamID)
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.MovePlayerTeam (playerID, newTeamID, newAllyTeamID)
Silent's code does that partially (assigns a team).
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
Posted: 29 Apr 2014, 23:20
by PicassoCT
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
Posted: 30 Apr 2014, 00:01
by Jools
Beherith wrote:What if spectators could control chickens? Seems like a fun addition... Great stuff Silentwings :)
+1
Or at least place them when game starts...
Re: Midgame joining concept discusison
Posted: 30 Apr 2014, 01:02
by code_man
[/quote]
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.
Oh youre right i missed the obvious solution, still this one depends alot on player cooperation.
Another thought, i suppose you could asign them to a already existing team to share command, might be interesting too.
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.
Its definetly a bizzare feature unfit for most rts, but who says spring has to be limited to rts?
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
Posted: 30 Apr 2014, 01:03
by smoth
gajop wrote:knorke wrote:
Code: Select all
Spring.CreateTeam (teamID)
Spring.CreateAllyTeam (allyTeamID)
Yeah, would be great to have this. Asked for it some time ago, but I don't remember the answer.

Re: Midgame joining concept discusison
Posted: 30 Apr 2014, 02:18
by muckl
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?
Re: Midgame joining concept discusison
Posted: 03 May 2014, 09:11
by 100Gbps
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.
Re: Midgame joining concept discusison
Posted: 03 May 2014, 17:25
by CarRepairer
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.
Re: Midgame team-joining concept discusison
Posted: 10 Jun 2014, 20:44
by Silentwings
I've no intention of using it for midgame joining, only for replacing afk players at gamestart, but my
Code: Select all
Spring.AssignPlayerToTeam(playerID, teamID)
as described above will be in 98.0.