Spawning:

Since we use UMA both players and NPCs are managed in a very similar maner.
On the server all spawnable objects extend the WorldObject class.
On the client these as gameobjects have the WorldObject class attached to them.


Spawn data:
NPC spawn data are saved at the spawnlist SQL table.
You can add you own spawn by using the /spawn npcId chat command.
You can delete a spawn by targeting the NPC and using the /delete chat command.


WorldObject unique ids:
Upon creation all world objects are assigned with a unique id represented by a long value.
The IdManager class provides these unique ids.


Server WorldManager class:
All the visible world objects are contained in WorldManager class region lists.
Player objects are also contained on a seperate list to make things like messaging possible.


Client CharacterManager class:
The CharacterManager is used to instantiate a new UMA character.
It is also responsible for customizing the character appearance and equipping items.