Sviluppo videogiochi
Game loop, motori, fisica, collisioni, sprite, intelligenza dei nemici, audio e input.
Entity Component System: organizzare il codice di un gioco
Cos'è l'architettura Entity Component System, perché si preferisce all'ereditarietà profonda e come entità, componenti e sistemi collaborano.
Audio posizionale e musica adattiva: il suono che reagisce al gioco
Panning, attenuazione con la distanza, occlusione e musica adattiva a strati o a segmenti: come far reagire il suono alla posizione e alle azioni di gioco.
Audio nei videogiochi: effetti sonori, musica e mixer di gioco
Come gestire l'audio in un videogioco: effetti sonori con variazioni, limiti di voci, bus del mixer, musica in loop, formati e caricamento in streaming.
Behavior tree: IA dei nemici modulare e facile da estendere
Cosa sono i behavior tree nell'IA dei videogiochi: nodi sequenza e selettore, decoratori, blackboard e confronto con le macchine a stati finiti.
Collisioni nei giochi 2D: rettangoli AABB, cerchi e punti
Come rilevare le collisioni in un gioco 2D con rettangoli allineati agli assi, cerchi e punti: formule, codice di esempio ed errori da evitare.
Broad phase: griglie spaziali e quadtree per molte collisioni
Quando gli oggetti sono centinaia, controllare ogni coppia costa troppo: come griglie spaziali, quadtree e sweep and prune riducono i controlli.
Coyote time e input buffer: i trucchi invisibili del game feel
Coyote time, input buffering, correzione degli spigoli e hit stop: piccoli accorgimenti invisibili che rendono i controlli di un gioco reattivi e giusti.
Fisica semplice nei giochi: gravità, velocità e un buon salto
Gravità, velocità e accelerazione in un gioco 2D: integrazione di Eulero semi-implicita, salto calibrato per altezza e durata, attrito e limiti.
Il game loop: aggiornamento, rendering e passo fisso
Come funziona il game loop di un videogioco: input, aggiornamento e rendering, passo fisso con accumulatore e interpolazione per un movimento fluido.
Generazione procedurale di livelli: seed, rumore e dungeon
Come generare livelli in modo procedurale: generatori pseudocasuali con seed, rumore di Perlin, automi cellulari per caverne e dungeon a stanze e corridoi.
Gestire l'input nei giochi: tastiera, gamepad e azioni astratte
Come progettare la gestione dell'input in un videogioco: eventi e polling, azioni astratte, gamepad e zone morte, rimappatura dei tasti e accessibilità.
Interfaccia di gioco: HUD, menu e adattamento alle risoluzioni
Come progettare HUD e menu di un videogioco: informazioni essenziali, ancoraggi e scalatura per ogni risoluzione, navigazione con gamepad e leggibilità.
Macchine a stati finiti: dare un comportamento ai nemici
Come usare le macchine a stati finiti per l'intelligenza dei nemici: stati, transizioni, azioni di ingresso e uscita, percezione e stati gerarchici.
Multiplayer in rete: latenza, predizione e server autorevole
Le basi tecniche del multiplayer online: server autorevole, latenza e tick rate, predizione lato client, riconciliazione e interpolazione delle entità.
Prestazioni nei videogiochi: profiling, draw call e object pooling
Come migliorare le prestazioni di un gioco: budget del fotogramma, profiling, meno draw call, object pooling e allocazioni da evitare nel game loop.
Pathfinding A* su griglia: far trovare la strada ai nemici
Come funziona l'algoritmo A* per il pathfinding nei videogiochi: costi, euristiche, movimento diagonale, ottimizzazioni e campi di flusso per molte unità.
Collisioni con i tasselli in un platform: assi separati e pendenze
Come gestire le collisioni tra personaggio e mappa a tasselli in un platform 2D: movimento per assi separati, piattaforme attraversabili e pendenze.
Raycast e proiettili: colpi istantanei contro proiettili fisici
Colpi istantanei con raycast e proiettili simulati a confronto: algoritmo DDA su griglia, collisioni continue, gravità dei proiettili e scelte di design.
Salvataggi nei videogiochi: cosa salvare, formati e versioni
Come progettare i salvataggi di un gioco: quali dati salvare, formati testuali o binari, versioni dei file, scrittura sicura e salvataggio automatico.
Scegliere un motore di gioco: criteri pratici prima di iniziare
Godot, Unity, Unreal o un framework leggero: i criteri concreti per scegliere il motore di gioco giusto in base a progetto, piattaforme e competenze.
Sistemi di particelle: fumo, scintille ed esplosioni nei giochi
Come funziona un sistema di particelle nei videogiochi: emettitori, durata, curve nel tempo, fusione additiva, prestazioni e particelle utili al gioco.
Sprite sheet e animazione a fotogrammi nei giochi 2D
Come organizzare sprite sheet e atlanti di texture, temporizzare l'animazione a fotogrammi e collegarla agli stati del personaggio in un gioco 2D.
Steering behaviors: inseguire, fuggire e muoversi in stormo
Come funzionano gli steering behaviors per il movimento autonomo nei giochi: seek, flee, arrive, wander, evitamento degli ostacoli e stormi di boids.
La telecamera 2D: inseguimento, zona morta e scuotimento
Come programmare una telecamera 2D che segue il giocatore senza scatti: zona morta, smorzamento, anticipo, limiti del livello e scuotimento dello schermo.
Tilemap: costruire livelli a tasselli efficienti e flessibili
Come funzionano le tilemap nei giochi 2D: tileset, livelli multipli, autotiling, proprietà dei tasselli, rendering per blocchi ed editor di livelli.