Est-ce une bonne idée de développer un jeu 2D non trivial en python? [fermé]

10

Je prévois de développer un RPG spatial 2D et je suis confronté au choix: quelle est la meilleure langue pour l'écrire? Mes candidats sont C ++, Java et Python. Évidemment, je veux écrire un jeu en Python en raison de son expressivité, de sa rapidité de développement et de la simplicité de l'ajout du support de script. Mais je suis inquiet:

  • Python ne sera-t-il pas trop lent? Le jeu ne sera pas trivial (comme Tetris par exemple), il peut être nécessaire de calculer des tâches pour des milliers de vaisseaux dans l'univers (bien que leur IA puisse être fortement simplifiée si ces vaisseaux ne sont pas visibles pour le joueur). Bien sûr, je peux écrire certaines parties critiques en C, mais cela compliquera instantanément la construction et le déploiement.
  • Supposons que ce jeu soit devenu populaire et que je sois devenu une superstar. Les utilisateurs de Windows ont rarement Python (heureusement, nous avons py2exe). Python sur Mac OS X peut être obsolète et le jeu peut se bloquer avec une exception obscure. Ne serait-il pas difficile de déployer un jeu en Python?
  • En raison du manque de bibliothèques pour Python 3, je vais devoir écrire un jeu en Python 2. La transition vers Python 3 ne serait-elle pas trop pénible et trop longue?
Anton Barkovsky
la source
Pour votre deuxième question, je suis presque sûr qu'il existe également un py2app que vous pouvez utiliser pour rendre le déploiement assez facile.
thedaian
1
Si vous décidez de le faire en Python, vous voudrez peut-être voir si vous pouvez faire l'une des parties "lentes" en utilisant numpy (mais cela peut ne pas être nécessaire).
Brendan Long

Réponses:

8

Python ne sera-t-il pas trop lent? Le jeu ne sera pas trivial (comme Tetris par exemple), il peut être nécessaire de calculer des tâches pour des milliers de vaisseaux dans l'univers (bien que leur IA puisse être fortement simplifiée si ces vaisseaux ne sont pas visibles pour le joueur). Bien sûr, je peux écrire certaines parties critiques en C, mais cela compliquera instantanément la construction et le déploiement.

C'est difficile à dire, mais la plupart du temps, le facteur limitant de la performance est la capacité / l'expérience en tant que développeur, pas le langage. Notez qu'EVE utilise Stackless Python (voir ici et ici pour les téléchargements d'une présentation connexe). Je ne me souviens pas des détails exacts, mais apparemment, la majeure partie de leur cluster de serveurs exécute Python . J'imagine donc qu'il pourrait gérer vos besoins d'évolutivité, bien que le prototypage soit sûr serait bon.

Les utilisateurs de Windows ont rarement Python (heureusement, nous avons py2exe). Python sur Mac OS X peut être obsolète et le jeu peut se bloquer avec une exception obscure. Ne serait-il pas difficile de déployer un jeu en Python?

La plupart des utilisateurs ont rarement les dépendances binaires appropriées pour les jeux, quelle que soit la technologie dans laquelle ces jeux ont été écrits (même C nécessite un composant d'exécution pour être distribué). Le déploiement via py2exe ou équivalent, ou simplement le déploiement de la dépendance appropriée, fait partie de la réalité. Bien que ce ne soit jamais la chose la plus facile (la plupart des technologies d'installation sont douloureuses), c'est faisable et ne devrait pas être une raison pour éviter le langage - comme je l'ai dit, vous devrez probablement gérer quelque chose de similaire malgré tout.

En raison du manque de bibliothèques pour Python 3, je vais devoir écrire un jeu en Python 2. La transition vers Python 3 ne serait-elle pas trop pénible et trop longue?

Je n'en sais pas grand-chose, n'ayant jamais vraiment utilisé Python 3. Je ne m'attends pas à ce que Python 2.X disparaisse de si tôt, cependant, je ne pense même pas que la durée de vie de votre jeu soit telle que vous aurais besoin de faire une transition si vous ne le vouliez pas, ce qui fait que cette préoccupation n'est pas un problème.

Comme d'autres l'ont dit, vous vous inquiétez trop de l'aspect de sélection de la langue de votre projet. Python est un outil puissant et utile pour développer des jeux et si vous le connaissez et l'aimez, vous devriez le développer avec. Peu importe la vitesse à laquelle votre jeu s'exécute s'il n'est jamais terminé parce que vous vous inquiétez trop de la langue.


la source
Après avoir utilisé python 2.7 assez largement, vous ne pouvez pas faire grand-chose avec python 3.2+ que vous ne pouvez pas faire avec 2.7. Cela changera avec le temps, mais aussi le support de la bibliothèque. =)
Ken
14

Pour votre premier point, vous aurez juste besoin de construire un prototype et de voir. Même si vous nous disiez tous les détails, cela ne changerait pas vraiment les choses.

En ce qui concerne les deux autres points, j'ai un peu l'impression que vous mettez la charrue avant le cheval. D'après votre question, il semble que vous soyez nouveau dans le développement de jeux, auquel cas il vous suffit de choisir un outil et de l'accompagner. Nitpicking sur les avantages et les inconvénients des outils généralement tout aussi utiles est une distraction de votre vrai défi: l'apprentissage du développement de jeux.

jhocking
la source
0

re # 3, Python 2.x verra le support du distributeur pendant au moins 5-10 ans. Si vous utilisez une version assez récente (2.7, ou peut-être 2.6), le chemin de migration est assez facile si vous écrivez du code à l'épreuve du temps (objet de nouveau style, unicode partout, etc., etc.). La douleur concerne principalement les choses qui reposaient sur des comportements anciens et brisés.

coderanger
la source
Pour aider à identifier les anciens comportements qui vous mordront, lancez votre jeu avec python -3 filename.py, qui affichera des avertissements pour les choses qui ne sont plus prises en charge dans Python 3
spiffytech