Repository navigation
Home
Questa wiki accompagna lo studio di agpunicas, un framework didattico per videogiochi 2D scritto in C++ e basato su SDL3.
L'obiettivo non è sostituire la lettura del codice, ma offrire una mappa: quali responsabilità ha ogni modulo, come collaborano le classi e dove inserire il codice specifico di un gioco. Ogni pagina collega le spiegazioni alle classi da leggere: usa la wiki per orientarti e il sorgente per verificare i dettagli.
Due guide pratiche alle utilità condivise:
- Geometria e collisioni: scelta dei tipi, coordinate, angoli e uso corretto dei test geometrici.
- Autotiling e spritesheet: preparazione delle immagini, colori delle maschere e verifica dei fotogrammi estratti.
- Panoramica del core
- Architettura e game loop
- Input ed eventi
- Scene, oggetti e scheduling
- Rendering, coordinate e camera
- Sprite, animazioni e testo
- UI, overlay e clipping
- Quadtree e query spaziali
- Servizi e asset
- Come estendere il core
- Editor dei livelli
- LevelData e livelli JSON
- Post-processing e shader
I quattro esempi condividono il core, ma implementano regole differenti. Ognuno ha un percorso di lettura dettagliato:
- CustomPlatformer: fisica e collisioni personalizzate. Prosegui con scena e risorse, movimento e collisioni ed entità e gameplay.
- CustomPlatformerSlopes: platform ispirato a Super Mario Bros 3, con rampe, scivolamento e piattaforme attraversabili. Prosegui con scena e risorse, movimento e collisioni ed entità e gameplay.
- Box2DPlatformer: platform con simulazione Box2D 3.x. Prosegui con scena e risorse, world, body e contatti ed entità e gameplay.
- ActionRPG: gioco con vista dall'alto, collisioni personalizzate, AI e interfaccia. Prosegui con scena e risorse, movimento e collisioni, pathfinding e NPC, Link e gameplay e UI e portali.
Il repository è diviso in tre livelli:
| Livello | Responsabilità |
|---|---|
utils/ |
Tipi geometrici, collisioni, tempo, file, funzioni SDL e altre utilità riusabili. |
core/ |
Ciclo principale, scene, oggetti, rendering, audio, font, editor, LevelData e servizi comuni. |
| Progetti di esempio | Regole di gioco, fisica, personaggi, livelli e contenuti specifici. |
Il core non è un motore fisico: fornisce l'infrastruttura comune sulla quale i progetti costruiscono sistemi di collisione e dinamica differenti.
Durante un frame, Game raccoglie gli eventi e aggiorna le scene; la Window chiede poi a ciascuna scena di disegnarsi. Una GameScene aggiorna i propri Object, mentre la sua View seleziona quelli nella camera. Soltanto gli oggetti renderizzabili arrivano allo Sprite, che legge una regione di texture. In breve:
Game -> Scene/GameScene -> Object
-> Window -> Scene -> View -> RenderableObject -> Sprite
Le due catene condividono la scena ma rispondono a domande diverse: cosa succede? e cosa viene mostrato?. Le pagine seguenti le seguono nell'ordine in cui è utile studiarle.
Ogni modulo ha una pagina dedicata, raggiungibile anche dal menu laterale:
- 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