Table of Contents

Class CharacterCreateSystem

Namespace
FishMMO.Server.Implementation.LoginServer
Assembly
FishMMO.Server.dll

Manages character creation for player accounts, validates character data, and initializes starting equipment and abilities. All Unity object access (templates, prefabs) occurs on the main thread. Only database operations run asynchronously. Broadcast replies are marshalled back to the main thread via a thread-safe queue drained in OnLateUpdate.

[CreateAssetMenu(fileName = "CharacterCreateSystem", menuName = "FishMMO/Server/LoginServer/Character Create System", order = 1)]
[RequiresDataContainer(typeof(CharacterCreateSystemMainThreadQueueData))]
[RequiresDataContainer(typeof(CharacterCreateSystemRuntimeData))]
[RequiresDataContainer(typeof(AsyncWorkerData))]
public class CharacterCreateSystem : ServerBehaviour, IServerBehaviour<INetworkManagerWrapper, ServerManager, NetworkConnection, IServerBehaviour>, IServerComponent<INetworkManagerWrapper, ServerManager, NetworkConnection, IServerBehaviour>, ICharacterCreateSystem, IServerBehaviour, IServerComponent
Inheritance
Object
ScriptableObject
CharacterCreateSystem
Implements
IServerBehaviour<INetworkManagerWrapper, ServerManager, NetworkConnection, IServerBehaviour>
IServerComponent<INetworkManagerWrapper, ServerManager, NetworkConnection, IServerBehaviour>
Inherited Members
ScriptableObject.SetDirty()
ScriptableObject.CreateInstance<T>()
Object.GetEntityId()
Object.GetInstanceID()
Object.GetHashCode()
Object.InstantiateAsync<T>(T)
Object.InstantiateAsync<T>(T, Transform)
Object.InstantiateAsync<T>(T, Vector3, Quaternion)
Object.InstantiateAsync<T>(T, Transform, Vector3, Quaternion)
Object.Instantiate(Object, Vector3, Quaternion)
Object.Instantiate(Object, Vector3, Quaternion, Transform)
Object.Instantiate(Object)
Object.Instantiate(Object, Scene)
Object.Instantiate<T>(T, InstantiateParameters)
Object.Instantiate<T>(T, Vector3, Quaternion, InstantiateParameters)
Object.Instantiate(Object, Transform)
Object.Instantiate<T>(T)
Object.Instantiate<T>(T, Vector3, Quaternion)
Object.Instantiate<T>(T, Vector3, Quaternion, Transform)
Object.Instantiate<T>(T, Transform)
Object.Destroy(Object)
Object.DestroyImmediate(Object)
Object.DontDestroyOnLoad(Object)
Object.DestroyObject(Object)
Object.FindObjectsOfType<T>()
Object.FindObjectsByType<T>(FindObjectsSortMode)
Object.FindObjectsByType<T>(FindObjectsInactive, FindObjectsSortMode)
Object.FindObjectOfType<T>()
Object.FindFirstObjectByType<T>()
Object.FindAnyObjectByType<T>()
Object.FindFirstObjectByType<T>(FindObjectsInactive)
Object.FindAnyObjectByType<T>(FindObjectsInactive)
Object.FindObjectsByType<T>()
Object.FindObjectsByType<T>(FindObjectsInactive)
Object.ToString()
Object.name
Object.hideFlags

Properties

MaxCharacters

Gets the maximum number of characters allowed per account.

public int MaxCharacters { get; }

Property Value

int

StartingAbilityIDs

Read-only view of the starting ability template IDs for new characters.

public IReadOnlyList<int> StartingAbilityIDs { get; }

Property Value

IReadOnlyList<int>

StartingEquipmentIDs

Read-only view of the starting equipment template IDs for new characters.

public IReadOnlyList<int> StartingEquipmentIDs { get; }

Property Value

IReadOnlyList<int>

StartingInventoryItemIDs

Read-only view of the starting inventory item template IDs for new characters.

public IReadOnlyList<int> StartingInventoryItemIDs { get; }

Property Value

IReadOnlyList<int>

WorldSceneDetailsCache

Read-only access to the cached world scene details.

public WorldSceneDetailsCache WorldSceneDetailsCache { get; }

Property Value

WorldSceneDetailsCache

Methods

InitializeOnce()

Initializes the character creation system, registering broadcast handlers for character creation requests.

public override ServerComponentInitializationStatus InitializeOnce()

Returns

ServerComponentInitializationStatus

OnDeinitialize()

Cleans up the character creation system, unregistering broadcast handlers for character creation requests. Drains remaining main-thread responses so clients get their final messages.

public override void OnDeinitialize()

OnRemoteConnectionStopped(NetworkConnection)

Releases per-connection in-flight create state when a client disconnects.

protected override void OnRemoteConnectionStopped(NetworkConnection conn)

Parameters

conn NetworkConnection

OnUpdate(float)

Drains the main-thread response queue each frame. All network operations from async workers are marshalled through this queue to ensure they execute on the main Unity thread.

protected override void OnUpdate(float deltaTime)

Parameters

deltaTime float

Time elapsed since last frame.