Halloween: arrivano gli zombi di Contagion


Quando si avvicina la festa di Ognissanti riprendo in mano libri, musiche e videogiochi che mi permettano di trovare una particolare atmosfera intelettuale d’incubo e terrore intimo. Tutto ciò è favorito dal fatto che l’autunno e l’inverno portano con sé giornate sempre più buie. Un romanzo sui lupi mannari è più inquietante se viene letto di sera tardi nei giorni di tramontana con luna piena. Quand’ero ragazzo, in questo periodo, e per tutto il mese di dicembre, leggevo e rileggevo Carmilla di Le Fanu, il celeberrimo Dracula di Bram Stocker, Doctor Jeckil e Mister Hide e via discorrendo. Infatti nei primi anni Novanta il mio C64 offriva poco per lo svago, dovevo per forza cercare la paura nei capolavori letterari.  Ma con la potenza di calcolo dei computer di oggi e le meraviglie della Rete, non resisto più, al libro  preferisco il personaggio di un gioco “cooperativo” che ha per oggetto la figura dello zombi.

Zombi ad Haiti

Zombi ad Haiti (immagine di Wikipedia)

Chi ha fatto Contagion non sta debuttando con qualcosa di unico in quanto i giochi di cooperazione e sopravvivenza si vedono a iosa ormai: Left 4 dead 2, Killing floor, 7 days to die, ecc. hanno in comune un’orrenda invasione di morti viventi, spesso causata da esperimenti scientifici sull’uomo oppure mutazioni genetiche di origine sconosciuta. Ecco per parafrasare il discorso, Contagion è l’evoluzione di Zombie Panic! Source, una modifica di Half-Life 2 realizzata dalla software house Monochrome. Ma allora cosa contraddistingue un gioco dall’altro? Le regole.

Contagion offre tre mappe e tre partite differenti delle quali Extraction è la più interessante. In questo tipo di gioco, alcuni civili sopravvissuti (PNG controllati dal computer) sono nascosti in diversi edifici, occorre raggiungerli e aspettare l’ordine di evacuazione. Gli zombi che ruolo hanno? Devono cercare di contagiare gli uomini prima che fuggano. La sorte delle loro vittime è terribile: la trasformazione in non-morto e chi subisce questo destino deve a sua volta fare la caccia agli ex-compagni. Il movimento goffo e lento è tipico di un morto vivente, ma in Contagion i mostri hanno anche la vista e l’olfatto potenziati che permettono di rintracciare e seguire le scie di sangue dei sopravvissuti.

Le altre due modalità di gioco sono Hounted ed Escape: Hounted è un PVP con zombi controllati dalla IA che disturbano il normale combattimento fra i giocatori; l’obiettivo di Escape è, come dice il nome, una fuga da un edificio superando diversi ostacoli e risolvendo situazioni di pericolo: un incendio, una porta bloccata, ecc. Lo smartphone dà le indicazioni sulla via da seguire.

Contagion: gioco di sopravvivenza

Contagion: gioco di sopravvivenza

Il gioco è attualmente distribuito solo per i sistemi Windows con accesso anticipato su Steam, ma il programma client per Linux era tra gli obiettivi da raggiungere con ottantamila dollari della campagna crowd-funding; questo proposito è stato confermato dagli sviluppatori di Contagion. Kickstarter ha dunque spianato la strada a numerose software house cosiddette indie che hanno potuto produrre in quantità e continuità giochi più o meno simili fra loro per genere. Il survival-horror continua ad essere tra quelli più apprezzati, a giudicare dalle raccolte fondi terminate con enorme successo. Per la realizzazione di Contagion i fan hanno donato a Monochrome quasi novantamila dollari. Nonostante queste cifre, è difficile dare un’indicazione su quale sia il miglior video game co-op, non essendoci in molti casi una storia da seguire o scoprire. Inoltre, c’è poca originalità. Spesso è solo una questione di gusti personali. L’orrore però è sempre assicurato.

Fonti:

  1. http://www.contagion-game.com/
  2. http://www.kickstarter.com/projects/monochromellc/contagion

Monochroma celebra il gioco muto


È dentro noi un fanciullino che non solo ha brividi, come credeva Cebes Tebano che primo in sé lo scoperse, ma lagrime ancora e tripudi suoi”. Pascoli, Il fanciullino.

Monochroma ha una sua suggestiva potenza nell’evocare i ricordi di quando eravamo bambini e che conserviamo nella mente: le azioni che compiamo oggi nei platform è ciò che di solito facevamo da piccoli nel parco gioco. Io all’età di otto anni ero già abbastanza alto per arrampicarmi come uno scoiattolo sull’albero e saziarmi a volontà con i suoi frutti, sebbene non abbia mai avuto l’incoscienza di salire sul tetto di casa e saltare da una gronda all’altra con disinvoltura come il bambino protagonista di questo gioco. Ma rispetto al mio piccolo giardino,  Monochroma è disseminata di puzzle e tentazioni per qualsiasi bimbo sveglio, difficile resistergli.

Monochroma cinematic platform

Monochroma cinematic platform

Facciamo finta di avere sei anni e di essere dotati di una forza superiore alla norma; è una notte di mezza estate del 1950, viviamo in una società distopica, quindi le cose vanno nel peggiore dei modi, e infatti abbiamo l’ardire di uscire di casa per giocare nell’oscurità con nostro fratello più piccolo mentre minaccia tempesta e i nostri genitori ignorano dove siamo. La cosa che mi sorprende di più è il panorama: passeggiando con il compagno di marachelle, l’ambiente si fà più industrializzato ma al tempo stesso inquietante, l’esatto contrario di ciò che ci insegna la fiaba di Cappuccetto rosso con la sua contrapposizione fra il villaggio e il bosco, fra la sicurezza del nido familiare e il rischio nascosto lungo un sentiero agreste. Il rosso è l’unica tonalità che si distingue sullo sfondo bianco e nero, ma è un messaggio di pericolo e morte, e infatti sovente risalta su persone e cose la cui presenza ha ragion d’essere solo per sottomettere la Natura. Questo puzzle cinematografico racconta appunto la storia di una compagnia che fa ricerca nella robotica, servendosi anche di metodi poco ortodossi e dell’alchimia. Avanzando all’interno scopriremo qualcosa sul conto di questa società che lascerà increduli gli abitanti del villaggio vicino. Due bimbi contro una corporation, un azzardo persino in gioco. Il nostro fratello più piccolo è per giunta indifeso e ha paura del buio. Influenzerà molto ciò che faremo.

Questo gioco a similitudine di Limbo non usa testo o voci fuori campo per narrare i fatti, le sole immagini sono eloquentissime. Nemmeno Orçun Nisli, programmatore di Monochroma, nasconde dove ha preso l’ispirazione: un paesaggio in bianco e nero, una coppia di bambini protagonisti, il loro ritorno a casa; sono elementi che richiamano alla mente il platform della danese Playdead. D’altronde bisognerebbe ammettere un furto o un plagio, ma in questo video game si magnifica con i mezzi informatici l’arte vera del media muto. Be’ quasi, ci sono sei ore di enigmi che passeremo ascoltando un’ottima colonna musica ed effetti. Un’ultima osservazione per concludere: il gioco è stato fatto quest’anno in Turchia, dalla software house Nowhere Studios che ha sede a Istanbul; nel demo di Monochroma c’è un motivo abbastanza ricorrente, quello degli alberi abbattuti, che mi ha ricordato una recente battaglia ecologista in difesa del Parco Gezi.

Fonti:

  1. Monochroma home page
  2. La raccolta fondi su Kickstarter

The Fall: tu sei la IA


Quando penso ai robot ho in mente subito un’mmagine, realizzata da Susan Blackmore (un’autorità della scienza memetica), che mi preoccupa: in un disegno è schematizzata la storia della civiltà che non ci vede però protagonisti bensì prodotti! Nella scala evolutiva, ai geni sono seguiti i memi, al terzo livello compaiono i memi tecnologici o temi, e poi c’è un inquietante punto interrogativo, cosa viene dopo? Ho il presentimento che la società, con il suo progresso, stia predisponendo tutto il necessario affinché l’automazione possa prendere il controllo totale del pianeta: reti di comunicazione satellitari e cellulari velocissime, fonti di energia pulite e rinnovabili, nano tecnologie, stampanti 3D, manca solo lei… la I.A. La replicazione si perfeziona! È una questione di tempo.

L'evoluzione della cultura

L’evoluzione della cultura

Se la cività artificiale dovesse sostituire quella umana,  ci sarà un periodo di transizione dove uomo e IA potranno magari convivere. Qui mi permetto di collocare la storia di The Fall. C’è un’intelligenza artificiale che rispetta le tre leggi della robotica di Asimov ed è asservita all’uomo, d’altra parte l’uomo stesso è già andato ben oltre il pacemaker e il chip sottopelle, si è fatto impiantare i Google glass ed è in procinto di sostituire la materia grigia con qualcosa di più resistente… Se la civiltà artificiale dovesse sostituire quella umana, potremmo almeno oggi provare a simulare con un gioco come si comporterebbe la IA nei nostri confronti.

Giochiamo nei panni di ARID, un computer montato su una tuta da combattimento corazzata e veniamo “attivati” quando il pilota umano resta gravemente ferito in guerra. Siamo programmati per portarlo in salvo, ma attenzione non è scontato quello che faremo. Per esempio che decisione prenderemmo se dovessimo affrontare esseri umani ostili? Non possiamo violare la prima legge della robotica che impone ad ogni robot di non arrecare alcun danno a un essere umano.

Dobbiamo scendere in un mondo immerso nell’oscurità, ma se non siamo pronti all’avventura e all’azione, è meglio lasciare perdere. Sebbene gli scontri con altre unità combattenti (sentinelle o robot, ecc.) siano inevitabili,  la vera peculiarità di The Fall è un’altra: risolvere gli enigmi e raccogliere gli oggetti. Noi non abbiamo infatti un controllo completo sulle funzioni della tuta, dovremo cercare un modo per attivarle altrimenti da là sotto non si esce! E il pilota intanto muore… C’è almeno una novità rispetto ai giochi d’avventura e ai platform: nessuno ci impone di camminare zigzagando per lo schermo alla ricerca di qualcosa che possa liberarci da un impiccio perché sull’arma è stata montata una torcia, nemmeno a dirlo, intelligente e in grado di rilevare gli oggetti con i quali possiamo interagire.

Dicono che The Fall abbia preso un po’ da Halo, un po’ da Monkey Island, dell’altro da Metroid, e riproposto il tutto in un platform 2D a scorrimento orizzontale. Io dico, bene! Questo è un pregio, vuol dire che troveremo solo il meglio di quei giochi; forse lo sviluppatore avrebbe dovuto reinventare da zero la stessa ruota? Alla fine il filone della sci-fi permette di uscire poco dagli schemi. Per esempio a me Metroid ricorda Alien! In Halo, Master Chief carica la IA nell’armatura e con essa cerca una capsula di salvataggio, ma in The Fall la situazione si capovolge, il protagonista è la IA e il pilota è privo di sensi e non scappa da alieni inferociti.

Quando mostro agli amici videogiochi di questo tipo, pensano che dietro ci sia chissà che gruppo, mi dicono cinque, dieci programmatori, un paio di artisti e un compositore. Manco farlo a posta, c’è una sola persona, John Warner ex Relics. E non ci credono! Ma tutto ciò è possibilissimo con l’engine Unity 3D: supponiamo tu sia sviluppatore con una precedente esperienza in una software house; c’è l’engine, ci sono le competenze, c’è soprattutto un’idea, metti insieme queste cose e apri una pagina su un sito di Crowd funding per pagare i debiti contratti o per acquistare ciò che manca; fai shopping nello store di Unity e il gioco è fatto! Straordinario ma fattibile. The Fall non solo ha superato con successo la campagna per la raccolta dei fondi di Kickstarter, ma è stato votato dagli utenti Steam di Greenlights per cui potremo giocare a questo gioco con Linux molto presto.

Fonti:

  1. The Fall: dark, story driven exploration in an alien world
  2. http://steamcommunity.com/sharedfiles/filedetails/?id=177232316

Un IDE per Enemy Territory


Nell’articolo “Un IDE per avventure testuali in Linux” avevo mostrato la procedura per abilitare Inform7 in Eclipse. Oggi presento un metodo simile per fare modifiche al codice sorgente di Wolfenstein: Enemy Territory che Id Software mise online con la licenza GPL v3 un paio di anni fa. Sorvolo sui vari progetti che sono stati iniziati in Rete con il codice di W:E.T. perché sono davvero tanti, magari tornerò su questo argomento in futuro, alcuni sono molto interessanti. L’articolo si conclude con un esempio pratico, tratto da una serie di tutorial dedicati alla programmazione di Quake 3: chi è già ben informato sulla struttura interna dell’Id Tech 3, troverà delle similitudini fra i codici dei due giochi. La modifica è elementare, consiste nel ridurre la velocità del missile sparato con il panzerfaust di modo che si possa superarlo a piedi e vederlo viaggiare nell’aria.

Ho scelto Eclipse per due ragioni: il codice sorgente originale del gioco è stato configurato con SCons, uno strumento di sviluppo che automatizza l’assemblaggio dei programmi; esiste un plugin che si interfaccia fra Eclipse e SCons.

Installazione di Sconsolidator per Eclipse

Installazione di Sconsolidator per Eclipse

In questo esercizio è fondamentale un sistema Linux configurato come ambiente di sviluppo, quindi avrete bisogno del compilatore gcc e delle librerie di supporto. In Ubuntu questo ambiente viene messo a punto con un comando del tipo apt-get build-essential scons. Non cambia molto con le altre distribuzioni, dovrete consultare la guida di riferimento. Al mio primo tentativo sono inciampato in una difficoltà: siccome lo standard FHS non prescrive una posizione per Xorg all’interno della gerarchia del file system, può capitare che l’assembler non trovi le librerie, come è successo a me. Una volta era prassi installare X Window System in /usr/X11R6, ma con l’adozione di Xorg questa directory ha perso importanza. Per esempio a Sun si continua a installare Xorg in /usr/X11; nella distribuzione Ubuntu lo si trova invece in /usr/lib; a Id Software usavano /usr/X11R6. Nella mia distribuzione Xorg non si trova in /usr/X11R6, ho dovuto porvi rimedio correggendo il contenuto di un file del codice sorgente di W:ET, altrimenti la compilazione sarebbe terminata con errori. Al momento opportuno spiegherò anche come fare questa correzione.

Installazione scons con Synaptic

Installazione scons con Synaptic

L’elenco degli strumenti indispensabili è il seguente:

  • Il codice sorgente di Enemy Territory. In Rete si trovano diversi pacchetti, ma la procedura descritta qui è basata sulla versione distribuita da Splash Damage che è già predisposta per SCons.

  • SCons: sostituisce make e l’infrastruttura GNU autoconf. È il nocciolo del nostro sistema di compilazione di W:ET.

  • Strumenti di sviluppo: gcc, nasm e librerie. Le distribuzioni hanno il “pregio” di separare i file di libreria da quelli d’intestazione (header) del C, ma entrambi sono necessari per la compilazione! Quindi un pacchetto che fa parte di Xorg potrebbe risultare installato ma senza gli header. W:ET è un gioco per ambiente grafico e fa uso di numerose librerie di Xorg. L’unico modo per scoprire cosa manca è procedere con la compilazione per tentativi e procurarvi ciò che è indispensabile con il gestore dei pacchetti.

  • Eclipse è uno dei migliori IDE disponibili in Linux. Supporta diversi linguaggi: Java, C/C++, UML, Javascript, ecc. e altri se ne possono aggiungere con i plugin. Il mio consiglio è scaricare il pacchetto di Eclipse per sviluppatori C/C++ e mantenerlo separato dal resto dell’infrastruttura (Java, ecc.), per esempio nella directory /opt/eclipse-cc. Installate Eclipse con il comando install -v -m755 -d /opt/eclipse-cc && tar xvfz eclipse-cpp-kepler-SR1-linux-gtk.tar.gz. In alternativa, potete cercare l’IDE con il gestore dei pacchetti della vostra distribuzione Linux.

  • Sconsolidator è il plugin per Eclipse che interpone fra SCons e l’IDE una interfaccia utente e un wizard per gestire i progetti C/C++. Senza questo strumento, dovremmo svolgere un lavoro dispendioso.

  • Java: Eclipse è basato su Java e il plugin Sconsolidator è distribuito con archivi jar. Dovrete installare un JDK, per esempio Oracle Java 7; gli utenti di Ubuntu o di altre distro “debian like” daranno per esempio il comando sudo apt-get install oracle-java7-installer ( vd. Java 7 o 6 in Ubuntu 13.04 – 12.10 – 12.04).

Sconsolidator: importazione di un progetto

Sconsolidator: importazione di un progetto

L’installazione di Sconsolidator in Eclipse è una procedura quasi automatica, è sufficiente selezionare “Install new software” presente nel menu Help; poi nella finestra di dialogo cliccare il pulsante “Add” e specificare nel campo “location” l’indirizzo web del plugin (http://www.sconsolidator.com/update). Se la ricerca va a buon fine, Eclipse troverà due componenti: selezionatele entrambe e confermate l’installazione. Al termine dell’operazione dovrete riavviare Eclipse. Controllate nel menu delle preferenze di Eclipse, alla voce SCons, il percorso completo dell’eseguibile di SCons. Potete verificare la posizione con il comando which scons.

A questo punto scaricate il sorgente di ET dal sito di Splash Damage, è un archivio zip, decomprimetelo nella directory Workspace di Eclipse, quella che avete scelto all’avvio dell’IDE, per esempio con il comando unzip ET-GPL.zip.  Bisogna importare il codice di W:ET in Eclipse selezionando la voce “Import” del menu File, cliccare su “New SCons project…”: poi occorre specificare la posizione del codice sorgente del gioco, è la directory src creata con unzip. Immettete un nome a piacere per il vostro progetto, se non vi viene nulla in mente usate pure MY-et-gpl.

La modifica al file SConscript.core

La modifica al file SConscript.core

Tutto il codice deve essere rianalizzato da SCons: cliccate con il tasto destro del mouse (oppure premete ALT+ENTER) sul nome del progetto nel Project Manager di Eclipse, e scegliete l’opzione “Build All” nel menu “Build Configurations”. Poi procedete con la compilazione. Questo è il momento per scoprire quale software manca nel sistema Linux. Io per esempio ho dovuto installare il pacchetto libxxf86dga-dev. Ciò non è comunque bastato, infatti al secondo tentativo la compilazione è terminata con il seguente messaggio di errore:

scons: *** [build/debug/core/et] Source `/usr/X11R6/lib/libXxf86dga.a' not found,
 needed by target `build/debug/core/et'.

libXxf86dga-dev è una libreria statica che normalmente in un sistema Ubuntu si trova in /usr/lib/i386-gnu-linux, ma SCons la cerca da un’altra parte. Ho dovuto correggere questa incongruenza aprendo nell’editor di Eclipse il file SConscript.core (vd. immagine precedente): la stringa staticx11_libs conteneva /usr/X11R6/lib che non andava bene.

Modifica al file g_missile.c

Modifica al file g_missile.c

La modifica del gioco è molto semplice e interessa il file g_missile.c nella directory game. La funzione fire_rocket è predisposta per creare il proiettile del panzerfaust, ne imposta anche le caratteristiche. Cercatela all’interno del file con la funzione “find” di Eclipse. Nel suo blocco di codice c’è una chiamata a un’altra funzione, la VectorScale, dovete cambiare il valore del suo secondo argomento da 2500 a 100. Più si è bassi di valore e più il proiettile rallenta. Potete verificare cosa succede con 0.

VectorScale( dir,100,bolt->s.pos.trDelta );  /* from 2500 to 100 */

Per testare i cambiamenti al codice di W:ET vi occorre non solo un’installazione completa del gioco, ma anche risorse per eseguire in locale un server. C’è un ottimo tutorial scritto in inglese che ho seguito per mettere a punto il sistema client/server sul mio computer, si intitola “Setting Up etded on Linux”.

Wolfenstein: Enemy Territory è stato per una decade un gioco seguito da un discreto numero di fan, venivano organizzati campionati europei e internazionali, i clan erano competitivi e c’erano ottimi “shooter”. Ma a poco è servito mettere il codice sorgente online, lo sviluppo di molte mod è stato interrotto e i giocatori hanno lasciato le arene per altri lidi. Tutto questo prima o poi doveva accadere. L’engine però è open source, a disposizione di chi volesse realizzare una modifica divertente e originale.

Il missile del panzerfaust che ho sparato dalla baracca

Il missile del panzerfaust che ho sparato dalla baracca

Fonti:

  1. Tutorial2
  2. How to install Oracle Java 7
  3. Sconsolidator
  4. A short introduction to the current status quo of this Wolfenstein: Enemy Territory thing

Quale driver scegliere per Painkiller HD


Painkiller HD è tra i video game di prestigio per Linux che sono stati aggiunti alla libreria di Steam. Il port era stato annunciato a giugno di quest’anno, mentre la procedura di beta testing è cominciata la settimana scorsa, diretta dallo sviluppatore Leszek Godlewski, dipendente della software house Farm 51. Le comunicazioni fra i programmatori e gli utenti che partecipano alla beta avvengono nel forum del gioco ospitato sul sito della comunità di Steam. Mi è parso interessante il messaggio di Godlewski scritto ieri a proposito delle schede video: la sua opinione è che il driver open source è il più adatto per giocare ai giochi creati con Unreal Ungine 3, a meno di avere una scheda Nvidia, in questo caso suggerisce il driver del fabbricante.

Nvidia o AMD?

Nvidia o AMD?

Nel mondo di Linux ci sono  due attori coinvolti nel processo di sviluppo di un driver per le tre principali marche di schede video: il fabbricante e il FOSS. Il programma di controllo della scheda grafica è fornito in formato binario oppure a “sorgente aperto”. L’utente di Linux con una scheda video AMD può optare fra il fglrx, distribuito come parte del pacchetto Catalyst dal fabbricante, e il radeon che è mantenuto dalla comunità open source (FOSS). Michael Larabel ha dimostrato con delle prove comparative che le prestazioni nei giochi dei due driver sono quasi simili. Senza la documentazione tecnica che AMD mise a disposizione della comunità del free software, il radeon non avrebbe mai raggiunto i livelli di oggi; in certi contesti ha potuto dimostrarsi persino superiore al fglrx. Non mi sorprende l’opinione di Godlewski, egli ha visto “schiantarsi” il driver proprietario durante le prove di PKHD.

Per quanto riguarda le schede GeForce, duole osservare che Nvidia non partecipa più attivamente allo svilluppo del driver open source nv per i modelli di schede video Fermi e Kepler, né ha mai collaborato al potenziamento di nouveau, che è l’equivalente FOSS realizzato con il reverse engineering del driver nvidia a codice binario. Il gap fra questi due software si manifesta nel campo delle applicazioni 3D, qui il Nouveau ha prestazioni insoddisfacenti ed è pertanto da scartare, sia che si tratti di giocare a Painkiller sia a Guns of Icarus con una GeForce Kepler. L’ultimo attore è Intel: sebbene le schede video di questa marca abbiano scarso valore per il giocatore, il driver viene fornito con il codice sorgente e fa il proprio dovere.

Il mio consiglio non è molto diverso da quello di Godlewski, usate il driver fornito da Nvidia se avete naturalmente una Geforce, prendete la versione open source per controllare la vostra AMD Radeon. Se avete una Intel ma potete permettervi l’acquisto di una scheda video di ultima generazione, be’ puntate sul modello GeForce. Nvidia è sempre stato ritenuto il driver per eccellenza in Linux, tanto nelle applicazioni grafiche 2D quanto in quelle 3D. La superiorità del radeon sul fglrx presagisce la fine del Catalyst o piuttosto la convergenza fra i due progetti?

Fonti:

  1. Free and open-source graphics device driver
  2. PKHD Linux Beta Released