Desarrollar juegos en Python, ¿qué elijo?

Consulte acerca de programas, técnicas, algoritmos etc.

Desarrollar juegos en Python, ¿qué elijo?

Notapor Baku » Dom Ene 10, 2010 2:40 am

Buenas, soy nuevo en LosersJuegos.

Hace algún tiempo migré a GNU/Linux (en mi vida, Windows dejó de existir).

Siempre me ha gustado el rollito del gamedev. Empecé usando GameMaker en Windows, un toolkit que llegué a dominar bastante bien. Con el paso de los años y ya con una experiencia básica programando, inicié un proyecto llamado "Himoko", desarrollé la base de un engine bastante chulo, pero lo dejé parado mucho tiempo.

Mas tarde, dejaría de usar GameMaker por el hecho de migrar a GNU/Linux.

Decidí continuar con esto de los juegos, así que me dispuse a usar algún game engine multiplataforma... mi primera elección fue BlitzMax, dadas mis anteriores experiencias con este. Me agrada bastante pues su lenguaje es simple y la API bastante reducida, pero luego lo dejé: no tenía intenciones de pagar la costosa licencia y además, me estoy alejando del software propietario en general.

Empecé a trastear con Ruby, y me agradó bastante la librería Gosu, sin embargo, lo dejé por cuestión de rendimiento de Ruby.

Después me enamoré de Python...

Aquí, yo tengo un gran dilema... primero, está PyGame, me agradó bastante, sobre todo después de ver proyectos decentes como Ardentryst y similares... yo el único problema que le veo, es que -hasta donde sé- carece de aceleración por hardware, cosa que me deja pensando dado que en el futuro quiero hacer juegos gráficamente mas decentes...

Buscando alternativas a PyGame, encontré PyGlet, me agradó toda su base, renderizado por OpenGL (aceleración), soporte decente para audio, etc. No sé si adoptar PyGlet, dado que me da la impresión de que es sumamente mas "complejo"... buscando por ahí, me encontré con Cocos2d, un framework basado en PyGlet que se ve de lujo... estaba decidido a agarrar cocos, peeero, me voy dando cuenta que su desarrollo esta parado desde el 2008 (en la versión 0.3.0), se centraron en su versión para iPhone/Objective-C,

También leí un poco sobre PyCap/TuxCap basado en el game engine de PopCap... vi algunas screens de juegos desarrollados con este, y se ve bastante bien, ¿alguien lo ha probado?

Aunque podría emplear cosas complejas, no soy amigo de esta idea, no me agrada mucho complicarme la vida con aspectos muy técnicos; es quizá ese el motivo por el cual aborrezco programar en lenguajes como C++ y Java.

No se cual elegir.

Pienso reescribir Himoko en Python; básicamente es solo un juego de 640x480. Si la librería soporta cosas como rotación de imágenes y pngs con canales alfa, me quedo conforme xD.

¿Qué me recomiendan usar?

Un gran saludo.
Baku
 
Mensajes: 4
Registrado: Dom Ene 10, 2010 1:39 am
Ubicación: Tecate

Notapor Juanxo » Dom Ene 10, 2010 1:50 pm

Buenas baku:

No lo he probado, pero podrías mirar a ver que tal PyOpenGL que como su nombre indica es un binding de Opengl para Python.

Pero como anotación decirte que es muy dificil, por no decir imposible, conseguir un juego de gran envergadura con lenguajes interpretados. Si fuera asi, todos los juegos se harían en estos lenguajes.

Aqui se cumple una regla de matemáticas:

cuanta mayor facilidad, flexibilidad o claridad, menor velocidad, y viceversa.

Lo que si que es posible, y es lo que hacen la mayoria de juegos, es escribir el juego en sí en un lenguaje tipo Python/Lua, reescribiendo las partes más lentas en C++
Avatar de Usuario
Juanxo
 
Mensajes: 437
Registrado: Sab Ene 31, 2009 2:34 am
Ubicación: Madrid(España)

Notapor Baku » Dom Ene 10, 2010 5:39 pm

No creo que me agrade mucho manejarme directamente con OpenGL... para eso, mejor utilizo PyGlet, que renderiza sobre OpenGL.

Hay una librería para gráficos llamada Rabbyt, estuve leyendo, y al parecer es una buena propuesta en combinación con PyGlet. ¿Alguien la ha probado?

Mis juegos tampoco son sumamente ambiciosos, digo, tampoco digo que vaya a programar un Aquaria... algo mas sencillo.

Los juegos de GameMaker eran interpretados, y se podían hacer cosas bastante buenas dentro del marco de los 2D... no creo que para Python sea mucho esfuerzo alcanzar ese nivel.

Saludos.
Baku
 
Mensajes: 4
Registrado: Dom Ene 10, 2010 1:39 am
Ubicación: Tecate

Notapor endaramiz » Dom Ene 10, 2010 10:06 pm

Bienvenido al foro.

Yo empecé con Pygame y luego probé Pyglet y la verdad es que son muy diferentes. Aunque Pyglet funcione sobre openGL, no me gustó nada. Pero es cuestión de gustos así que tampoco te voy a aconsejar una o otra.
Es cierto que Pygame es bastante lento, no conseguía correr bien algunos ejemplos en mi Pentium3 de 800MHz, pero en ordenadores más modernos este problema irá desapareciendo.
Igualmente puedes probar pySFML que ellos mismos se definen como la alternativa moderna a SDL (base de Pygame). Aunque yo no la he probado, a ver si alguien que la haya probado se anima a dar su opinión.

Como puedes ver, en esta comunidad muchos nos hemos decantado por Pygame. Así que quizás te sea más fácil conseguir ayuda si la usas. Aunque tampoco hay que cerrar la mente a las novedades.

Saludos.
Avatar de Usuario
endaramiz
 
Mensajes: 283
Registrado: Vie Ago 31, 2007 9:25 am
Ubicación: Barcelona

Notapor Baku » Dom Ene 10, 2010 11:21 pm

Estuve viendo sobre una librería de sprites llamada Rabbyt, que se ve fenomenal, basada en OpenGL que busca el buen rendimiento sin dejar atrás la facilidad de uso.

Esta está diseñada para ser complemento de PyGame o PyGlet, pero no sé cual de los dos utilizar para hacerle "compañía" a Rabbyt.

¿Cuál fue la parte que no te gustó de PyGlet?, ¿es difícil? ¿carece de documentación? ¿la API es complicada?

Yo no he probado PyGlet muy bien, así que me serviría muchísimo la opinión de alguien que la haya probado con mediana profundidad.

Saludos.
Baku
 
Mensajes: 4
Registrado: Dom Ene 10, 2010 1:39 am
Ubicación: Tecate

Notapor endaramiz » Lun Ene 11, 2010 3:12 pm

Baku escribió:¿Cuál fue la parte que no te gustó de PyGlet?, ¿es difícil? ¿carece de documentación? ¿la API es complicada?

No es que sea más fácil ni más difícil y de documentación tampoco andaba mal. Lo que pasa es que es diferente. Tienes que pensar de otra manera muy distinta a pygame/SDL. Creo que llegué a ver un ejemplo que ni siquiera tenía bucle principal, eso me chocó bastante.

Pero a lo mejor a ti te parece muy cómodo y más intuitivo, es cuestión de gustos. Y por lo que veo los tenemos distinto: a mí me encanta C++.

Baku escribió:Yo no he probado PyGlet muy bien, así que me serviría muchísimo la opinión de alguien que la haya probado con mediana profundidad.
Yo también estoy de acuerdo, a penas lo probé un mes de vacaciones y a lo mejor me llevé una mala impresión. Hugo hizo un juego usándolo, a ver si nos comenta su opinión basada en la experiencia.

Saludos.
Avatar de Usuario
endaramiz
 
Mensajes: 283
Registrado: Vie Ago 31, 2007 9:25 am
Ubicación: Barcelona

Notapor carlostex » Mar Ene 12, 2010 1:33 am

Te haría una pregunta, ¿que tan complejo es el juego que quieres programar?, Por lo que comentas el juego que escribiste es en 2D, y lo que te preocupa es rotar las imagenes, en ese caso te recomendaría que uses pyGame,pues eso es posible.
Mencionas bibliotecas poco conocidas, y quizás sean mas faciles de usar pero conseguir la documentación puede ser muy difcil.
Con referente a la calidad de los gráficos, si hablamos de gráficos en 2D eso no depende en mucho de la biblioteca que uses, dependerá mas de la calidad de las imágenes con las que cuentes.
Por otro lado, no le veo el problema a usar leguajes compilados, y OpenGL tampoco es un demonio indomable, y si entiendes conceptos de funciones y transformaciones OpenGL es pan comido, la ventaja que te da usar directamente OpenGL es la versatilidad de hacer casi cualquier cosa que se te ocurra.
Te aconsejo que te aventures a la programación en lenguajes compilados, no son tan difíciles como parecen, busca un buen libro de C/C++(hay algunos en la pagina de loserjuegos) y terminaras amando ese lenguaje.
También hay libros sobre SDL para C en esta pagina
Saludos
El conocimiento de unos es conocimiento de todos.
Avatar de Usuario
carlostex
 
Mensajes: 249
Registrado: Mar Jul 14, 2009 4:13 am
Ubicación: mexico

Notapor hugoruscitti » Mar Ene 12, 2010 3:52 am

Saludos, es interesante tu consulta, a muchas personas les paraliza
la cantidad de bibliotecas y formas diferentes que existen de
hacer juegos. A mí personalmente me costó mucho comenzar a aprender
porque no me decidía, hay demasiadas opciones, y uno como
programador tiene el deseo de comenzar con la mejor herramienta...

Pero, en realidad, aunque cueste decirlo, el punto es que todas las
bibliotecas son excelentes, es cierto, todas te permiten aprender algo
importante, y solo utilizando y conociendo cada una podrás elegir
la que mejor se ajuste a tus necesidades y estilo de programación.

Te doy un ejemplo, algunos desarrolladores de juegos quieren tener
el control completo de todos los detalles, aunque les consuma tiempo,
y por eso usan C++ y OpenGL, produciendo juegos que funcionan muy rápido
pero que lleva mucho tiempo escribirlos. Otros programadores, como en
mi caso, preferimos focalizarnos mas en el juego, y no tanto en
detalles, aunque cueste velocidad de ejecución, por ello elegimos
lenguajes que nos hagan el trabajo mas sencillo, y productivo, como lo
permite python.

Por eso, en realidad, aunque suene un poco duro, pienso que cada uno
de nosotros elige en base a su perfil, y para ser mas productivos,
divertirnos mas y producir mejores juegos, lo mas adecuado es conocer
al menos por arriba algo de lo que ofrece cada herramientas.

Es difícil resumir las bibliotecas que conozco, pero igualmente
voy a intentar darte una opinión general de cada una:

* pygame: Es la mas sencilla de utilizar, tiene muchos objetos
para facilitar el calculo de colisiones, manejo de
personajes y todo lo demás. Es interesante porque te
hace muy productivo, en poco tiempo puedes lograr algo
que funcione y sea divertido.

* pyglet: no tiene dependencias de otras bibliotecas y no hereda
limitaciones de otros lenguajes como sí lo hacen varias
bibliotecas, se ha realizado enteramente con python así
que tiene mucha magia, de hecho, te permite usar cosas
avanzadas como "decoradores" para atender eventos, algo
novedoso si vienes de lenguajes compilados.

* rabbyt: Se puede usar en conjunto con cualquiera de las anteriores,
y si la utilizas con pygame te permite hacer juegos usando
aceleración de Hardware, lo que hace que tus juegos no
solo sean mas rápidos, sino que te animarás a añadirle mas
efectos e interacción (por ende, mas calidad y diversión
para los usuarios).

Algo interesante de rabbyt es que añade interpolaciones...
(espero escribir un artículo sobre esto pronto).

* Cocos: cocos es una biblioteca que se utiliza en conjunto con pyglet, y
te facilita enormemente el desarrollo de juegos. Tiene partículas,
sistema de escenas, menues y acciones. Para mí, las acciones son
lo mejor de esta biblioteca, si no eliges cocos incluso es
muy recomendable que veas algo de las acciones, son excelentes.

* PySFML: te permite hacer juegos de manera similar a pygame, solo que la
biblioteca utiliza aceleración de video desde el vamos y
resuelve varios detalles interesantes desde el nivel mas bajo
de detalles, no se utiliza mucho y es bastante nueva, pero promete...

Entonces, resumiendo, te recomendaría que inicies con cualquiera, todas
te van a resultar útil en algún punto. Si recién comienzas lo mejor
sería iniciar con pygame, hay mucha documentación y es estable, no encontrarás
bugs que te dificulten hacer algo (cosa que pasa con pyglet...).

Es mucho mas sencillo avanzar a paso firme, haciendo un juego que por lo
menos se pueda jugar, perder o ganar. Piensa en un resultado simple para tu
juego, no será el último, despreocúpate y luego llegarán juegos
fabulosos con mas experiencia e ideas frescas, tal vez tu
biblioteca favorita no exista aún, o seas tu mismo el que
la escriba en el futuro, quien sabe...

Buena suerte.

PD: un articulo interesante sobre estos temas es:

http://loro.sourceforge.net/notes/21-dias.html
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Notapor Baku » Mar Ene 12, 2010 5:24 pm

@carlostex: De momento, el juego que pretendo reescribir no requiere de una gran capacidad gráfica... mi intención mas bien, era tomar su desarrollo de práctica, para adaptarme a usar un conjunto de bibliotecas, programar algunas bases y luego desarrollar un tema -gráficamente- mas exigente.

Quizá en el futuro me anime a trabajar con C/C++, ya cuando tenga una experiencia mucho mas amplia como programador (ganar experiencia, fue una de las razones que me llevó a elegir Python). :)

@Hugo: Muchísimas gracias compañero, me ha ayudado mucho tu comentario.

De momento, yo también solo pretendo ocuparme del juego y no tanto de los aspectos técnicos/infraestructura.

Analizando lo que me has dicho... creo que como punto de partida, adoptaré PyGame... PyGame quizá acompañado de Rabbyt si veo que la exigencia gráfica se hace mayor.

Me habría gustado elegir Cocos, pero no me da buena espina adoptar un framework que está en una etapa muy baja de su desarrollo que además se ha quedado congelada por casi dos años ya.

Saludos.
Baku
 
Mensajes: 4
Registrado: Dom Ene 10, 2010 1:39 am
Ubicación: Tecate

Notapor shackra » Sab Ene 16, 2010 7:01 pm

Hace algún tiempo migré a GNU/Linux (en mi vida, Windows dejó de existir).
ya somos dos! xD

yo por mi parte prefiero usar pygame, porque estoy empezando en uno de estos sueños que eh tenido desde que jugaba Snes cuando tenia 6 añitos. por lo pronto estoy peliando con los sprites para poder moverlos xD, ya luego con mas experiencia (y sin dejar de lado el C++ y aprender tambien SDL) iniciaria estudios de dev en juegos 3D (con Ogre3D o Panda3D, aun no sé).

bueno, A PROGRAMAR SE A DICHO! :D
Avatar de Usuario
shackra
 
Mensajes: 308
Registrado: Lun Jun 15, 2009 4:10 pm
Ubicación: Costa Rica

Notapor Meldron » Mié Feb 17, 2010 9:03 pm

Hugo, aprovecho para consultarte una duda. Hace poco que estoy ojeando a Pyglet. Mi consulta es la siguiente: para desarrollar juegos 2d simples es necesario usar Opengl con Pyglet?? Es decir, si se puede hacer lo mismo que con Pygame sin necesidad de usar el modulo pyglet.gl ??

Saludos
Avatar de Usuario
Meldron
 
Mensajes: 20
Registrado: Jue Jun 04, 2009 6:04 pm
Ubicación: Cap. Fed.- Argentina

Notapor hugoruscitti » Mié Feb 17, 2010 9:47 pm

Meldron escribió:Hugo, aprovecho para consultarte una duda. Hace poco que estoy ojeando a Pyglet. Mi consulta es la siguiente: para desarrollar juegos 2d simples es necesario usar Opengl con Pyglet?? Es decir, si se puede hacer lo mismo que con Pygame sin necesidad de usar el modulo pyglet.gl ??

Saludos


Buenas, te comento, en realidad pyglet usa OpenGL para
dibujar cualquier cosa en pantalla. En realidad tu no
accedes directamente al modulo pyglet.gl a menos
que quiereas hacer llamadas a OpenGL de bajo nivel, es
decir, que quieras modificar matrices o crear figuras en
tres dimensiones.

Pero, es importante destacar que pyglet oculta los detalles
de llamar a OpenGL para dibujar, pero es parte de la
biblioteca. Tu equipo requiere aceleracion de video para
usar Pyglet.

No se si he comprendido bien tu pregunta, cualquier
cosa me lo indicas, si?.

Un saludo.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Notapor Meldron » Jue Feb 18, 2010 12:31 am

Gracias por la respuesta. Efectivamente ya sabia que Pyglet usaba opengl para dibujar como SFML.. Pero al leer la documentacion de pyglet, como en el segundo capitulo ya trata sobre Opengl pense que estaba totalmente enfocado a usar opengl en python. Pero ya me aclaraste la duda.
Saludos
Avatar de Usuario
Meldron
 
Mensajes: 20
Registrado: Jue Jun 04, 2009 6:04 pm
Ubicación: Cap. Fed.- Argentina


Volver a General

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron