Weltverwaltung
BaseWorld
BaseWorld ist der Container für alle GameObject-Instanzen im Spiel. Es verwaltet die Entity-Update-Schleife und automatische Garbage Collection.
import { BaseWorld, GameObject } from '@mavonengine/core'
// Zugriff über game.world
const world = game.world
Eigenschaften
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
entities | Map<string, GameObject> | Alle Entities nach ihrer ID geordnet |
chunkManager | ChunkManager | Räumlicher Partitionierungs-Manager |
Entities hinzufügen
world.add({
'player-1': myPlayer,
'enemy-1': myEnemy,
})
Entities werden durch eine String-ID identifiziert. Verwende stabile, aussagekräftige IDs (z.B. Player-Verbindungs-IDs für vernetzte Entities).
Update-Schleife
BaseWorld.update(delta) wird automatisch von BaseGame aufgerufen. Es:
- Ruft
update(delta)auf jeder Entity inentitiesauf - Entfernt jede Entity mit
garbageCollect === true
Garbage Collection
Um eine Entity zu entfernen, setze ihr garbageCollect-Flag:
myEntity.garbageCollect = true
// Entity wird beim nächsten Welt-Update entfernt
Oder rufe destroy() direkt für sofortige Bereinigung auf:
myEntity.destroy()
ChunkManager
ChunkManager bietet räumliche Partitionierung zur effizienten Verwaltung einer großen Welt. Es teilt die Welt in Chunk-Regionen auf.
// Zugriff über world.chunkManager
const chunks = world.chunkManager
Eigenschaften
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
loadedChunks | Map<string, Chunk> | Aktuell geladene Chunks |
Chunk
Jeder Chunk repräsentiert eine räumliche Region der Welt. Chunks werden je nach Spielernähe geladen und entladen (Streaming).
ServerWorld
Für Multiplayer-Projekte erweitert ServerWorld BaseWorld um Player-/Client-Verwaltung. Siehe Netzwerk — Server für Details.