Tempo di giocare

Ricordo tempo fa di giochi che se eseguiti su sistemi piu' recenti rispetto al loro anno di nascita' schizzavano a velocita' pazzesche fino ad essere ingiocabili. Il problema risiedeva in una dimenticanza o non curanza dei programmatori di un aspetto molto importante.
Il "timing", in italiano si potrebbe tradurre letteralmente in temporizzazione.

Un qualsiasi programma per quanto semplice sia, verra' eseguito alla velocita' massima consentita dalla macchina e dal sistema ospitante, cio' vuol dire che piu' il nostro pc sara' veloce piu' veloce sara' la nostra applicazione nell'elaborazione dei dati e del suo lavoro.
I giochi essendo di base "applicazioni" come un qualsiasi altro programma, possono essere composti da cicli tipo for o while che verranno eseguiti alla massima velocita' fornita dal processore.

Un gioco tipo ha uno schema di base simile al seguente:

int main()
{
//main game loop
while()
{
//meccanismi di gioco
muoviGiocatore();
aggiornaPunteggio();
Disegna();
}
return 0;
}

Una funzione da cui parte tutto e un ciclo principale detto "main game loop", entro cui il gioco vive.
In questo ciclo vengono ripetute sistematicamente tutte le funzioni relative ai vari aspetti del gioco, tipo il movimento dei personaggi e assegnazione punteggi o il semplice disegno sullo schermo delle immagini.
Nell'entrare nella funzione di "muoviGiocatore()" si effettua un controllo sulla tastiera per controllare se un dato tasto e premuto, nel caso lo sia si muove il nostro personaggio di 1 pixel nella direzione voluta, in caso contrario si continua il ciclo.
Tenendo conto che il ciclo verra' eseguito N volte in base alla velocita' del processore, la pressione del tasto nell'arco di un appena un secondo verra' letta piu' di quanto ci si aspetti. Si vedrebbe il nostro personaggio schizzare letteralmente fuori dal campo di gioco ad una velocita' pari quasi a quella del processore. Impossibile seguire l'azione ad occhio nudo.

Per ovviare a questo semplice problema, si dovrebbe campionare "1 secondo" reale nel programma ed eseguire le azioni una volta per ogni secondo "reale".
I computer gia' a livello di hardware sono dotati di sistemi per il conteggio del tempo, in elettronica tutto cio' e' detto "cloacking" e molti linguaggi di programmazione mettono a disposizione strumenti per campionare il clocking e gestire il tempo.

Esistono funzioni nei linguaggi di programmazione che ci permettono di sapere quanti millisecondi sono passati dall'avio del programma, e' il caso della funzione clock_gettime() presente nella glibc ed utilizzato anche nella libreria SDL per fornire supporto nella gestione del tempo nei nostri giochi. L'esempio qui di seguito utilizza la funzione SDL_GetTicks(), questa funzione ci restituisce il numero di millisecondi passati fin da quanto la libreria e' stata inizializzata. In altre parole ci restituisce il tempo passato in millisecondi dalla partenza del programma

int fps_sync (void)
{
static int t, tl = 0, frequency = 1000 / 100, temp;

t = SDL_GetTicks (); //Tempo trascorso dall'inizio del programma

if (t - tl >= frequency)
{
temp = (t - tl) / frequency;
tl += temp * frequency;
return temp;
}
else
{
sleep (frequency - (t - tl));
tl += frequency;
return 1;
}
}

La funzione qui sopra aggiorna la variabile T (Tempo atutale) con il numero di millisecondi restituiti da SDL_GetTicks() e controlla che tra T e TL (Tick last) vi sia una differenza di almeno 10 millisecondi, rappresentati dalla frequenza e viene restituita una variabile che successivamente verra' usata nel main game loop.
Se non vi e' questa differenza tra T e TL, viene messo a dormire il processo sulla macchina per un tempo variabile tra 0 e 10 millisecondi e succesivamente si incrementa TL di 10 millisecondi in modo da recuperare il conteggio perduto nello sleep.

Questa funzione torna utile nel nostro main game loop in quanto ci permettera' di limitare l'uso della cpu in modo dinamico.

while()
{
repeat = fps_sync ();

for (i = 0; i < repeat; i ++)
{
muoviGiocatore();
aggiornaPunteggio();
}
Disegna();
}

In un lasso di tempo (frequenza) verranno eseguite le azioni di gioco all'interno di un ciclo limitato dalla variabile temp rilasciata dalla funzione fps_sync().
Il tutto in modo dinamico, garantendo la stessa velocita' su diversi computer a discapito della velocita' del processore.
Questo modo di gestire gli FPS rispetto a molti altri vanta la possibilita' di poter limitare solo alcune parti del programma garantendo allo stesso tempo la massima velocita' nella resa grafica, a differenza di molti altri metodi usati da molti che mettono a dormire l'intero programma indistintamente.

Questo articolo prende spunto dall'articolo presentato dal sito di Loser Juegos da cui si trova ben poco riguardo i dettagli di funzionamento dell'algoritmo intero, qui ho provato a spiegarlo ed esporlo al meglio.
Se non vi sara' chiaro al primo colpo, non vi scoraggiate, provate a pacioccare un po' con le varie variabili e vedere i vari effetti sul gioco.

And you call your self Messiah?

Uno dei giochi piu' particolari e strani a cui abbia mai giocato. Ricorda molto vagamente titoli come MDK o Quake 2 per le sue ambientazioni tetre e futuristiche.

Il gioco ci mette nei panni (in questo caso solo mutandoni) di un angelo cicciottello di nome Bob, il cui scopo e' quello di salvare la terra dalle grinfie di un perfido dittatore.
Ci sara' possibile prendere possesso di ogni creatura vivente semplicemente saltandogli nella schiena o addosso nel caso di piccoli esseri.
La possessione degli individui ci permettera' di raggiungere aree particolari senza correre rischi o di passare inosservato tra i nemici. Non meno importante ci dara' anche la possibilita' di affrontare altri nemici in combattimenti a mani nude o armi da fuoco.

La giocabilita' e' abbastanza accettabile anche se svariati bug presenti nel gioco possono rendere l'esperienza ludica un vero tormento, come anche la compatibilita' con il sistema operativo o le schede grafiche. Pare comunque che gli sviluppatori della Shiny Entertainment abbiano provveduto a correggere questi errori rilasciando due patch differenti per risolvere questi screzi.

Se volete provare di vostro pugno il gioco, pare che ora sia disponibile come abandonware (anche se molto difficile da trovare sui siti specializzati in materia) quindi totalmente libero da vincoli. Un consiglio che posso dare pre partita e' quello di creare un piccolo file bat con il seguente contenuto " MESSIAHD3D.EXE -i -x +! " per eseguire il gioco impostando in precedenza i parametri video e la compatibilita' con sistemi windows superiori al 2000, anche eliminare il video pubblicitario introduttivo tanto che ci siamo. Altri parametri sono disponibili nel readme del menu' di installazione.

Buon divertimento con Bob :]

Mario bros are back!

Trovato questo video fra le pagine di kotaku, una raccolta di gameplay di un Grand Theft Auto convertito in stile Mario, personaggi, oggetti e riferimenti al regno dei funghi come fosse il mondo reale (cioe' virtuale, ma avete capito...).
Visti tanti di video umoristici di questo genere ma questo per ora secondo me e' il migliore fra tutti :D

We cant' stop here. This is Bat Country!

Bat Country e' un gioco flash dal look retro, molto minimale a livello grafico ma molto ricco di divertimento!
Il gioco ci mettera' al comando di un piccolo elicottero elicottero che sorvola i cieli del fantomatico "Bat Country" e manco a dirlo dovremmo fronteggiare orde di pipistrelli erranti e ostacoli tra cui farsi strada.
Le musiche di gioco sono rilassanti e di compagnia, potra' capitare di sentire nel bel mezzo del gioco la simfonia della Ghost House di Super Mario World fra le tante.
Di compagnia sono anche i vari dialoghi fra pilota e coopilota che molto spesso ci saranno di aiuto con suggerimenti su come affrontare le nuove minacce incombenti nel gioco.
Il gioco si gioca con mouse e tastiera, Mouse e tasto sinistro per movimento e sparare, spazio per rilasciare bombe e farle esplodere.
Il gioco ha un tema di base molto cartoonesco, la violenza e' minima per non dire quasi inesistente.
Consigliato a tutti!

Analisi di un videogioco

Capire come si realizzi un videogioco e' cosa semplice, richiede solo una mente fresca e creativa, nulla di piu'. Per comprendere i concetti alla base del discorso non serve avere conoscenze particolari di programmazione o altro, bastano poche nozioni di matematica e logica.

Andando per ordine, un gioco puo' essere suddiviso in piu' strati come una torta.
Ogni gioco che si rispetti ha un campo di gioco, un'area in cui avviene l'azione e si vedono le varie figure. Questo potra' essere il nostro primo strato, lo strato visivo.

Ogni azione o quant'altro avviene nello strato visivo e' frutto di calcoli e attivita' svolte dal programma in background, questo potremmo chiamarlo strato di fondo.
Questo strato puo' esistere e funzionare anche senza lo strato visivo, in quanto lo strato visivo e' solo una rappresentazione grafica e piu' gradevole di quello che potrebbe essere espresso in solo testo dallo strato di fondo.

Ripensiamo quando a scuola, nei primi anni dell'apprendimento ci venivano posti problemi matematici di semplice svolgimento, il classico problema delle mele che si aggiungono e si sottraggono ad esempio.
Ci veniva chiesto, se abbiamo 3 mele e ne compriamo 2, quante mele abbiamo?
Si ragionava su cosa volesse dire visivamente averne 3, si aveva in testa una figura di 3 mele accostate fra loro.

Si ragionava poi su quante mele si sarebbero dovute aggiungere al gruppo, magari si metteva scritto nero su bianco 3 + 2 = 5. Mentre nella nostra testa si aveva ben chiara l'immagine di 5 mele rispetto alle 3 di partenza.



La parte logica e' di calcolo e' paragonabile a quanto avviene nello strato di fondo di un gioco, il programma tiene conto di vari valori e ne mostra una rappresentazione sullo strato visivo, in questo caso potrebbe essere la pagina adiacente su cui per aiutarci ci era facile disegnare l'oggetto in questione mano mano che si procedeve nello svolgere i problemi.
Ovviamente il tutto e' espresso in un linguaggio di programmazione e sotto una logica piu' articolata di quella appena presentata, ma questo e' solo un esempio di facile appendimento che si avvicina molto all'idea di base di gioco.

Andando piu' avanti in logiche piu' specifiche e articolate, troviamo il piano cartesiano, sistemi di coordinate orizzontali e verticali. Lo strato visivo e' paragonabile ad un piano cartesiano in tutto e per tutto.
Immaginate di dover rappresentare una delle mele di prima in un foglio a coordinate X e Y specifiche, il valore delle coordinate sara' tenuto in memoria dal sistema di fondo.



Di partenza mettiamo caso di aver deciso di mostrare la nostra mela alle coordinate 5,3 , il nostro strato di fondo provvedera' a disegnare a tali coordinate come nostra volonta' l'oggetto sullo strato visivo. Su richiesta del giocatore deve anche essere possibile spostare l'oggetto, magari su pressione di un tasto o tasti.
Cio' che e' presente nello strato di fondo puo' essere cio':

Mela {coordinate(5, 3) - immagine(mela.gif) }
Tasto "freccia_destra" premuto? Mela->coordinate(8, 7)
Disegna l'oggetto "Mela" sullo strato visivo

Il programma tiene conto di svariate cose, la posizione della mela e la sua immagine.
Controlla eventualmente la pressione di tasti specifici e ne esegue una o piu' azioni in caso di avvenimento dell'evento. Questo e' un semplice esempio di cosa potrebbe essere successo nel programma.
Volendo aggiungere altre funzionalita' al nostro programma, gli si potrebbe dire di cancellare tutto cio' che si vede nel campo visivo per poi ridisegnarlo con le nuove indicazioni.
Come ogni gioco, anche il piu' semplice, la grafica viene disegnata nella finestra di gioco e ridisegnata nuovamente a seconda degli avvenimenti scaturiti nel programma.

Il tutto funziona come una pellicola cinematografica, da bambino mi piaceva realizzare piccoli cartoni animati nei block notes disegnando in ogni pagina un fotogramma diverso di poco dal precedente e poi scorrerlo vedendolo prendere vita.

Ad ogni pagina, corrispondeva un campo completamente vuoto e pulito, l'immagine disegnata era una trasposizione di circa una capocchia di spillo rispetto alla precedente.

In un videogioco la cosa e' al quanto simile, non abbiamo fogli virtuali in sequenza ma un unico foglio su cui viene disegnato, cancellato e ridisegnato il tutto in maniera ciclica per tutto il ciclo di vita del programma.








Il ciclo di vita del programma puo' essere esemplificato in maniera analoga:

Inizio
Dati e assegnazione valori
Ciclo di vita
Azioni del giocatore
Eventi
Cancella e Disegna
Fine ciclo di vita
Fine

All'interno del ciclo di vita risiedono le logiche del gioco, come si e' visto prima, gestione di eventi quali pressione di tasti specifici o avvenimenti logici/matematici particolari ed infine il disegno sullo strato visivo.
Il ciclo di vita ha durata infinita a meno che un determinato evento non accada e vi ci ponga termine, per cui tutte le sue azioni inglobate verrano eseguite all'infinito. Di conseguenza, quello che succede dietro le quinte verra' visto graficamente dando l'idea di interattivita'.

Questo articolo ha posto le basi, semplificate al massimo di come un videogioco lavori e si possa intendere a livello astratto. Ovviamente con la sola lettura di questo articolo non sarete in grado di creare il vostro gioco, a meno che non sappiate mettere a frutto i concetti esposti in ambito di programmazione.
La pratica e la creativita' sono gli strumenti piu' utili per queste cose.

Geometry Wars Galaxies DS


Un titolo eccezionale, una sorta di retro game ma che in sostanza non è. Pubblicato dalla Sierra nel 2007, sviluppato dalla Bizarre Creations e Kuju Entertainment, Geometry Wars Galaxies e' un gioco all'apparenza retro, uno shooter mozzafiato e frenetico come pochi.

In questo gioco saremo al comando di una navicella spaziale accompagnata da un "drone" che ci aiutera' in vari momenti del gioco. Nel gioco semplici forme geometriche rappresenteranno astronavi e creature dello spazio, ognuna con le proprie caratteristiche, se ne possono vedere gia' alcune in copertina.

Compito della nostra astronave e' resistere all'incessante ondata di nemici in campi di gioco dalle forme sempre piu' diverse e accattivanti raccogliendo quante piu' geom possibili (la moneta locale) e raggiungendo il punteggio piu' alto e di conseguenza aggiudicarsi le medaglie al valore.
Nel gioco e' possibile acquistare vari pianeti con le geom ottenute nei vari livelli, ogni pianeta a sua volta contiene un numero cospicuo di piccole galassie in cui giocare, ognuna con le proprie caratteristiche proprio come i nemici.

Il gioco anche se puo' sembrare ripetitivo e' capace di tenere incollati alla console per ore e ore senza nemmeno accorgersene, piu' si va avanti e piu' l'azione diventa frenetica. La colonna sonora e i suoni di gioco sono molto orecchiabili e tengono assai compagnia durante l'avventura.

Il gioco e' disponibile per Nintendo DS e Wii, il suo prezzo e' abbastanza contenuto, si parla di non piu' di 20 euro. Io l'ho acquistato usato da gamestop per 8 euro e devo dire che ne e' valsa proprio la pena.
Fra le versioni per le due console, le differenze dovrebbero essere minime, si parla forse di solo qualche effetto grafico off da quanto ho visto su youtube in vari gameplay e del controllo ovviamente.

La versione per DS offre due modalita' di controllo customizzabili dal giocatore su sua volonta', si puo' guidare l'astronave sfruttando lo stilo nel touch screen del DS e vederla muoversi nello schermo superiore (molto scomodo imo...) oppure usare il dpad per il movimento e i tasti XYAB per sparare nelle direzioni cardinali in cui sono posti.

Esistono anche varie versioni non ufficiali del gioco per PC, la piu' famosa e' sicuramente Grid Wars, disponibile per Linux, Mac e Windows. Io personalmente consiglio la versione per DS, sia per la sua qualita', sia per il gameplay nettamente migliore rispetto al clone per PC.

In sostanza consiglio questo gioco a tutti gli amanti dei retro games, degli sparatutto o anche ai semplici curiosi che vogliano passare molte giornate di svago.

Neon Race


Il titolo dice tutto, una corsa sfrenata in vecchio stile! Il gioco ricorda molto e non poco il mitico Rad Racer per Nintendo nes e la sua modalita' extra in stereoscopia.
Uno spettacolo per gli occhi credetemi! Lo trovate qui!


Game developers resources

Sviluppare videogiochi non e' cosi' difficile come puo' sembrare, si possono usare tool pratici anche se un po' vincolanti detti "click tool" quali Game Maker o The Games Factory, oppure per chi ha gia' qualche rudimento di programmazione l'ottimo Game Editor che ci danno una base gia' pronta su cui lavorare.

Per chi volesse farne proprio a meno, puo' sempre scrivere direttamente il suo gioco da zero, realizzare l'intero programma dall'inizio alla fine con l'ausilio di librerie quali SDL, Allegro o XNA di Microsoft. Utilizzare questo metodo al posto di quelli prima citati non vuol dire farsi volutamente del male, risulta essere un ottimo esercizio didattico e ci dara' la possibilita' di non essere vincolati a limiti del programma o di piattaforma (Escluso per XNA che e' disponibile solo per sistemi Windows). E' anche possibile utilizzare piattaforme indipendenti dal sistema operativo, come Flash (Flex) o Java che possono vantare un loro gestore grafico e una compatibilita' pressoche' universale.

In supporto a programmi o librerie, in giro per il web possiamo trovare una miriade di risorse come l'italiano Game Programming Resource Faciity, che fra le sue pagine virtuali tratta argomenti relativi ai click tool e le librerie piu' utilizzate dai game programmers con tutorial e articoli pratici.
In lingua inglese ci sono community storiche come Gamedev, Gamasutra oppure la piu' piccola e forse meno conosciuta FreeGameDev. Quest'ultima e' una delle mie preferite, una piccola comunity di sviluppatori veramente graziosa, la gente che vi ci ho trovato e' stata molto cordiale e professionale.

Tuttavia per cominciare, nel bagaglio culturale di un game programmer devono esserci nozioni basiche di matematica e trigonometria, programmazione e volendo anche grafica. Ovviamente grazie ai click tool molte di queste cose possono essere lasciate al caso dato che provvederanno loro il piu' delle volte a gestire il tutto.

Giochi piu' complessi possono richiedere conoscenze piu' specifiche della materia e non parlo solo della matematica o della programmazione, concetti propri della programmazione dei videogiochi come collisioni, scrolling, fisica etc... Per fortuna molti esempi pratici su come gestire questi particolari aspetti nei nostri giochi li si possono trovare su molti siti o blog come quelli gia' citati oppure come GPwiki e LoserJuegos, ricchi di esempi e tutorial per ogni livello o preparazione e articoli teorici, anche se l'ultimo dei due peccato sia in spagnolo.
Per quelli gia' piu' afferrati in materia di programmazione e affini ci sono Coke & Code, Game Programming Snippets in genere piu' orientati verso linguaggi quali Java.

Io personalmente consiglio di cominciare a realizzare giochi partendo dalla scrittura di codice, volendo anche con tool quali Game Maker o Game Editor per poter avere una base semplice e intuitiva da cui partire per chi ha meno esperienza in programmazione.
Per chi ha gia' quache rudimento di programmazione, magari in C, con piccole nozioni base e' decisamente consigliato il sito SDLGamer, passo passo e con esempi pratici correlati di immagini spiega i concetti della programmazione di videogiochi utilizzando le librerie SDL. Una volta appresi i concetti base si puo' passare a quelli piu' specifici di un gioco come spiegano i tutorial di Aaron Cox e di Sol. Tutti e due i siti vi accompagneranno passo passo con esempi pratici alla realizzazione di un semplice e completo gioco coprendo vari aspetti della programmazione di esso. Le nozioni che si apprendono da questi tutorial sono facilmente spendibili sui svariati linguaggi programmazione e alle volte nei vari click tool con i giusti accorgimenti.

Altri tutorial molto validi li si possono trovare sul sito di Lazy Foo molto conosciuti e apprezzati, e sui siti SDL Tutorials e Ubuntu-gamedev wiki. Altrettanti tutorial molto validi o esempi di giochi completi si trovano su svariati siti di game programmer amatoriali, come questo blog oppure il sito Pix3lworkshop (del sottoscritto u.u) .

Anche se il C++ e le SDL siano predonimanti nei tutorial non si preclude il fatto che i giochi possano essere realizzati in altri linguaggi o librerie, quali C (come i giochi presenti sul mio sito) o QBasic come si fa nella piccola community di Pete, persino in Java seguendo i tutorial di zetcode.
Utilizzare altri linguaggi o librerie quali Allegro o XNA richiede solo al programmatore di comprendere le logiche base di funzionamento di gestione della grafica, input etc...

Tutto il resto viene con la pratica e tanto gioco!

Super Mario Bros. X

Super Mario Bros. X e' l'ennesimo fan game di Mario che si possa trovare in giro per il web, questo pero' ha una marcia in piu' rispetto a tanti altri. Immaginate una versione per pc di New Super Mario Bros per la Wii con grafica retro rippata da Super Mario All Stars, includendo tutti i classici power up, quelli nuovi come anche la nuova modalita' di gioco presentata dal titolo per Wii. Tutto questo e' Super Mario Bros. X.

Il gioco presenta una modalita' multiplayer, lo schermo si divide in sezioni automaticamente nel caso uno o piu' giocatori scelgano direzioni diverse, sono presenti i classici powerup della versione Wii come il fiore del ghiaccio e tanti altri simpatici oggetti inventati dalle piu' svariate utilita'.

Nel gioco e' presente anche Link ripescato da Zelda 2 come anche alcuni nemici dello stesso titolo, i personaggi oltre a vantare i loro classici movimenti e attitudini possono vantare l'utilizzo di ogni tipo di power up. Un toad potra' avere i poteri del procione toccando la foglia come uno qualunque dei fratelli mario. E' presente anche un editor di livelli in tempo reale, e' possibile editare i livelli di gioco durante una partita.

Linux game master

Da un po' di tempo a questa parte, non e' raro trovare in giro per gli svariati negozi di videogiochi online o di prodotti tecnologici, prodotti come questo.

Riproduzioni fedeli dei piu' famosi gamepad delle console dei tempi d'oro con cavo usb per poter essere usati su un pc. Io posseggo un pad nes della retrolink, come quello che potete vedere nella foto.

Ricordo quando ero bambino e giocavo con il nes attaccato alla tv, nella stanza semi buia illuminata solo da un grosso televisore, e quegli sgraziati suoni che facevano da colonna sonora nei vari giochi, ah che tempi :] Questo pad mi ha fatto tornare esattamente indietro a quegli anni, stesse sensazioni ed emozioni. Chi e' cresciuto con un nintendo nes potra' capire di cosa parlo.

Il cavo e' abbastanza lungo da poter giocare ad una distanza decente dal monitor e al tatto e' in tutto e per tutto uguale ad un pad originale del nes. Ho usato questo pad con successo su sistemi GNU\Linux (Testato su Debian 5 e derivate di Ubuntu), quindi anche per chi come me usa il pinguino nessun problema riguardo la utilizzabilita'.

Linux e gli emulatori

Dopo una semplice configurazione ho potuto nuovamente apprezzare le vecchie glorie della mia infanzia, dapprima con l'emulatore Tuxnes ed in seguito con l'emulatore Fceux Ultra. Mi ha dato anche tante soddisfazioni con il mitico Super Tux, nessun problema di configurazione o utilizzo.

I moduli del kernel richiesti per il gamepad fino a prova contraria sono solo quelli necessari a gestire le periferiche usb:

$ lsmod | grep usb
usbhid 0
usbcore 4 usbhid,ehci_hcd,uhci_hcd

Il programma "lsusb" se vi restituisce un output simile a questo vuol dire che il tutto funziona correttamente:
Bus 002 Device 002: ID 0079:0011 DragonRise Inc.

Qui di seguito trovate la numerazione dei pulsanti e degli assi forniti dall'utility Linux "jstest" necessari per la configurazione del pad nelle varie applicazioni:

Tasto A 1 - Tasto B 2 - Asse X 3 - Asse Y 4 - Tasto Select 8 - Tasto Start 9

Se utilizzate l'emualtore Tuxnes e magari la comoda gui GTuxnes, questa e' la sequenza da inserire nell'apposito campo "Remap Joystick" presente nella scheda "Input": 1:B1,B2,B9,B8,A3,A4,A4,A3

Nel caso utilizziate l'emulatore Fceux, potete utilizzare l'apposita procedura guidata "fceux -inputcfg gamepad0 romfile.nes" oppure agire manualmente nel file /home/$user/.fceux/fceux.cfg modificando i valori delle chiavi SDL.Input.GamePad.0 in modo analogo a quanto segue:

SDL.Input.GamePad.0A = 1
SDL.Input.GamePad.0B = 2
SDL.Input.GamePad.0DeviceNum = 0
SDL.Input.GamePad.0Down = 32772
SDL.Input.GamePad.0Left = 49155
SDL.Input.GamePad.0Right = 32771
SDL.Input.GamePad.0Select = 8
SDL.Input.GamePad.0Start = 9
SDL.Input.GamePad.0TurboA = 100
SDL.Input.GamePad.0TurboB = 115
SDL.Input.GamePad.0Up = 49156

I valori sono stati assegnati dalla procedura automatica di fceux.

Fix & Repair

Questo fantastico pad non ha solo punti di forza, sfortunatamente. Il cavo usb sembra essere di scarsa qualita', avvolgendolo attorno alla scocca del pad come si fa di solito con i gamepad e sopratutto come facevo da bambino con il nes, il pad ha cominciato a presentare mal funzionamenti. Aprendo la scocca del pad ho potuto trovare il difetto nel cavo, ho semplicemente appoggiato i terminali di un led sui punti di saldatura dei cavi rosso e nero per controllarne l'effettiva trasmisione di tensione. Il led da prima si e' illuminato molto debolmente, poi per niente piu'.

Per chi come me si e' ritrovato o potrebbe ritrovarsi in questa situazione, si puo' ovviare al problema semplicemente sostituendo il cavo usb difettoso con uno nuovo, anche per chi come me non ha grosse esperienze di saldatura o mezzi idonei alla cosa.
Il modo piu' semplice di procedere e' quello di lasciare uno o due centimetri dai cavi all'interno della scocca, cosi' non dobbiamo preoccuparci si saldarli nuovamente sul circuito stampato. Si spelli una piccola porzione di guaina attorno all'estremita' tagliata dei cavi e si faccia altrettanto con il cavo che si vuole usare come sostituto e infinine si uniscano per colore le ciocche di rame scoperto oppurtantamente attorcigliate come nella foto qui d'esempio.

Una volta terminato il tutto, potrete sigillare l'unione con della colla calda o opportuno nastro isolante da elettricista, l'importante e' tenere le parti di rame scoperto di cavi di diverso colore lontane l'una dall'altra per evitare corto circuiti.

Conclusioni

Devo dire che ho questo pad da circa un annetto, prima di prenderlo era un prodotto di nicchia, costoso e per pochi appassionati. Ora e' impressionante con quanta facilita' si possa trovare in giro e di vari prezzi e marche sui vari negozi online. Nonostante il problema di cui ho parlato con il cavetto usb e un po' di incazzatura per configurarlo correttamente in ambiente Linux, posso ritenermi piu' che soddisfatto del prodotto. Badate bene comunque e' pur sempre e solo un semplice e comune gamepad come tanti altri in una scocca dalle forme diverse e nulla piu'.

Sento gia' odor d'arrosto!

31 dicembre, pomeriggio, nell'attesa del capodanno in compagnia della mia ragazza ho finito Spyro the dragon in appena 24 ore di gioco su piu' giorni con una percentuale del 120% di completezza.
Si lo so bene, saranno passati piu' di 10 anni dal debutto del draghetto sulla playstation, ma dovevo togliermi questo sfizio! Il gioco e' stato molto affascinante comparato alle esperienze 3D a cui ci hanno abituato nel corso di questi anni, la grafica regge ancora molto bene per essere un gioco retro anche se su alcune cose tipo i nemici ci si poteva impegnare un po' di piu' nel design...
L'avventura e' adatta a tutti a mio parere, ne troppo difficile ne troppo facile. I giocatori meno afferrati potranno comunque gioire a pieno del titolo giocandolo fino in fondo senza annoiarsi, stessa cosa per i piu' incalliti che potranno cimentarsi in roccambolesche acrobazie e voli alla ricerca delle gemme perdute!!! (No no, non c'entra Indiana Jones u.u)
Il gioco perde molto di qualita' nella versione italiana, i dialoghi fanno a dir poco pena (cit. nel titolo di uno rimastomi impresso...) come le voci dei doppiatori, privi di emozioni e utilita'. Un'altra cosa che non ho gradito molto e' la rigidita' dei controlli, girarsi e cambiare la visuale di inquadratura diventava molto stressante a lungo andare, specie quando l'incazzatura per un passaggio o livello non superato si faceva sentire (se capite cosa intendo).
Il gioco e' ricco di passaggi segreti, uno tra tanti nasconde l'ultimo livello, trovato di fortuna giocando a caso qua e la per i vari mondi... Non vi dico dove :P
Questo gioco lo consiglio a tutti, amanti del genere fantasy, cartoonesco o semplicemente avventura in generale, sono sicuro che lasciera' soddisfatto chiunque, anche i palati piu' difficili.

Game on!

Questo e' il primo post del blog, inaugura la nascita di un nuovo punto di ritrovo per retro gamers e game programmers e hobbysti indipendenti come il sottoscritto.
Sulle pagine di questo blog voglio condividere con voi lettori le mie avventure e disavventure nel mondo dei videogiochi, condividere la passione per il game programming e desing e tanto altro.

Enjoy it!