È una buona idea sviluppare un gioco 2D non banale in Python? [chiuso]


10

Sto progettando di sviluppare giochi di ruolo spaziali 2D e sto affrontando la scelta: qual è la lingua migliore per scriverlo? I miei candidati sono C ++, Java e Python. Ovviamente, voglio scrivere un gioco in Python per la sua espressività, velocità di sviluppo e semplicità nell'aggiunta del supporto per gli script. Ma sono preoccupato:

  • Python non sarà troppo lento? Il gioco non sarà banale (come ad esempio Tetris), potrebbe essere necessario calcolare compiti per migliaia di navi nell'universo (anche se la loro IA può essere fortemente semplificata se quelle navi non sono viste dal giocatore). Ovviamente posso scrivere alcune parti critiche in C, ma complicherà all'istante la costruzione e la distribuzione.
  • Supponiamo che il gioco sia diventato popolare e che sia diventato una superstar. Gli utenti Windows raramente hanno Python (fortunatamente abbiamo py2exe). Python su Mac OS X può essere obsoleto e il gioco potrebbe bloccarsi con un'eccezione oscura. Non sarebbe difficile distribuire il gioco in Python?
  • A causa della mancanza di librerie per Python 3 dovrò scrivere un gioco in Python 2. La transizione a Python 3 in un paio di anni non sarebbe troppo dolorosa e richiederebbe molto tempo?

Per la tua seconda domanda, sono abbastanza sicuro che ci sia anche un py2app che puoi usare per rendere la distribuzione abbastanza semplice.
thedaian

1
Se decidi di farlo in Python, potresti voler vedere se puoi eseguire una qualsiasi delle parti "lente" usando numpy (ma potrebbe non essere necessario).
Brendan Long,

Risposte:


8

Python non sarà troppo lento? Il gioco non sarà banale (come ad esempio Tetris), potrebbe essere necessario calcolare compiti per migliaia di navi nell'universo (anche se la loro IA può essere fortemente semplificata se quelle navi non sono viste dal giocatore). Ovviamente posso scrivere alcune parti critiche in C, ma complicherà all'istante la costruzione e la distribuzione.

È difficile da dire, ma il più delle volte il fattore limitante per le prestazioni è la capacità / esperienza di uno sviluppatore, non il linguaggio. Si noti che EVE utilizza Stackless Python (vedere qui e qui per i download di una presentazione correlata). Non ricordo i dettagli esatti, ma a quanto pare la maggior parte del loro cluster di server esegue Python . Immagino quindi che possa gestire i requisiti di scalabilità, sebbene la prototipazione sia sicura sarebbe buona.

Gli utenti Windows raramente hanno Python (fortunatamente abbiamo py2exe). Python su Mac OS X può essere obsoleto e il gioco potrebbe bloccarsi con un'eccezione oscura. Non sarebbe difficile distribuire il gioco in Python?

La maggior parte degli utenti raramente ha le dipendenze binarie appropriate per i giochi, indipendentemente dalla tecnologia in cui sono stati scritti quei giochi (anche C richiede la distribuzione di un componente di runtime). La distribuzione tramite py2exe o equivalente, o semplicemente la distribuzione della dipendenza appropriata, è qualcosa di un fatto della vita. Sebbene non sia mai la cosa più semplice (la maggior parte delle tecnologie di installazione sono dolorose), è fattibile e non dovrebbe essere un motivo per evitare la lingua - come ho detto, probabilmente dovrai gestire qualcosa di simile a prescindere.

A causa della mancanza di librerie per Python 3 dovrò scrivere un gioco in Python 2. La transizione a Python 3 in un paio di anni non sarebbe troppo dolorosa e richiederebbe molto tempo?

Questo di cui non so molto, non avendo mai usato Python 3. Non mi aspetto che Python 2.X svanisca presto, tuttavia, quindi non sospetto nemmeno che la durata del tuo gioco sia tale che tu 'd bisogno di transizione nel corso se non si voleva, il che rende questa preoccupazione qualcosa di un non-problema.

Come altri hanno già detto, ti stai preoccupando troppo dell'aspetto della selezione della lingua del tuo progetto. Python è uno strumento potente e utile per lo sviluppo di giochi e se lo conosci e ti piace dovresti svilupparlo. Non importa quanto è veloce il tuo gioco se non finisce mai perché ti preoccupi troppo della lingua.


Avendo usato python 2.7 abbastanza ampiamente, con Python 3.2+ non c'è molto che non si possa fare con 2.7. Ciò cambierà nel tempo, ma anche il supporto della libreria. =)
Ken,

14

Per il tuo primo punto, dovrai solo costruire un prototipo e vedere. Anche se ci dicessi tutti i dettagli che non cambieranno davvero le cose.

Per quanto riguarda gli altri due punti, mi sento come se stessi mettendo il carro davanti al cavallo. Dalla tua domanda sembra che tu sia nuovo nello sviluppo del gioco, nel qual caso devi solo scegliere uno strumento e seguirlo. Nitpicking sui pro e contro di strumenti per lo più ugualmente utili è una distrazione dalla tua vera sfida: imparare lo sviluppo del gioco.


0

in riferimento a # 3, Python 2.x vedrà il supporto del distributore per almeno altri 5-10 anni. Se si utilizza una versione abbastanza recente (2.7 o eventualmente 2.6) il percorso di migrazione è abbastanza semplice se si scrive codice a prova di futuro (oggetto di nuovo stile, unicode ovunque, ecc. Ecc.). Il dolore è principalmente per cose che si basavano su comportamenti vecchi e rotti.


Per aiutare a identificare i vecchi comportamenti che ti morderanno, esegui il tuo gioco python -3 filename.py, che stamperà avvisi per cose che non sono più supportate in Python 3
spiffytech
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.