Anyway VizionEck potentially has a lot of them. All "things" in a match are controlled by a central class with more classes within it. If you're not familar with programing, here's an example of one of the classes VizionEck uses:
It's a variable that defines everything about a team. Then the playerTemplate is used to define every member of that team. Because every team can potentially have their own player template, it's very easy to make non symmetric modes a la Juggernaut.
Within the PlayerInfo class, there's this section of code:
Every time a player does something, it uses an EventResult to determine the results of that action. I can't show this section of code, but it has options to change basically everything in the game. The cool thing is that all these options are available for every event. If for some reason we want a game mode where collecting a powerup removes you from the rest of the match, that's a possibility.
Defining these classes is pretty straightforward:
So will all these features and modes be used in the final game? Probably not. This setup is incredibly wonderful at just letting me experiment with wacky ideas without erasing anything. "teamcolors" is a kinda stupid idea for a mode but it only took ~1 minute to prototype. I can write it off quickly instead of spending a lot of time to see if the idea has merit.
It's also wonderful for fine tuning. I can make two copies of a mode, tweak something small, and playtest them back to back without needing to rebuild the game. When VizionEck eventually launches, I should be able to update these server side instead of releasing a game patch.
Plus one of my free DLC plans is to maybe add custom game modes. This will be great for that.