PDA

Visualizza la versione completa : [OT] Uso di C++ o Python per la programmazione di giochi complessi


Horus-Ra
14-02-2007, 15:53
Sono reduce da altri linguaggi di programmazione (Java, iniziato all'università e proseguito per diletto personale, ma solo nella base; PHP per lavoro, che conosco quanto basta per l'azienda :D )

Ora, io e un gruppo di amici desideriamo metterci in "proprio", ovvero creare un nostro programma. Non abbiamo ancora scelto quale, ma visto che tutti lavoriamo nella programmazione sarà di certo abbastanza complesso. Il programma dovrà girare in locale, installabile come un exe, e quindi essere il meno pesante possibile.
La nostra scelta è ricaduta sul C++, ma sentendo i commenti in giro vedo il Python come una risorsa in espansione. Entrambi i linguaggi non sono per noi conosciuti (anche se con le basi degli altri linguaggi non dovrebbe essere un vero problema impararli) e volevo quindi chiedervi in quale studio vi buttereste.
Per esempio, se doveste creare un gioco complesso in codice, prendereste il C++ o il Python? E per quale motivo? :stordita:

billiejoex
14-02-2007, 19:50
Come al solito dipende dal tipo di applicazione.
Utilizzando Python al posto di C++ guadagnereste molto in termini di produttività dato che il primo è n^x volte più produttivo del secondo, senza contare il vantaggio che guadagnerebbe un team (aka gruppo di persone che lavorano ad un progetto comune) di avere un codice più leggibile e meglio manutenibile.
Altro fatto da tenere in considerazione è la velocità di apprendimento: partendo da zero in entrambi i casi dovete tenere presente che ottenere una padronanza adeguata di C++ richiede un tempo molto più lungo che in Python il quale, avendo gia delle basi di programmazione precedentemente acquisite, potrebbe cominciare a fruttare gia dopo averne acquisiti i concetti di base (questione di giorni e non sto scherzando).

Dal canto suo C++ vanta una velocità n^x volte superiore rispetto a Python, cosa che nella programmazione di un videogame potrebbe rappresentare un parametro essenziale (es: utilizzo massiccio di grafica tridimensionale).
Rappresentando inoltre praticamente lo 'standard de facto' per la programmazione di videogames, C++ potrebbe vantare un supporto maggiore di librerie grafiche ed affini (ma in questo non posso essere più preciso) e una comunità di sviluppatori più folta a cui poter chiedere supporto.

Nella programmazione di videogame, nello specifico, molto spesso vengono utilizzati linguaggi di basso livello (es: C/C++) per scrivere l'engine e linguaggi di livello più elevato (Python, appunto, perl, ruby, e in maniera minore Java, ad esempio) per interfacciarsi e fare il lavoro sporco.

Come utilizzatore Python non posso fare altro che consigliarti di dare un occhiata a pygame:
http://www.pygame.org/news.html
Se giri un po' per il sito ti sorprenderai delle sue potenzialità e ti renderai conto che scrivere giochi in puro Python è possibile. Tutto sta nel valutare a priori se il proprio progetto necessità effettivamente di alte velocità computazionali oppure no, e nella stragrande maggioranza dei casi non è così.

my 2.5.0 cents

Horus-Ra
15-02-2007, 11:08
Grazie per la risposta, direi che sei stato esauriente :)
Per cominciare sarebbe quindi opportuno studiarci il Python (vista la semplicità e il poco tempo che richiede nello studio). Quando e se ci porteremo a livelli più complicati, di certo dovremo passare al C++, perchè a quel punto il rendimento sarà essenziale.
Il sito che mi hai linkato, poi, è la soluzione ai nostri problemi grafici :D

billiejoex
15-02-2007, 16:15
Grazie per la risposta, direi che sei stato esauriente
Per cominciare sarebbe quindi opportuno studiarci il Python (vista la semplicità e il poco tempo che richiede nello studio). Quando e se ci porteremo a livelli più complicati, di certo dovremo passare al C++, perchè a quel punto il rendimento sarà essenziale.
Se avrete davvero bisogno di performance potete tranquillamente scrivere le parti di codice che vi interessano in C ed interfacciarvi facilmente da Python.


Il sito che mi hai linkato, poi, è la soluzione ai nostri problemi grafici
Si, pygame è davvero molto bello (ci ho pacioccato poco ma ho intravisto le potenzialità).

Horus-Ra
15-02-2007, 18:29
I due linguaggi, Python e C++, interagiscono senza problemi? Perchè dalla tua risposta mi sembra di aver capito che è possibile fare una parte in Python e una parte in C++...
Suppongo esistano librerie specifiche per questo. Se è così siamo a cavallo :master:

billiejoex
16-02-2007, 08:47
I due linguaggi, Python e C++, interagiscono senza problemi? Perchè dalla tua risposta mi sembra di aver capito che è possibile fare una parte in Python e una parte in C++...
Si, in entrambi i sensi.
Esempio: puoi scrivere delle parti di codice in C (ove necessiti di velocità maggiore) ed interfacciarti da Python, o ancora, puoi utilizzare delle librerie C/C++ gia esistenti (e che magari non esistono in py), scrivere un wrapper ed interfacciarti da Python.
Lo stesso può valere al contrario (embedding) ovvero da C puoi interfacciarti all'interprete Python.
http://www.python.org/doc/ext/intro.html

Qui alcune FAQ:
http://www.python.org/doc/faq/extending.html

Esistono cmq alcune alternative per evitare di utilizzare altri linguaggi, come psyco (http://psyco.sourceforge.net/) che genera codice asm dal bytecode python per incrementarne la velocità di esecuzione o pypy (http://codespeak.net/pypy/dist/pypy/doc/news.html).

Horus-Ra
16-02-2007, 09:48
Grazie per le spiegazioni, hai risolto ogni mio dubbio
:ciauz:

Loading