Guide for navigating Holocore
The Service Tree. The services and managers are organized in a hierarchy, with the top being ProjectSWG and CoreManager. CoreManager then adds the GalacticManager as a child which adds the ObjectManager, PlayerManager, and so on.
Networking. All packets flow around the server, to and from clients, through intents. As packets come in, they are decrypted and decompressed through magic located in the src/network package. Once they are interpreted and put into a more readable format, they are put inside an intent with as much information as possible, and broadcasted. The intent that is broadcasted is a InboundPacketIntent, which the GalacticManager listens for and then broadcasts a new type of intent called a GalacticPacketIntent. A InboundPacketIntent contains only packet-level information, whereas the GalacticPacketIntent contains references to important services (PlayerManager and ObjectManager) and objects (the Player object, referencing the client that sent this packet). The only intent that should be listened for is the GalacticPacketIntent.
Services and what they do:
- CoreManager - The main manager for everything. This is the top of the tree. The main ProjectSWG class talks directly to this one to initialize, start, stop, and terminate the entire program.
- ChatManager - Manages mail, spatial chat, broadcasts, and tells.
- ConnectionService - Manages all connections. If someone times out or logs out, this is what keeps track of it.
- CommandService - Manages all commands, from basic prone to combat
- GalacticManager - Manages the entire galaxy. Every service that is apart of a single galaxy is a child of this manager.
- NetworkClientManager - Manages the connections to the players themselves, including encryption, compression, etc.
- ObjectManager - Manages all the objects in the galaxy. Includes players, NPCs and buildouts
- LoginService - Manages the login of each player. Includes authentication, sending player lists, and other login information
- ZoneManager - Manages the zoning in of each player as well as character creation
- PlayerManager - Manages the LoginService and ZoneManager. This is the bridge that connects the login screen and the world
- SuiService - Manages the creation of SUI windows on the client
This isn't an exhaustive guide, and may change in the future as things progress.