Here's an idea: since anyone (even specs) can use the /luarules command, a very sophisticated gadget could allow players to switch allyTeams; it could even allow spectators to play. I'm assuming an unsynced gadget can make communicating with synced Lua easier than typing the /luarules command all the time, obviously. Here's how it could work: all game mechanics (resource production and storage, giving units, etc.) would be implemented in LuaRules and players play using LuaRules messages (probably widgets using the SendLuaRulesMsg()). UnitDefs can be modified so that any unit can attack any other), but the gadget decides whether to allow attack commands based on its own records of which players are on which team.
Things I'm not sure about:
- Performance (this sounds really slow, but it might not be; I just don't know)
- Does Spring already have a mechanism to let players switch allyTeams, or to let specs play?
- Can UnitDefs be modified in the way I described?
Things I know will be problematic:
- Many, many widgets (resource bars, unit sharing, etc.) would have to be written in order to provide a usable user interface
- Lobby compatibility
This is not a serious proposal, and I have no plans to implement it, but as far as I know no one has discussed it before. What do you think?