Sviluppare un gioco in Python: Panda3D.

Introduzione

In quest’articolo inizieremo il nostro cammino nelle tre dimensioni. Esistono svariati SDK e Game Engine in python che permettono di addentrarsi in questo mondo. Alcune librerie, come pyglet o pyOpenGL, ma anche la stessa pygame che abbiamo utilizzato fin ora, offrono la possibilità di creare ambienti e gestire oggetti in 3D, con una dimensione molto ridotta dell’intera libreria.

Esistono poi librerie più corpose come pyOgre, porting in python del famoso motore grafico Ogre; oppure Game Engine come Crystal Space che supportano lo scripting in python per la creazione dei propri videogiochi. Tra le varie possibilità la mia scelta è caduta su Panda3D per le seguenti motivazioni:

  • Completamente utilizzabile in Python
  • Buon impatto grafico (effetti di ultima generazione) su tutte le piattaforme
  • Libreria molto completa e in continuo aggiornamento (gestione grafica 3D, I/O, collisioni, audio ecc…)
  • Buon supporto online (forum e IRC channel)
  • Manuale online (al quale faremo riferimento molto spesso)
  • Utilizzabile anche per progetti commerciali
  • Estendibile per esigenze personali

Essendo molto completa ci permetterà di concentrarci di più sulla realizzazione delle varie parti di un videogame, esplorando con cura la libreria senza preoccuparci dell’implementazione.

Installazione

Procurarsi l’SDK è molto semplice, basta seguire questo indirizzo : http://www.panda3d.org/download.php?sdk&version=1.7.2 (ultima release stabile, cioè la 1.7.2)

L’installer per windows comprende anche un interprete python proprio della libreria Panda3D. Si consiglia vivamente di utilizzare quest’ultimo durante lo sviluppo, magari settando opportunamente il vostro IDE per l’utilizzo di questo interprete, che si trova nella cartella principale di Panda3D (l’eseguibile da linkare per l’interprete è “ppython.exe”).

E’ presente anche l’installer per i sistemi Mac e per le distribuzioni linux più famose (Debian, Ubuntu e Fedora). Per chi volesse compilarlo personalmente o per quelle persone che hanno una diversa distro linux, sono presenti i sorgenti, ma controllate comunque che questo pacchetto non sia già presente in qualche modo per il vostro sistema (per esempio in AUR per gli utenti ArchLinux).

La compilazione e il corretto settaggio delle impostazioni porteranno via un pò di tempo, data la grandezza dell’SDK, ma il tutto è direttamente proporzionale ai risultati che è possibile raggiungere con poco sforzo. Come ho già detto la libreria comprende molti moduli che implementano già le funzioni basilari e anche abbastanza avanzate di qualsiasi videogame in circolazione.

Una volta completata l’installazione, verifichiamo il corretto funzionamento della libreria con il seguente esempio, che è anche presente nel manuale online in lingua inglese.

Codice

from direct.showbase.ShowBase import ShowBase

class MyApp(ShowBase):
    def __init__(self):
        ShowBase.__init__(self)

app = MyApp()
app.run()

Analisi

Il codice non fa niente altro che estendere la nosta classe ereditando le proprietà di ShowBase, che dovrà essere inizializzata durante la creazione del nostro oggetto MyApp. Questa  (ShowBase) si occupa di caricare tutti i moduli di base e quelli più utilizzati per un’applicazione scritta con Panda3D. Ecco perché visualizziamo una finestra grigia completamente vuota (che comunque indica una corretta installazione dell’SDK). Fatto questo, utilizziamo il metodo run() per entrare nel loop principale, che dovrà essere chiamato solo una volta. In questo modo sarà possibile intercettare i vari eventi  (come la chiusura della finestra) ed eseguire i vari script del programma che altrimenti si chiuderebbe istantaneamente.

Conclusioni

Se l’installazione è andata a buon fine non dovreste avere problemi ad eseguire questo piccolo script, che sarà la nostra base di partenza per quello che vedremo succesivamente. Per ora non voglio andare oltre, visto che gli argomenti da sondare sono molti e vorrei gestire la cosa al meglio. Intanto gustatevi gli esempi che sono correlati con l’SDK, così potete constatare direttamente le potenzialità di questo motore grafico e delle features che offre il game engine.

Come al solito, spero di aver stuzzicato il vostro interesse e non dimenticate di segnalare le vostre impressioni riguardo Panda3D, compresi eventuali problemi durante l’installazione o l’esecuzione del codice.

Press ESC to close