So my game will be a deception based third person shooter multiplayer. Basically 12-20 players will spawn on a ship, one will be assigned as the Alien Host, all will get the same space marine character but the Alien Host will be able to transform between the two forms as well as upgrade, level up certain abilities etc. If the host kills someone they will become a spawn with the ability to transform as well, but also keep all their human functionality. The host can also spawn creep which will summon some AI minions who can run around and attack things.
Without getting too into the details I just wanted someone to run their eyes over this high-level architecture and tell me if its all good.
GameMode - Handles win condition, aliensalive=0 or humansalive=0
GameState - Handles the TimeElapsed, will be used to calculate base tick rate for resources, also handles the level of ship-systems that can be upgraded by players. Randomises player colours and Crew roles and who is the alien host on game start.
PlayerState - Calculates Tickrate for humans credit resources, evolution points for alien host and also their absolute values, randomised player colours, Alien status and Crew roles.
PlayerController - Handles inventories and items as well as hotkeys, any special abilities, weapon levels, casting events to gamestate such as when a player levels up a terminal which will have consequences for items available to other characters or game-wide events.
Actors - Handles the specific player character animations etc, different weapons, items, and their effects.
Does this look straight from a high-level? I’m a bit afraid I will end up running into performance issues if I code things wrong. Should I try to compartmentalise my code as much as possible from the beginning to avoid loading un-necessary item abilities or is something I can worry about later?
Given this will be a multiplayer online game I want things to run smoothly and I don’t want to run into an issue after a bunch of coding that my classes are too large. It would be very helpful if someone who has experience working with an online game can share where the latency issues might arise at and any pitfalls to avoid as a green developer, so that I can possibly anticipate them.