
Alcuni mesi fa, durante i periodi più freddi di Chicago (circa 30 gradi Celsius sotto lo zero), avevo deciso di implementare un semplice videogioco isometrico. Non avevo nessuna esperienza nello sviluppo di videogiochi e volevo sperimentare le mie abilità in un settore completamente nuovo.
Inizialmente avevo intenzione di creare qualcosa tramite qualche libreria grafica in C++ (vista l'incredibile quantità di documentazione del linguaggio in ambito videogiochi disponibile online), ma dopo qualche giorno ho deciso che non avrei avuto bisogno di imparare le API delle librerie dal momento che ero già a conoscenza di un'API che mi sarebbe giovata alla perfezione.
Naturalmente sto parlando dell'API messa a disposizione da un comune Web Browser. Tramite la manipolazione del DOM con JavaScript si ha la possibilità di creare elementi grafici 2d in modo estremamente semplice.
L'isometria rende possibile trasformare l'ambiente 2d in modo da dare una prospettiva migliore degli elementi visibili. Il mio obiettivo era quello di poter spostare diversi elementi tramite questo asse isometrico; dopo alcune ricerche sono riuscito a trovare una formula matematica che mi avrebbe permesso di identificiare la posizione di un tile nelle coordinate (x,y) del browser.
A questo punto il gioco era quasi fatto, l'implementazione dell'algoritmo A* Pathfinding era a mio avviso la cosa più complicata da fare, mentre invece si è rivelata la cosa più semplice.
Il gioco era divenuto migliore delle mie aspettative iniziali ed avevo intenzione di usufruire al massimo delle funzionalità presenti nel browser. Grazie alla presenza di Ajax, la possibilità di comunicare con un server senza il ricaricamento della pagina, mi è venuto naturale pensare a come usufruire di questa tecnologia per creare un'interfaccia multiplayer. Con l'aggiunta di Comet (in pratica è una semplice request HTTP che non termina, e ci permette di mandare dati al client - browser - se si verificano cambiamenti sul server) ho potuto creare un piccolo server in C che riuscisse ad elaborare i dati del "giocatore" e rimandarli presso il processo HTTP -> client appena richiesti.
Credo che l'ambiente Web + JavaScript sia maturo abbastanza da poter ospitare giochi di questo genere, con semplici attributi grafici, visto anche l'incredibile portabilità (basta un web-browser con javascript). Purtroppo io non ho molte qualità a livello grafico da poter fare qualcosa di interessante per questo progetto, come distribuirlo e/o creare una storia per il gioco, ma se siete interessati ed avete qualche esperienza nel settore videogiochi, non esitate a contattarmi.