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

MitgliedBeschreibung
$typeNameString-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.