Erstellt am 04.10.2026 19:04
1. Grundprinzip & Koordinaten-Transformation
Um Kacheln (Tiles) und Entitäten auf dem Bildschirm korrekt darzustellen, müssen deren statische oder dynamische …
#rendering
#tilemanager
#camera-transformation
#screen-space
#world-space
#java-graphics
Erstellt am 04.10.2026 16:15
1. Grundprinzip & Philosophie
Das Entity-Component-System (ECS) ist ein architektonisches Entwurfsmuster, das Daten strikt von der Logik trennt (Composition …
#ecs
#architecture
#design-pattern
#decoupling
#java
#2d-engine
Erstellt am 04.10.2026 09:30
1. Systemübersicht & Sequenzieller Datenfluss
Die Verarbeitung im Game Loop erfolgt strikt sequenziell in jedem Frame:
InbutSystem -> MovementSystem -> Ca …
#ecs
#gaming
#RPG
#architecture
#design-pattern
#game-loop
#camera-system
#clamping
#coordinate-transformation
#math
#rendering
#swing
#2d-rendering
Erstellt am 12.09.2026 10:04 · Klasse: GameWindow.GamePanel
Zur visuellen Unterscheidung von Zuständen in UI-Listen (z. B. offene vs. erledigte Aufgaben) kombiniert die Zeichenlogik dynamische Farbwechsel mit veränderten …
#ui
#hud
#user-experience
#rendering
#color-coding
Erstellt am 12.09.2026 10:03 · Klasse: GameWindow.GamePanel
Nicht alle im Speicher gehaltenen Daten einer Entitätsliste sollen dem Spieler im HUD angezeigt werden. Noch nicht von NPCs angenommene Quests (NOT_STARTET) ver …
#ui-filtering
#state-pattern
#hud
#quest-system
#clean-code
Erstellt am 12.09.2026 10:02 · Klasse: GameWindow.GamePanel
In Ergänzung zu Modals/Dialogfenstern erfordern UI-Elemente wie ein Quest-Tracker eine permanente Anzeige auf der Bildschirmoberfläche (Screen-Space). Implemen …
#hud
#rendering
#screen-space
#ui
#quest-tracker
Erstellt am 12.09.2026 09:37 · Klasse: GameWindow.GamePanel
Wenn Objekte (wie ein NPC) Abhängigkeiten zu anderen Objekten (wie einer Quest oder DialogBox) besitzen, muss die Erstellungsreihenfolge im Container / der Pane …
#dependency-injection
#initialization-order
#architecture
Erstellt am 12.09.2026 09:36 · Klasse: GameLoop
Beim Ausführen von Aktionen, die State-Machine-Übergänge anstoßen, müssen Ausnahmen gezielt abgefangen werden, damit unerwartete Eingaben nicht den gesamten Gam …
#game-loop
#exception-handling
#debug
#state-machine
#input
Erstellt am 12.09.2026 09:36 · Klasse: NPC
Die Interaktionsmethode eines NPCs wertet den aktuellen Zustand einer verknüpften Quest dynamisch aus. Abhängig vom Status verändert sich sowohl der im Dialog a …
#npc
#dialog
#enum-switch
#quest-system
#interaction
Erstellt am 12.09.2026 09:35 · Klasse: Quest
Statt freien Schreibzugriff auf Zustände über setStatus() zuzulassen, schützt das Objekt seine eigenen Zustandsübergänge durch explizit benannte Methoden (z. B. …
#state-machine
#encapsulation
#domain-logic
#validation
#exceptions
Erstellt am 12.09.2026 08:55 · Klasse: Quest
In frühen Entwicklungsphasen werden Entitäten primär als Datenbehälter (Plain Old Java Objects / POJOs) definiert, um die Kernstruktur zu etablieren. Validierun …
#pojo
#state-machine
#decoupling
#clean-code
Erstellt am 12.09.2026 08:54 · Klasse: Quest
Obwohl Enums für Status-Typen ideal sind, wird für die Eindeutigkeit (id) von Quests oder Items auf String-Identifikatoren gesetzt. Hintergrund & Best Practice …
#architecture
#data-driven
#serialization
#json
#extensibility
Erstellt am 12.09.2026 08:53 · Klasse: Queststatus
Anstelle von primitiven Datentypen (wie int oder String) werden Statuszustände in Game-Systemen bevorzugt über enums abgebildet. Dies verhindert, dass nicht def …
#enum
#type-safety
#state-management
#domain-driven-design
Erstellt am 12.09.2026 08:25 · Klasse: NPC, InteractableObject
Die Modellierung der Welt-Objekte nutzt eine "ist-ein"-Beziehung (is-a). Ein NPC erweitert InteractableObject. Details:Vererbung gemeinsamer Attribute: Gitterp …
#op
#inheritance
#polymorphic-design
#game-entities
Erstellt am 12.09.2026 08:24 · Klasse: InteractionSystem
Wenn ein UI-Element (wie eine Dialogbox) aktiv geöffnet ist, müssen Interaktionen mit der Spielwelt konsumiert werden, um unbeabsichtigte Doppel-Aktionen (z. B. …
#input
#modal
#dialog
#state-machine
#interaction
Erstellt am 12.09.2026 08:23 · Klasse: DialogBox
Die UI-Zustandshaltung sollte strikt von Ein- und Ausgabesystemen getrennt sein. DialogBox speichert lediglich Daten (text, visible) und bietet Methoden zu dere …
#mvc
#architecture
#decoupling
#clean-code
Erstellt am 12.09.2026 08:22 · Klasse: GameWindow.GamePanel
In 2D-Spielen mit scrollender Kamera müssen zwei Arten von Zeichenoperationen unterschieden werden: Welt-Objekte (Tiles, Player, NPCs) und UI/HUD-Elemente (Dial …
#swing
#rendering
#camera
#hud
#ui
#graphics2d
Erstellt am 12.09.2026 07:49 · Klasse: Interactable, InteractionSystem, Player
Das Interaktionssystem verbindet die Blickrichtung des Spielers (facingRow / facingCol) mit Objekten in der Welt. Design-Patterns:Interface Interactable: Ermög …
#interface
#decoupling
#facing-direction
#grid-interaction
Erstellt am 12.09.2026 07:47 · Klasse: InputHandler
Kontinuierliche Bewegung benötigt isPressed() (State-Handling). Aktionen wie Interagieren, Menü-Öffnen oder Angreifen dürfen jedoch nur einmal pro Tastendruck f …
#input
#edge-detection
#keybindings
#thread-safety
#concurrency
Erstellt am 12.09.2026 07:46 · Klasse: Player
Wird die Bewegung auf X- und Y-Achse gleichzeitig geprüft, bleibt der Charakter an Hindernissen hängen. Durch eine getrennte Prüfung bewegt sich der Spieler ent …
#collision
#aabb
#sliding
#2d-physics
#grid
Erstellt am 12.09.2026 07:45 · Klasse: Camera, GameWindow.GamePanel
Die Kamera entkoppelt die Spielfeldgröße von der eigentlichen Fenstergröße (Viewport). Statt Objekte beim Rendern manuell umzurechnen, transformiert die Kamera …
#camera
#viewport
#graphics2d
#clamp
#rendering
Erstellt am 11.09.2026 23:38 · Klasse: GameWindow.GamePanel
Ein häufiger Fehler bei Desktop-Anwendungen in Java ist, dass nach dem Öffnen des Fensters Tastatureingaben ignoriert werden, weil kein Element explizit den Fok …
#swing
#focus
#input
#ui-lifecycle
Erstellt am 11.09.2026 23:36 · Klasse: GameWindow.GamePanel
Beim Zeichnen einer gitterbasierten Karte wird mit verschachtelten Schleifen (row / col) über das 2D-Array iteriert.
Praxis-Tipps:
Farbzuweisung über Enum/K …
#graphics2d
#rendering
#tilemap
#debug
#alpha-channel
Erstellt am 11.09.2026 23:34 · Klasse: GameWindow.GamePanel
Anstatt feste Fenstergrößen (wie 800x600) zu verwenden, sollte sich die Dimension des Canvas (JPanel) dynamisch aus den Kartendaten berechnen. Dadurch wird verm …
#swing
#tilemap
#window-size
#pack
#layout
Erstellt am 11.09.2026 14:19 · Klasse: GameWindow.GamePanel
Wenn Spieldateien (wie Texturen oder Maps) nicht geladen werden können (z. B. falscher Relativpfad beim Start außerhalb der IDE), sollte die Anwendung nicht dir …
#exception-handling
#fallback
#clean-code
#defensive-programming
Erstellt am 11.09.2026 14:17 · Klasse: GameWindow
Swing-Komponenten sind nicht thread-sicher und müssen zwingend auf dem Event Dispatch Thread (EDT) erzeugt und manipuliert werden.
Graceful Shutdown:
Beim S …
#swing
#edt
#thread-safety
#window-listener
#lifecycle
Erstellt am 11.09.2026 14:15 · Klasse: TileMap
Verwendung von java.nio.file.Files zum Einlesen von Grid-Karten aus Textdateien.
Vorgehen:
Datei mittels Files.readAllLines(Path.of(path)) in eine List<Stri …
#file-io
#nio
#2d-array
#tilemap
#parsing
Erstellt am 11.09.2026 14:09 · Klasse: Player
Zwei wichtige Grundlagen für ruckelfreie und faire Bewegung in Spielen:
Floating-Point-Koordinaten: Positionen (x, y) müssen als double geführt werden, um bei …
#math
#2d-physics
#player-movement
#delta-time
#vector-math
Erstellt am 11.09.2026 14:07 · Klasse: InputHandler
Ein klassischer KeyListener verliert die Tasteneingaben, sobald das Panel den Fokus verliert. Key Bindings über JComponent.WHEN_IN_FOCUSED_WINDOW reagieren verl …
#swing
#input
#keybindings
#concurrency
#concurrent-hashmap
Erstellt am 11.09.2026 13:40 · Klasse: GameLoop
Eine while(true)-Schleife ohne Bremse läuft auf jedem Rechner unterschiedlich schnell. Um eine konstante Spielgeschwindigkeit zu garantieren, wird die verstrich …
#game-loop
#threads
#delta-time
#concurrency
#java
Erstellt am 03.09.2026 22:30
Eine .ui-Datei ist ein Hytalespezifisches Markup-System. Die Grundlegende Syntax ist hier beschrieben
#ui
#markup
Erstellt am 01.09.2026 23:59 · Klasse: com.hypixel.hytale.server.core.universe.Universe
Welten werden in Universe gespeichert.
Abrufen kann man diese mit der static Universe.get() methode
#worldgen
#Universe
#generierung