¿Es una buena idea desarrollar un juego 2D no trivial en Python? [cerrado]


10

Estoy planeando desarrollar un RPG espacial en 2D y me enfrento a la elección: ¿cuál es el mejor lenguaje para escribirlo? Mis candidatos son C ++, Java y Python. Obviamente, quiero escribir juegos en Python debido a su expresividad, velocidad de desarrollo y la simplicidad de agregar soporte para scripts. Pero estoy preocupado:

  • ¿Python no será demasiado lento? El juego no será trivial (como Tetris, por ejemplo), puede ser necesario calcular tareas para miles de naves en el universo (aunque su IA puede simplificarse mucho si esas naves no son vistas por el jugador). Por supuesto, puedo escribir algunas partes críticas en C, pero al instante complicará la construcción y la implementación.
  • Supongamos que el juego se hizo popular y me convertí en una superestrella. Los usuarios de Windows rara vez tienen Python (afortunadamente tenemos py2exe). Python en Mac OS X puede estar desactualizado y el juego puede fallar con una oscura excepción. ¿No sería difícil implementar el juego en Python?
  • Debido a la falta de bibliotecas para Python 3, tendré que escribir un juego en Python 2. ¿La transición a Python 3 en un par de años no sería demasiado dolorosa y requeriría mucho tiempo?

Para su segunda pregunta, estoy bastante seguro de que también hay una py2app que puede usar para facilitar la implementación.
Thedaian

1
Si decide hacer esto en Python, es posible que desee ver si puede hacer alguna de las partes "lentas" usando numpy (pero puede que no sea necesario).
Brendan Long

Respuestas:


8

¿Python no será demasiado lento? El juego no será trivial (como Tetris, por ejemplo), puede ser necesario calcular tareas para miles de naves en el universo (aunque su IA puede simplificarse mucho si esas naves no son vistas por el jugador). Por supuesto, puedo escribir algunas partes críticas en C, pero al instante complicará la construcción y la implementación.

Es difícil de decir, pero la mayoría de las veces el factor limitante para el rendimiento es la capacidad / experiencia de uno como desarrollador, no el lenguaje. Tenga en cuenta que EVE usa Stackless Python (consulte aquí y aquí para descargar una presentación relacionada). No recuerdo los detalles exactos, pero aparentemente la mayor parte de su clúster de servidores ejecuta Python . Por lo tanto, me imagino que podría manejar sus requisitos de escalabilidad, aunque la creación de prototipos para estar seguro sería buena.

Los usuarios de Windows rara vez tienen Python (afortunadamente tenemos py2exe). Python en Mac OS X puede estar desactualizado y el juego puede fallar con una oscura excepción. ¿No sería difícil implementar el juego en Python?

La mayoría de los usuarios rara vez tienen las dependencias binarias apropiadas para los juegos, independientemente de en qué tecnología se escribieron esos juegos (incluso C requiere que se distribuya un componente de tiempo de ejecución). La implementación a través de py2exe o equivalente, o simplemente la implementación de la dependencia adecuada, es algo real. Si bien nunca es lo más fácil (la mayoría de las tecnologías de instalación son dolorosas), es factible y no debería ser una razón para evitar el lenguaje; como dije, es probable que tenga que manejar algo similar de todos modos.

Debido a la falta de bibliotecas para Python 3, tendré que escribir un juego en Python 2. ¿La transición a Python 3 en un par de años no sería demasiado dolorosa y requeriría mucho tiempo?

No sé mucho sobre esto, nunca he usado realmente Python 3. No espero que Python 2.X desaparezca pronto, sin embargo, así que ni siquiera sospecho que la vida de tu juego sería tal que tú 'd necesidad de hacer la transición si no quería, lo que hace que esta preocupación algo de un no-tema.

Como otros han dicho, te estás preocupando demasiado por el aspecto de selección de idioma de tu proyecto. Python es una herramienta poderosa y útil para desarrollar juegos y, si lo conoce y le gusta, debe desarrollarlo. No importa qué tan rápido se ejecute tu juego si nunca termina porque te preocupas demasiado por el idioma.


Habiendo usado Python 2.7 bastante, no hay mucho que pueda hacer con Python 3.2+ que no pueda hacer con 2.7. Eso cambiará con el tiempo, pero también será compatible con la biblioteca. =)
Ken

14

Para su primer punto, solo necesitará construir un prototipo y ver. Incluso si nos contaras todos los detalles que realmente no cambiarían las cosas.

En cuanto a los otros dos puntos, siento que estás poniendo el carro delante del caballo. Según su pregunta, parece que es nuevo en el desarrollo de juegos, en cuyo caso realmente solo necesita elegir una herramienta e ir con ella. Analizar los pros y los contras de las herramientas en su mayoría igualmente útiles es una distracción de su verdadero desafío: aprender a desarrollar juegos.


0

re # 3, Python 2.x verá soporte de distribuidor por al menos otros 5-10 años. Si usa una versión bastante reciente (2.7, o posiblemente 2.6), la ruta de migración es bastante fácil si escribe código preparado para el futuro (objeto de nuevo estilo, unicode en todas partes, etc.). El dolor es principalmente por cosas que dependían de comportamientos viejos y rotos.


Para ayudar a identificar los viejos comportamientos que lo morderán, ejecute su juego python -3 filename.py, que imprimirá advertencias para cosas que ya no son compatibles con Python 3
spiffytech
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.