Hello world - La struttura classica di un videogame

Senza addentrasi nello specifico di singoli progetti, per i quali potrebbero essere necessarie strutture alternative se non completamente personalizzate, vorrei descrivere in breve quelle che sono le componenti frequenti che si possono trovare in un videogame.

Nota. I post successivi che tratteranno questo argomento avranno come parola chiave “Struttura”, detto ciò:
Benvenuti in struttura!

Supponiamo di avere una classe principale che gestisca la logica del gioco, chiamiamola MainGame. Questa avrà i metodi:

Initialize()
{
        Crea, Carica, Istanzia e Configura tutti gli elementi del gioco (Personaggi, Grafica, Audio, Stato di Gioco)
        Può essere strutturato come un insieme di chiamate a metodi Initialize() o Load() degli elementi detti sopra.
        Quando tutto è pronto lo notifica o avvia direttamente il fase di gioco.
}

La fase di gioco si può considerare come in insieme di istanti in cui viene modificato lo Stato di Gioco. Questi istanti vengono scanditi da un Timer che ad una determinata frequenza invocherà due metodi principali che si occupano della Logica e del Rendering:

Update(Timer)
{
      Controlla lo stato di Gioco
      Legge Input dell’utente
      Modifica lo Stato di Gioco
}

Renderer(Time)
{
      Legge lo Stato di Gioco
      Modifica l’aspetto visivo/Audio
}

Esempio
Il gioco consiste in un omino che possiamo muovere sullo schermo evitando che venga colpito da macigni che cadono dall’alto.

In MainGame avremo:
StatoDiGioco
{
     Posizione Omino
     Posizioni Macigni
     Fase (Gioco, Vittoria, Sconfitta)
}

Grafica: Omino, Macigni, Fondale
Suoni: Musica, Esplosione, Vittoria

Cominciamo.

Initalize()
{
      Carica Grafica, Suono
      Posiziona omino al centro
      Posiziona Macigni in alto
      Fase = Gioco
      Comincia: Timer.Start
}

Update(Timer)
{
      Leggi input -> cambia posizione dell’Omino
      Cambia posizione Macigni (position.Y + gravità)
      
      If (macigno colpisce Omino)
      {
             Play.Esplosione
             Fase = Sconfitta
      }

      If (macigni finiti)
      {
            Play.Vittoria
            Fase = Vittoria
       }
}

Renderer()
{
       Legge Stato di Gioco
       Disegna Fondale
       Disegna omino nella posizione aggiornata
       Disegna macigni nella posizione aggiornata
       Suona Musica ed Effetti
}

Bene adesso andiamo a fare un gioco!
Alla prossima, ciao

Commenti

Post popolari in questo blog

Indovinello: Soluzioni!!!

Gli indovinelli che ci avete mandato 10