[***dati incompleti: scheda gioco o num immagine mancante***][***dati incompleti: scheda gioco o num immagine mancante***]
Nella press si legge che si tratterà di uno stand-alone ma potrebbe essere incluso anche nelle Direct-X... Una tale versatilità da cosa deriva?
Dalla progettazione software che abbiamo fatto. Abbiamo interposto tra il codice che usa l'engine grafico e il nostro engine di fisica, un ulteriore layer software che raccoglie tutte le caratteristiche che un engine grafico deve fornire, con un'unica interfaccia. Se l'interfaccia è la stessa è chiaro che il codice che la usa non deve essere cambiato. La chiave sta nello scegliere con buon senso e lungimiranza l'interfaccia giusta. In Java esiste perfino la keyword "Interface" per tradurre nel linguaggio questo concetto. Naturalmente cìò è fattibile anche in C++. Il motivo per cui non si adottano strategie del genere nella maggior parte delle aziende è prevalentemente politico ed economico: queste strategie di programmazione sono ben note, solo che trovare dei progettisti software in grado di attuarle in modo proficuo (cioè senza impiegare troppo tempo per farlo) è molto difficile. Ci sono grandissime aziende (vedi Microsoft) che hanno la maggior parte dei programmatori con skill molto basso, pagati poco e quindi incapaci di trovare soluzioni brillanti. Ma alla fine succede che per applicazioni "normali" i costi del fare ottimo software e dell'avere progettisti in gamba non bilanciano gli incrementi di produttività e di qualità. Il nostro caso è diverso. Noi possiamo realmente raggiungere l'obiettivo di realizzare un videogioco in pochi mesi perchè abbiamo investito molto sulle tecnologie sottostanti. In questo caso abbiamo puntato sul fatto che a noi conviene una politica di software di alta qualità, puntando sulla riutilizzabilità.
I vostri futuri progetti, avranno sempre nelle fondamenta UPHO?
Si. A meno che non si abbia l'intenzione di non usare il patrimonio software che stiamo accumulando e di cominciare un videogioco da zero. Comunque si prevede che entro un anno, un anno e mezzo il motore sarà abbastanza flessibile da supportare giochi di genere diversi dall'attuale per cui non si vede la ragione di non utilizzarlo.
[***dati incompleti: scheda gioco o num immagine mancante***][***dati incompleti: scheda gioco o num immagine mancante***]
Avete intenzione di permettere l'utilizzo di UPHO ad altre software house?
Questo è un punto delicato. Credo che, visti gli sforzi fatti, sarà probabile che per rientrare economicamente venderemo in licenza anche Upho. Il problema è che bisogna trovare il modo di non darci la zappa sui piedi, quindi di lasciare che N-Side abbia dei vantaggi rispetto alle società concorrenti che dispongono di maggiori risorse economiche. Una soluzione è quella di offrire in licenza una nuova versione dell'engine solo dopo che N-Side abbia fatto uscire un titolo con quella versione, rimanendo quindi sempre con un certo vantaggio. Questo per lo meno finchè N-Side non sia in grado di competere con concorrenti più grandi.
Qual'è il vostro progetto attuale?
"Nelson Piquet Gran Prix Evolution", un racer futuribile nel quale abbiamo
cercato di visualizzare un ipotetico futuro delle corse di Gran Premio. Ci siamo
deliberatamente ispirati all aF1 ed al suo regaolamento con veicoli
differenziati, soste ai box, tute, sponsors e circuiti differenziati per
locazione e morfologia dei tracciati. La concessione del logo da parte di Piquet
è stata un grande incentivo per noi, soprattutto perchè si tratta del nostro
primo titolo e siamo riusciti a convincere il publisher con una sola demo.
[***dati incompleti: scheda gioco o num immagine mancante***]
Parlateci di GPE e cosa porterà di innovativo nel nostro mercato...
GPE è un titolo molto particolare. Offre una sensazione di guida simile a quella della Formula Uno, usando invece un campo di gioco e dei veicoli originali. Lo stile di guida è ciò che colpisce maggiormente. E' totalmente innovativo. In pratica per poter mandare dei veicoli a 1000 km/h in un circuito con delle curve notevoli, e soprattutto per il fatto che i veicoli non hanno appoggio diretto sul terreno, abbiamo dovuto inventare qualcosa di nuovo. Naturalmente non potevamo semplicemente programmare un comportamento predefinito stile "manda le navette a 1000 km/h e falle curvare", per via dell'utilizzo di Upho. Abbiamo risolto il problema in modo "fisico": si è introdotto un campo magnetico ai lati della pista che tende a contenere la navicella nella corsia. Questo lascia un po' sorpresi quelli che sono abituati a giocare ad altri giochi di guida, ma dopo aver preso dimestichezza, si scopre che l'invenzione è veramente interessante. In pratica lo stile di guida che si scopre essere ideale (dopo aver giocato a lungo) è quello di usare meno lo sterzo e farsi accompagnare dal campo magnetico quando possibile. Questo ha una spiegazione fisica: quando per spostarci all'interno della pista non si usa lo sterzo, il veicolo rimane parallelo al tracciato, offre un profilo più aereodinamico quindi va più veloce, dato che Upho simula anche l'attrito dell'aria. Anche il fatto di non toccare terra e quindi di scivolare sul terreno sorprende all'inizio, ma risulta molto divertente una volta abituati.
[***dati incompleti: scheda gioco o num immagine mancante***]
Come avete implementato UPHO in questo gioco?
Usare Upho è estremamente semplice dal punto di vista della programmazione. Per ora non è ancora assemblato come prodotto a se, comunque sarà una DLL ed avrà delle API in C++. Upho infatti è scritto totalmente in C++, in modo da avere un'architettura solida e veloce, ed è ottimizzato usando l'assembler per Pentium e superiori anche tenendo conto delle tendenze future dei processori, che assomigliano sempre più a dei RISC.
Parliamo dell'impatto che ha l'uso di Upho all'interno di un videogioco. Siccome i veicoli non sono più solo degli oggetti grafici, ma la forma del veicolo influenza decisamente la sua guidabilità, i nostri artisti 3d hanno avuto a che fare con problemi da "ingegneri aereonautici" :). Questo ha sorpreso anche me, ma in pratica è conseguenza diretta dell'uso di una fisica realistica. In pratica è capitato che uno dei nostri dopo aver modellato un bel veicolo, lo abbia dovuto scartare o modificare perchè risultava poco manovrabile o poco aerodinamico. Una cosa che somiglia un po' al lavoro di un'ingegnere che progetta veicoli veri. Questo è del lavoro in più che altri sviluppatori non hanno dovuto fare, ma rende tutto molto stimolante. Abbiamo anche voluto dare all'utente un po' di quel feeling da "ingegneri aeronautici" che abbiamo avuto noi sviluppando il videogioco, rendendo molto customizzabili i veicoli. Al momento attuale non so fino a che punto ci spingeremo in questo senso perchè i tempi stringono, comunque è una delle caratteristiche del titolo che senza dubbio accentueremo nel nostro prossimo lavoro.
Sembrerebbe, dalla press, che l'intelligenza artificiale avrà qualcosa di più?
Non è stato possibile sviluppare l'intelligenza artificiale come modulo riutilizzabile, per motivi di tempo. Comunque, essendo custom, è stata realizzata in modo da imitare la destrezza dei migliori piloti automatici. Dopo un lungo lavoro di tuning siamo riusciti a creare dei piloti che non solo fanno degli ottimi tempi, ma che percorrono anche traiettorie pulite ed eleganti. Senz'altro anche i piloti più bravi dovranno fare molta fatica per battere il computer. Se poi diventeranno ancora più bravi, per loro c'è il multiplayer.
E ora parliamo del multiplayer, vero pane per i nostri denti, cosa potrà darci GPE per il gioco con altri utenti? E quali tipi di collegamento saranno utilizzati?
Per il momento è previsto solo il supporto per rete locale, ma in seguito potrebbe essere possibile studiare una soluzione per Internet. I protocolli di trasmissione che abbiamo già a disposizione sono TCP/IP e IPX attraverso DirectPlay, quale dei due sarà il predefinito dipenderà dall'esito dei test di stabilità. L'interazione fra i computer è di tipo client/server, ed è strutturata in modo da non degradare le prestazioni della macchina host, migliorando però quelle delle macchine client più lente. In pratica un computer poco performante in modalità single player potrebbe comunque essere adatto per il gioco in multiplayer, succede spesso infatti che non tutti i computer in rete abbiano prestazioni paragonabili, soprattutto se si tratta di una rete "casalinga".
La N-Side, software house romana, si prepara ad esordire nel mercato dei videogames con un interessante gioco di corse arcade: "Nelson Piquet Grand Prix Evolution". Abbiamo rivolto qualche domanda a Ranieri Panchetti, Project Manager di N-Side Software che ci ha illustrato le caratteristiche del loro titolo di esordio e del loro innovativo Universal Physics Operator (UPHO).
Parlateci di UPHO e della grande idea che c'è sotto...
L'idea nella sua formulazione è semplice, anche se l'attuazione tecnica non lo è: isolare tutto il codice che riguarda la "simulazione" in un layer software stand alone, un vero modulo indipendente.
Naturalmente per fare questo si impiega più tempo che per mettere a punto una simulazione fisica strettamente specifica per il titolo in questione, programmando il modulo di simulazione come parte integrante del videogioco. Procedere nel modo "facile" presenta apparentemente dei vantaggi. Infatti, se si fa del codice custom per il videogioco, tenendo conto esclusivamente dei vincoli imposti dal videogioco stesso, risulta molto facile gestire i movimenti degli oggetti, ossia la loro simulazione fisica. Per esempio, un'assunzione che fanno molte simulazioni di fisica è che c'è un environment di grandi dimensioni (la pista) e alcuni oggetti piccoli (le auto). Facendo affidamento su dati di questo tipo è molto più facile scrivere del codice e soprattutto ottimizzarlo, perchè l'interazione automobile-automobile e automobile-pista ha caratteristiche fisse. Noi abbiamo invece come obiettivo un modulo che simula gli eventi semplicemente dal punto di vista fisico e matematico, quindi senza distinguere i concetti di "veicolo" o "pista". Le leggi della matematica e della fisica vengono usate in generale su N oggetti di M poligoni. Abbiamo lavorato molto utilizzando concetti avanzati di geometria, fisica e algebra astratta e ricercando gli algoritmi migliori per molto mesi. I vantaggi del nostro approccio sono di due tipi, uno nell'immediato ed uno nel lungo periodo. Il vantaggio nell'immediato è che un modulo generale fornisce comunque una simulazione realistica. In altri termini noi non imponiamo un comportamento predefinito agli oggetti. Considerando lo stato attuale dell'hardware, il modo di programmare del tipo: se premi questo tasto vai da questa parte, se l'auto tocca qui allora fai questo, è ormai del tutto superato, anche se è vero che prima, con i processori della vecchia generazione, era l'unica strada percorribile. Con il nostro approccio, ci sono degli eventi, come i movimenti del joystick, che generano delle forze; a queste si aggiungono altre forze risultanti dai campi magnetici e gravitazionali, dall'attrito, dall'inerzia, ecc, e quale movimento farà il veicolo in risposta a tutto questo non è molto semplice da prevedere poichè ci sono molte variabili in gioco. Proprio come succede nella realtà quando si lancia una banale pallina in una banale ruota della roulette: prevedere il punto esatto dove si fermerà è praticamente impossibile. Ciò significa che questo approccio produce in pratica varietà di gioco, partite sempre diverse.
Il secondo vantaggio è quello a lungo termine. Una simulazione il più esatta possibile non pone limiti all'applicazione di Upho. Quando l'engine sarà definitivamente pronto, potremmo iniziare per esempio un gioco in soggettiva senza avere esperienza specifica in quel campo, semplicemente perchè le tecnologie sviluppate ce lo permetteranno con poca programmazione. Nel lungo termine (3 titoli) prevediamo di poter competere con le grandi e multimiliardarie major americane del settore e produrre titoli di uguale qualità in meno tempo ... senza disporre delle stesse risorse economiche. Molto dipende anche da cosa faranno loro nel frattempo. :)