Pregunta

Algunos amigos y yo quería desarrollar un juego. Cualquier lenguaje va a hacer. He estado programando en C durante años, pero nunca escribí un juego antes. Uno de nosotros sabe SDL un poco. También sería una buena excusa para aprender Python + pygame.

Deseamos que nuestro juego sea 'independiente'. Por independiente, me refiero a la mayoría de los usuarios (por lo menos Linux, Mac y Windows) no tendrán que descargar e instalar manualmente cualquier otra cosa aparte de un paquete. Está bien si la instalación se encarga de automatizar las dependencias que faltan. Si los paquetes contienen los binarios, deseamos ser capaces de generarlos mediante la compilación cruzada desde Linux.

¿Cómo debemos empaquetar y estructurar el proyecto, y en qué idioma es el más adecuado?

¿Fue útil?

Solución

Si no se ha programado un juego antes, lo recomiendo que comience con Python y Pygame. propio Python es muy fácil de aprender si ya eres un programador, por lo que no será demasiado de un salto para usted.

Con Pygame, que pasan casi ningún momento de escribir "pegamento" o tratar con detalles de bajo nivel mundanas como la gestión de ventanas y la instalación de sonido - usted casi de inmediato a programar la lógica del juego y en ningún momento se le bliting la izquierda y derecho. Lo que es más, va a ser muy fácil de conseguir un prototipo de su juego terrestre para que pueda empezar a experimentar con la mecánica -. He programado un pequeño y sencillo juego de plataformas de desplazamiento lateral en cuestión de horas

Rendimiento

El rendimiento de Python con Pygame es normalmente decente para los juegos simples, aunque "Smooth-desplazamiento" juegos pueden mostrar un rendimiento deficiente, especialmente en Linux (en mi experiencia, por lo menos - pygame.display.update() literalmente tomó 15-30ms por cuadro en Linux, y 4-5 en Windows con cheapo gráficos Intel, aunque esto fue hace dos años y el conductor Linux Intel ha mejorado en los últimos tiempos). Además, si usted tiene la física de código / matemáticas-pesado Psyco le puede dar enormes aceleraciones (20% - 200% en algunos casos), aunque se le limita a 32 bits Python en ordenadores x86.

Una vez que se obtiene la mayor parte de la lógica del juego funcionó, si el rendimiento es todavía insatisfactoria, usted podría cambiar a C y SDL. Dado que ya ha escrito la lógica del juego, usted sólo tiene que centrarse en tratar directamente con SDL. Incluso eso debería ser bastante fácil -. Pygame utiliza internamente SDL, por lo que la traducción debería ser relativamente sencillo

OpenGL

Por desgracia, lo anterior sólo es cierto si usted está escribiendo un juego 2D - Pygame le da básicamente ninguna ayuda para OpenGL. Sin embargo, me no recomendaría empezar la programación de juegos con OpenGL. Puede ser bastante difícil de entender al principio, por lo que sería presentación de sí mismo con dos problemas a la vez - en primer lugar, que está tratando de encontrar la manera de conseguir la lógica del juego / Física / ai / etc. de trabajo, y luego usted está luchando para entender OpenGL. Vale la pena aprender OpenGL con el tiempo, pero no para empezar -. Mejor empezar con lo básico e ir de allí

Consideraciones

multiplataforma

En lo que se refiere a multiplataforma - py2exe (para Windows) y py2app (para Mac) le permiten construir archivos ejecutables individuales que incluyan sus dependencias (incluyendo el pitón intérprete y Pygame); Sin embargo, no creo que sería capaz de construir los ejecutables desde un entorno Linux (que tendría que ser capaz de tomar prestado un ordenador Windows / Mac durante unos minutos, probablemente). Para Linux, lo que probablemente acaba de distribuir un .deb que enumera Pygame como una dependencia (y Psyco como recomiende o Sugiere si es necesario).

Otros consejos

Tener un vistazo a ogro ; que es el motor detrás antorchas . Es compatible con Windows, Ubuntu, MacOS y iPhone.

También es posible que desee leer Gamasutra : su artículos, entrevistas, en profundidad y post mortem Análisis proporcionar una visión muy interesante en el proceso de desarrollo del juego.

Depende en gran medida si se quiere construir todo un juego, incluyendo el motor, o simplemente basándose en un motor de juego establecidas. Aunque la construcción de todo un motor incluye mucho más los gastos generales y el trabajo duro, que le da un montón de experiencia.

Ahora bien, si desea crear un motor de juego, el lenguaje para el trabajo es C ++ (C también puede trabajar, al igual que C ++ mejor)

Para una herramienta de gestión de construcciones, he encontrado que el uso de CMake es una gran opción, se las arregla para su construcción que en varias plataformas diferentes, y también se puede incluso crear los instaladores, e instalar las bibliotecas necesarias.

En cuanto a las bibliotecas van, la mayor parte de sus problemas se resolverán por SDL, no es particularmente agradable para trabajar, pero se las arregla los dolores de cabeza de plataforma cruzada interfaz con vídeo (OpenGL), de ventanas, de entrada y de audio. Usted todavía tendrá que aprender OpenGL para utilizarlo en su juego, SDL sólo maneja la inicialización y configuración.

Ahora para el uso de Python, yo no lo recomiendo, a menos que su juego es simple (2D, 3D o simple, sin el uso de la física pesada), debido a que el ammount de gastos incurridos por Python comenzará a comer en su tasa de fotogramas. Para una luz, lenguaje de script, Lua es sin duda la mejor, es simple, flexible y rápido. Para integrarlo, si desea una solución simple, usar LuaBind , pero ¡cuidado! Ser muy selectivo en donde vaya a utilizarlo, ya que puede matar completamente sus tiempos de compilación!

Yo sugeriría que se desarrolla en Qt ... QT se encargará de la mayor parte de los problemas de portabilidad sí mismo ... así que usted no tiene que preocuparse por ello, además de que es compatible con la mayor parte de la plataforma incluyendo móviles ... y QT también tiene muy buen soporte nativo para el juego (gráficos, interfaz de usuario, los controles de sonido ..)

Por favor, véase la solicitud construido en QT

Presumo que su juego es un 3D. Si es así, lo que necesita OpenGL. Es C, por lo que estará familiarizado con la sintaxis, pero el enfoque es un poco diferente, debido al hecho de que OpenGL es una máquina de estados finitos. Más sobre este tema aquí .

OpenGL es básicamente una función de en todas las plataformas, por lo que sólo tendría que iniciar una sola ventana de pantalla completa y dejar OpenGL manejar el dibujo. Para la compilación cruzada, recomendaría wxWidgets que es C ++. Se le permitirá a escribir un código único para la ventana de inicialización de la aplicación que recopila en cada plataforma.

wxWidgets también tienen un pitón vinculante si se decide ir a por el pitón en cuyo caso también tendría PyOpenGL .

Para los juegos casuales que recomendaría inflamación

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top