Netzwerk
Vernetzte Actors
NetworkedActor, NetworkedGameObject und Zustandssynchronisierung.
Die Engine bietet vernetzte Varianten der Kern-Entity-Klassen, die Zustand über das Netzwerk serialisieren und synchronisieren können.
NetworkedActor
Erweitert Actor um Netzwerk-Sync-Fähigkeiten.
import { NetworkedActor } from '@mavonengine/core'
class MyNetworkedPlayer extends NetworkedActor {
$typeName = 'MyNetworkedPlayer'
updateFromNetwork(data: unknown): void {
// Eingehenden Server-Zustand auf diesen Actor anwenden
}
}
Abstrakte Mitglieder
| Mitglied | Beschreibung |
|---|---|
$typeName | String-Bezeichner zur Rekonstruktion von Entities auf dem Client |
updateFromNetwork(data) | Einen Zustandsschnappschuss vom Server anwenden |
NetworkedGameObject-Mixin
Verwende NetworkedGameObjectMixin, wenn deine Klasse bereits etwas anderes erweitert:
import { NetworkedGameObjectMixin, Entity3D } from '@mavonengine/core'
class MyNetworkedEntity extends NetworkedGameObjectMixin(Entity3D) {
$typeName = 'MyNetworkedEntity'
updateFromNetwork(data: unknown): void { /* ... */ }
}
NetworkedLivingActor
Kombiniert NetworkedActor mit dem LivingActor-Gesundheits-/Schadenssystem für vernetzte Entities, die Schaden nehmen können.
import { NetworkedLivingActor } from '@mavonengine/core'
class MyNetworkedEnemy extends NetworkedLivingActor {
$typeName = 'MyNetworkedEnemy'
health = 100
maxHealth = 100
isDead(): void { /* ... */ }
takeDamage(amount: number): void { /* ... */ }
heal(amount: number): void { /* ... */ }
updateFromNetwork(data: unknown): void { /* ... */ }
}
Zustandsabgleich
syncStateStack
Verwende syncStateStack, um den Zustandsmaschinen-Stack eines Actors über das Netzwerk zu synchronisieren:
import { syncStateStack } from '@mavonengine/core'
// Auf dem Server: Zustand serialisieren
const stateData = syncStateStack(actor)
// Auf dem Client: Zustand anwenden
actor.updateFromNetwork(stateData)
StateFactory-Typ
Der StateFactory-Typ ordnet Typnamen-Strings Zustandskonstruktoren zu und ermöglicht dem Server, Zustände zu beschreiben, die der Client rekonstruieren kann:
import type { StateFactory } from '@mavonengine/core'
const stateFactory: StateFactory = {
'IdleState': (entity) => new IdleState(entity),
'WalkState': (entity) => new WalkState(entity),
}
NetworkedEntityState
Kapselt einen EntityState mit Netzwerk-Metadaten für die Zustandsstack-Synchronisierung.