Inizio Costruzione d’Interfacce…che linguaggio utilizzo?!

Ecco la risposta:

Perchè utilizzare C# per sviluppare videogiochi?
Posted by Iceman73 – 2007/11/10 15:22
_____________________________________
Chi è appassionato di programmazione di videogiochi sa benissimo che storicamente sono stati utilizzati linguaggi di
programmazione a basso livello: le prime console e home computer ad 8 bit (Atari 2600, Commodore 64) avevano delle
risorse (memoria, cpu, grafica) così limitate che era obbligatorio utilizzare l’assembly per ottenere dei videogiochi decenti.
Con l’avvento della generazione a 16 bit (Commodore Amiga, PC MS-DOS 8086, etc…) si è passati all’utilizzo del
linguaggio C. Per anni questo linguaggio è stato il più utilizzato per via dell’elevata efficienza del codice compilato
prodotto. Negli ultimi anni si è passati al C++ che permette di gestire meglio la complessità delle stutture dati dei giochi
3D. Con l’avvento di Managed DirectX prima e XNA poi, Microsoft sta tentando di imporre l’uso di C#. Tuttora ci sono
moltissimi scettici al riguardo. La principale obiezione che viene mossa a C# è che trattasi di un linguaggio interpretato
da una virtual machine, quindi non si riesce a spremere il 100% dalla CPU. Questa obiezione è lecita, però non tiene
conto che nei videogiochi attuali, il maggior carico computazionale grava non sulla CPU di sistema, bensì sulla GPU della
scheda grafica. E’ proprio questa considerazione che rende possibile la realizzazione di videogiochi professionali in C#.
Per gli scettici, date un’occhiata al sito della ExDream Entertainment, la prima società a produrre videogiochi in C#
commerciali: Rocket Commander, Arena Wars ed anche il Racing Game Starter Kit è opera loro.

Quindi anche se con C# si perde un 10-15% di performance sul codice eseguito dalla CPU rispetto al C++, le
performance del codice eseguito dalla GPU (i famosi shaders) sono identiche. Però usando C# si hanno numerosi
vantaggi rispetto al C++, che permettono di aumentare la produttività del programmatore e quindi risparmiare tempo:

la gestione automatica della memoria e l’assenza di puntatori evita un sacco di bug e di problemi di memory leak
inevitabili con il C++

la gestione delle eccezioni consente una migliore gestione degli errori nel codice

la libreria di classi a corredo di C# è molto più ricca di quella del C++, quindi non dovete reinventare la ruota ogni volta.

alcuni aspetti della programmazione object oriented sono semplificati in C#: niente ereditarietà multipla, migliore gestione
dell’override dei metodi, properties …

l’uso di XNA consente di concentrarsi maggiormente sugli aspetti implementativi del proprio gioco, risparmiando al
programmatore la scrittura di tutta l’infrastuttura necessaria. Invece con DirectX, dovete scrivere un sacco di codice per
inizializzazioni etc…

Una delle parti cruciali dei videogiochi moderni è la gestione dei “content assets” ovvero di tutti i file grafici e sonori. Con
DX è interamente a carico del programmatore, mentre XNA se ne prende carico tramite la “Content Pipeline”. Questa
parte consente di importare modelli 3D, textures, shaders, suoni nel proprio gioco utilizzando vari formati disponibili. Il
vantaggio è che, indipendentemente dai formati, si otterrà sempre la stessa struttura dati: ad esempio si avrà un’instanza
della classe Model che rappresenta un modello 3D, sia che esso sia importato da un file .X che .FBX o collada. Ciò
consente un notevole risparmio di tempo.

Da queste considerazioni si capisce bene come C# ed XNA siano la scelta giusta per produrre i cosìdetti “garage games”
ovvero per le produzioni amatoriali.

Infatti solo i grandi studios hanno le risorse temporali ed economiche per realizzare una propria content pipeline per
importare i loro formati, un loro framework per inizializzare il gioco e i vari sotto sistemi e cosi via…

Un altro punto a favore di XNA è che attualmente è l’unico modo accessibile ai non-professionisti per programmare una
console. Infatti solitamente per programmare queste ultime è necessario un dev-kit che la casa produttrice rilascia solo
alle software house, previo pagamento di alcune migliaia di euri. Con XNA potete programmare il vostro gioco per
XBox360 sul vostro PC e poi trasferirlo a quest’ultima per testarlo ed anche effettuare il debug remoto. L’unico costo da
sostenere è l’abbonamento all’XNA Creators Club, dell’ordine dei 100 euro annui. Senza di questo abbonamento l’XNA
Launcher sulla XBox360 non funziona. Inoltre si vocifera che con il lancio di XNA 2.0 a Dicembre, potrebbe essere
eliminato questo vincolo dell’abbonamento. Inoltre dovrebbe essere lanciato da Microsoft una sorta di YouTube per i
videogiochi creati dagli hobbysti con XNA: rappresenterebbe un’ottima vetrina per chi è in cerca di un publisher.

Spero che queste mie considerazioni possano essere utili ai neofiti per indirizzarsi verso la tecnologia giusta per creare
videogiochi amatoriali.

Ing. Stefano Coppi – Project Coordinator e Lead Programmer di Oversteer – The game

~ di diegotech su gennaio 31, 2008.

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

 
%d blogger cliccano Mi Piace per questo: