Archive for the ‘Topos’ Category

Quake Wars, Megatexture, Linux. Alcune considerazioni post-beta

Friday, October 5th, 2007

TTimo dice: “I thread… E’ una di quelle cose per cui la programmazione è assai differente fra Windows e Linux, e anche piccole variazioni di stile possono avere cattive conseguenze

Quake Wars: Enemy Territory è il primo gioco basato sul motore grafico id Tech 4 a usare Megatexture. Questa tecnologia richiede due thread per essere applicata alla scena 3D: il primo si occupa della lettura dei dati dal disco rigido; il secondo traduce i dati a un formato interpretabile dalla GPU.

Megatexture Tecnology è una tecnica che semplifica il procedimento (texture mapping) di applicazione delle texture alle mesh che compongono il terreno di un mondo virtuale 3D. L’idea di fondo è la seguente: invece di usare piccole texture da ripetere su tutta la superficie del terreno, Megatexture ne usa una sola ma estremamente larga (il Mega si riferisce proprio al fatto che ha dimensioni di 32000×32000 pixel); un algoritmo chiamato in questo caso fragment program, si occupa di ricreare la scena (rendering) limitando al minimo l’uso della memoria di sistema e della scheda video, che altrimenti non saprebbero contenerla date le enormi dimensioni.

GtkRadiant SVN

GtkRadiant SVN

Su un sistema a singolo core è importante avere i due thread di Megatexture in esecuzione a un livello di priorità più basso rispetto al thread principale del gioco (che si occupa per esempio di collision detection, antilag, ecc..), perché in caso contrario quest’ultimo si intopperebbe. Partendo da tale presupposto e considerando il fatto che Microsoft Windows usa i Pthread anziché NPTL, come è logico che sia, Timothy Besset doveva elaborare un modo per poter sincronizzare i suddetti compiti anche sotto Linux con NPTL. Ma le chiamate di sistema di Pthread non potevano essere usate nel presente caso specifico; durante lo sviluppo (porting) del client del gioco per Linux sono state adoperate dunque le funzioni getpriority/setpriority. Viene definita da TTimo una soluzione meno pulita rispetto allo schema proposto da Pthread, comunque esse fanno il lavoro richiesto.

NPTL è una libreria per gestire i Posix thread introdotta in Linux a partire dal kernel 2.6. Per scoprirne la presenza e la versione è sufficiente dare il seguente comando dal terminale
getconf GNU_LIBPTHREAD_VERSION

MLB Egypt di Marko

Thursday, February 16th, 2006

Ieri sera sono tornato a giocare su WARHAMMER, un server Jaymod con alcune fantastice modifiche alle skin e ai suoni di Enemy Territory. Ho trovato la mappa MLB Egypt di Marko che secondo me è la piu’ divertente fra le MLB disponibili per Enemy Territory, soprattutto quando viene installata su un server predisposto per ospitare almeno una quarantina di giocatori. Avendo dimensioni enormi, come potevo muovere con facilità i miei primi passi fra cuniculi, dighe e casamatte egiziane? Il primo match lo giocai allora esplorando la zona e cercando di capire gli spostamenti della mia squadra che in quell’occasione era l’Asse. Per tutta la prima parte dell’incontro il tempo di respawn era impostato a venti secondi. Ciò garantiva uno scontro equilibrato fra le forze alleate arroccate nei vari posti di blocco distribuiti lungo il canyon e quelle dell’asse che seguivano il corso del fiume. Loro dovevano contrastare la nostra avanzata, danneggiando il nostro vaporetto, usato durante gli spostamenti da un nodo all’altro. Dopo la conquista di un nodo, il tempo di respawn veniva ripristinato a 15 minuti. Gli alleati sembrano svantaggiati, ma vicino alla diga essi potevano facilmente contenere l’avanzata, grazie al fatto che i comandi di apertura erano installati in una casamatta difficile da raggiungere. Siccome avevamo superato anche questa prova, lo scontro terminava nella piramide centrale: gli alleati avevano l’ultima chance: difendendere a tutti i costi l’oro nascosto nel sarcofago. Noi dovevamo rubarlo e portarlo alla loro caserma principale, situata all’inizio del canyon. Marko ha saputo ben congegnare il gioco con le due componenti azione e tattica, non e’ assolutamente necessario per i giocatori dell’Asse scortare la nave, esiste un tunnel in grado di condurli fino alla tomba, una pista alternativa che conduce all’obiettivo finale. Graficamente la mappa e’ molto semplice, senza entità particolari, pero’ impressionano le novità introdotte nella partita, per esempio la conquista dei nodi ricorda per certi aspetti lo stile di gioco Onslaught di Unreal Tournament 2004, e poi ci sono questi cunicoli, corridoi a formare labirinti senza fine che hanno sempre caratterizzato la natura delle mappe di Marko, e molto divertenti quando ad affrontarsi sono una quarantina di giocatori! :)

mlb_egypt0

mlb_egypt0