di  -  lunedì 17 novembre 2008

CIV4La complessità dei giochi è cresciuta esponenzialmente negli ultimi anni, tanto più con l’avvento delle console di nuova generazione, dalle quali il mercato si aspetta ulteriore sviluppo delle meccaniche di gioco, ambienti più realistici e complessi, esperienze piu’ vaste. Queste aspettative si traducono durante lo sviluppo in termini di più asset, più linee di codice, tecniche più complesse; problematiche che vanno affrontate da team più numerosi. L’unica variabile che non è cambiata è il tempo di sviluppo per un titolo da vendere a prezzo pieno: circa due anni.

Vari team di sviluppo stanno affrontando il problema di gestire questa crescente complessità in diverse discipline: in questo post mi concentro sulla costruzione del software, quindi su quali linguaggi di programmazione sono usati oggi durante lo sviluppo di un videogioco.

La risposta è: non solo C++, ma diversi a seconda dello scopo.

C++/Assembly. I linguaggi a livello più basso sono usati dove è necessario il totale controllo sull’hardware, sul ciclo di vita degli oggetti e sulla loro collocazione in memoria. L’Engine Grafico, il Network Engine, oppure l’Engine Sonoro, ma anche alcune porzioni del Game Engine, sono scritti in in C++ con minuscole porzioni di assembly dove necessario. In questi sistemi non sono tanto importanti le prestazioni, ma è fondamentale capire quando nascono e soprattutto quando muoiono l’entità con le quali si lavora, oppure dove sono posizionate in memoria. Su console soprattutto la gestione della memoria è fondamentale perché la memoria è un bene scarso e prezioso.

LUA/Python. I linguaggi ad alto livello stanno quasi esclusivamente sostituendo i vecchi linguaggi di scripting proprietari (chi ricorda il Quake C?). LUA e Python in particolare sono semplicissimi da interfacciare a codice C++ nativo, offrendo però un ambiente ad alto livello più produttivo per sistemi dove concetti come la gestione della memoria non sono fondamentali. Le prestazioni offerte sono sufficienti ad eseguire codice che gestisce le meccaniche di gioco. Un ulteriore vantaggio è la semplicità di apprendimento, che permette ad uno scripter di diventare subito produttivo. Civlization 4di Sid Meier, ad esempio, è scritto per larga parte in Python. Fable 2 usa LUA per lo scripting.

C# e .NET. Il codice del gioco rappresenta una parte anche abbastanza piccola rispetto a tutto il codice che è necessario scrivere durante lo sviluppo di un titolo. C# e .NET, per via della loro produttività e standardizzazione, si stanno ritagliando grosse fette di interesse nello sviluppo di tutti i tool di supporto allo sviluppo: tool di conversione, costruzione e gestione degli asset di gioco, editor di livelli sono sempre più spesso scritti in uno dei linguaggi che supportano la piattaforma .NET.

Un programmatore che volesse entrare nel mondo dello sviluppo, quindi, non può più limitarsi a conoscere il C++, ma si vede costretto ad allargare il proprio bagaglio di strumenti con linguaggi e piattaforme a più alto livello.

13 Commenti »

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.

  • # 1
    Rubatti D.
     scrive: 

    Molto interessante.Ma non ho capito una cosa:
    Python può essere utilizzato per il motore grafico??

  • # 2
    rutto
     scrive: 

    no. in tutte le componenti dell’engine in cui le prestazioni sono una discriminante, i linguaggi ad alto livello o gli script non possono essere una soluzione adeguata. al contrario pero’ avere elementi come l’AI gestita da LUA permette di apportare sostanziali modifiche senza dover ogni volta ricompilare l’intero motore, micca male!

  • # 3
    SirHaplo
     scrive: 

    Beh dopo tutti i post sul linguaggio migliore per iniziare questo è un ottimo articolo su gli spazi che si sono ritagliati tutti i linguaggi.
    A ognuno il suo campo.

    Se non ricordo male anche le mod per World of warcraft sono fatte in lua, cosi come, ai tempi, anche alcune features di ultima online.

    Il python invece non sapevo fosse usato nel mondo dei videogiochi.

  • # 4
    nodith
     scrive: 

    e se uno avesse già basi di c/c++ più che solide, volesse iniziar a lavorare su un videogioco da cosa dovrebbe cominciare? ci son tutorial o basi?

  • # 5
    Jacopo Cocchi
     scrive: 

    Con XNA Microsoft credo si stia guadagnando un certo “rispetto” con C# sul campo, mostrando come tra i linguaggi ad alto livello si possa essere produttivi in poco tempo, rimanendo nell’egida .NET.

  • # 6
    carbon
     scrive: 

    nodith ti consiglio di cominciare a studiare le collisioni, ovviamente non basta essere programmatori devi avere anche qualche base di informatica e geometria.
    oppure utilizzi un motore già esistente come il 99,9% di chi lavora nell’ambiente o a livello amatatoriale ti limiti a moddare un gioco già esistente, ma imo quello che conta davvero nel realizzare un gioco 3D moderno è saper fare le mappe e i modelli ed avere inventiva con gli shader.
    tu in che ambito ti vuoi collocare ?

  • # 7
    nodith
     scrive: 

    il progetto che stiamo cercando di metter su al momento è quello di un mmorpg, ed effettivamente l’idea di utilizzar un sistema già collaudato la abbiamo anche considerata (premettendo che cmq siam tutti studenti di ingegneria a livello più o meno avanzato, quindi le basi di informatica e programmazione bene o male ci sono). Il problema è che non conoscendo bene il settore (siamo all’esordio diciamo) non abbiamo idea di cosa scegliere

  • # 8
    Corrado
     scrive: 

    Mount&Blade (gran bel gioco) è compilato in Phyton se non sbaglio.
    STALKER Clear Sky ha scripting in LUA se non sbaglio.

  • # 9
    sidew
     scrive: 

    EVE online e’ scritto quasi tutto in python, tranne la parte che gestice la grafica, che ovviamente e’ in c++.

    Anche la parte server e’ scritta in Python.

  • # 10
    Francesco Carucci (Autore del post)
     scrive: 

    Nodith: se siete alle prime armi EVITA un mmorpg. Evitalo anche se siete un team gia’ affermato: e’ la tipologia di gioco piu’ complessa che si’ puo’ sviluppare.
    Io ti consiglio di dedicarti ad un MOD di un gioco che offra queste possibilita’. Mi viene in menta Half Life 2 soprattutto. Oppure provare a scrivere qualcosa di semplice con XNA.

  • # 11
    Rubatti D.
     scrive: 

    Se si vuole scrivere un gioco quali sono le conoscenze di geometria richieste?

  • # 12
    mjordan
     scrive: 

    OT abbastanza CONSISTENTE:
    Dateci Fable II per PC!!!! :P

  • # 13
    Cesare
     scrive: 

    Si dovrebbe riscrivere l’engine del gioco, visto che è stato pensato appositamente per la XBox360. La conversione non è affatto semplice.

Scrivi un commento!

Aggiungi il commento, oppure trackback dal tuo sito.

I commenti inseriti dai lettori di AppuntiDigitali non sono oggetto di moderazione preventiva, ma solo di eventuale filtro antispam. Qualora si ravvisi un contenuto non consono (offensivo o diffamatorio) si prega di contattare l'amministrazione di Appunti Digitali all'indirizzo info@appuntidigitali.it, specificando quale sia il commento in oggetto.