Repository navigation
ActionRPG
ActionRPG usa il core per un gioco di ruolo d'azione con vista dall'alto. Come CustomPlatformer, implementa collision detection e collision response nel progetto; a differenza dei platform aggiunge dialoghi, inventario, portali e un nemico che usa pathfinding. È l'esempio migliore per seguire una funzione attraverso geometria, AI, input, UI e rendering.

flowchart TD
Game[Game del core] --> RPGGame
GameScene[GameScene del core] --> RPGGameScene
Renderable[RenderableObject del core] --> Movable[MovableObject]
Movable --> Collidable[CollidableObject]
Collidable --> Dynamic[DynamicObject]
Collidable --> Static[StaticObject]
Collidable --> Trigger
Trigger --> Portal
Dynamic --> Link
Dynamic --> Enemy
Enemy --> Soldier
Dynamic --> NPC
Dynamic --> Sword
Soldier --> Pathfinding
| Modulo | Ruolo |
|---|---|
RPGGame, RPGGameScene
|
Stack, input, camera, quadtree e transizioni. |
LevelLoader, SpriteFactory
|
Livello JSON tramite LevelData; texture e sprite. |
MovableObject, CollidableObject, DynamicObject, StaticObject
|
Movimento top-down, broad/narrow phase e collision response. |
Soldier, Pathfinding
|
State machine e ricerca BFS su griglia. |
Link, Sword, NPC, Trigger, Portal
|
Attacco, interazione e teletrasporto. |
HUD, Item, DialogBox, Menu
|
Inventario, dialoghi e scene UI. |
RPGGameScene attiva il quadtree per le query spaziali, comprese quelle usate nella collision detection e per l'occupazione delle celle. Il quadtree non esegue BFS: Pathfinding mantiene una griglia e calcola il prossimo waypoint. Il progetto usa GPUShaderWindow per gli shader condivisi e per la maschera circolare CPU dei portali; la pagina shader del core descrive entrambi i percorsi.
-
main()registraRPGGame, poi inizializza sprite, loader, audio e font opzionali. -
RPGGame::init()inserisceoverworld, HUD e menu iniziale nello stack. Il menu blocca il gioco finchéNew Gamenon lo rimuove. -
LevelLoader::load("overworld")leggelevels/overworld.jsonconLevelDatae crea la scena dai parametri discene.loadJson(world, level)aggiunge sfondi, personaggi, ostacoli, portali e clipper descritti nel documento. -
RPGGameScenelegge i controlli, aggiorna la scena e usa il quadtree; le classi concrete applicano le regole di movimento, collisione e gameplay.
Le zone fuori dal rettangolo nominale della scena, come la casa raggiunta da un portale, restano possibili perché l'auto-eliminazione degli oggetti è disabilitata e la radice del quadtree è più ampia della mappa. La griglia di Pathfinding, invece, è allocata sul rettangolo nominale: i due confini non vanno confusi.
Formato, percorso e caricamento sono uniformi ai tre platformer: levels/<name>.json, blocco scene obbligatorio, categories e objects. name compare soltanto dove serve, come sui portali da collegare. Vedi LevelData e livelli JSON.
- Scena e risorse: avvio, JSON, coordinate, asset e input.
- Movimento e collisioni: gerarchia, OBB, SAT, quadtree e collision response.
- Pathfinding e NPC: griglia, BFS e state machine del Soldier.
- Link e gameplay: movimento, spada, interazione e limiti dell'esempio.
- UI e portali: HUD, inventario, dialoghi e teletrasporto.
Per le classi condivise parti da architettura del core, scene e oggetti e quadtree. Il diagramma completo delle classi affianca la mappa semplificata.
- Panoramica
- Diagramma delle classi
- Architettura e game loop
- Sequenza di un frame
- Input ed eventi
- Scene e oggetti
- Rendering e coordinate
- Sprite e testo
- UI e overlay
- Quadtree
- Servizi e asset
- Estendere il core
- Editor dei livelli
- LevelData e livelli JSON
- Shader