Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Consejo acerca de videojuegos 2D en Android

Iniciado por NullPointerException, 23 de Marzo de 2013, 09:35:29 PM

« anterior - próximo »

NullPointerException

Hola señores, estoy aquí para pediros consejo.

Estoy interesado en realizar un videojuego 2D en Android, y me gustaría que me recomendarais 2D engines gratuitos.

Ya probé el libGDX pero debido a una serie de problemas que me dió, me estoy planteando un cambio. Entonces mis opciones son 3:

1. Hacerlo con otro game engine.
2. Hacerlo yo a pelo sin game engine tirando de OpenGL ES.
3. Hacerlo en libGDX de todas formas


bnl

Yo estoy haciendo los juegos sin engine y sin opengl, sobre el canvas y me parece bastante sencillo y no he tenido ningun problema. Seguro que un buen engine facilita muchos las cosas pero yo no he tenido necesidad de usar ninguno.
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

NullPointerException

Cita de: bnl en 23 de Marzo de 2013, 11:46:21 PM
Yo estoy haciendo los juegos sin engine y sin opengl, sobre el canvas y me parece bastante sencillo y no he tenido ningun problema. Seguro que un buen engine facilita muchos las cosas pero yo no he tenido necesidad de usar ninguno.

No es mala idea. Claro que también depende del rendimiento que pueda darme el juego y la envergadura que tenga.

bnl

Yo en cuanto a rendimiento no he tenido ningun problema ni siquiera  en moviles de gama muy baja pero los juegos que he realizado son bastante sencillotes
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

NullPointerException

El problema es que yo quiero hacer juegos un poco más "potentes", con sprites, disparos y cosas de esas. Como los arcade de antaño vaya. Podría dar problemas de rendimiento supongo...

YaW

Hacerlo a pelo es una tonteria a no ser que quieras aprender cómo desarrollar un motor de videojuegos y estés dispuesto a sacrificar mucho tiempo.

Yo he probado casi todos los motores y frameworks que hay para Android (libgdx, andengine, corona, unity con plugins, cocos2d y más que no recuerdo ahora mismo) y al final nos hemos quedado con LibGDX. Es el más potente, cómodo e intuitivo de todos.

Corona también está muy bien, pero cuesta pasta y no es barato precisamente. Si el dinero no es problema seguramente Corona sea la mejor opción para hacer juegos sencillos sin complicarte mucho la vida. Te da muchas cosas hechas.

Sobre LibGDX lo bueno que tiene es el tema de poder probarlo en el PC directamente, eso ahorra un montón de horas de ejecutar en el móvil y todo el rollo, aparte que la comunidad que tiene es enorme y al ser open source siempre puedes meter mano si ves que algo falta.

NullPointerException

A mi libGDX en sí no me desagrada, pero da una serie de problemas en ciertos dispositivos. Intento probarlo en el emulador (no tengo movil con Android 2.2 así que tiro de ahi para probar en esas versiones), y no me funciona. No sé si en un movil Android 2.2 para abajo funcionaria, pero lo que es el emulador no. A partir del 2.3 ya si que funciona.

TrOnTxU

- Yo creo que el mayor problema de poner muchos sprites rollo arcade es el numero de draw calls.
- Yo en el sistema de GUI 2D del Typhoeus lo que tengo es un "batcher" por material y profundidad.
- Te sugiero que "empaquetes" los sprites en unas pocas texturas. Para compartir la mayor cantidad de batches.
- A los vertices les pongo posicion, uvs, y color.
- Es conveniente tener un "draw_fast" con posicion (y a lo mejor una escala) y "draw_transform" con escala y rotacion.
- Dibujarlos con listas de triangulos indexados es una buena opción.
- Otro tema es si el batch lo dibujas con drawArrays o actualizas un buffer ogl. Pero lo principal yo creo que es "batchear" :)

Un saludo
Vicent: Linked-In  ***  ¡¡Ya tengo blog!!

YaW

Cita de: NullPointerException en 24 de Marzo de 2013, 07:59:43 PM
A mi libGDX en sí no me desagrada, pero da una serie de problemas en ciertos dispositivos. Intento probarlo en el emulador (no tengo movil con Android 2.2 así que tiro de ahi para probar en esas versiones), y no me funciona. No sé si en un movil Android 2.2 para abajo funcionaria, pero lo que es el emulador no. A partir del 2.3 ya si que funciona.

En teoría LibGDX funciona en casi todas las versiones de Android, puede ser alguna cosa en concreto que no te funcione pero siempre puedes preguntar en el foro oficial. De todas formas el emulador de Android no es muy fiable, siempre a ser posible es mejor probarlo en un dispositivo para quitarse problemas.

NullPointerException

Cita de: TrOnTxU en 25 de Marzo de 2013, 12:13:11 AM
- Yo creo que el mayor problema de poner muchos sprites rollo arcade es el numero de draw calls.
- Yo en el sistema de GUI 2D del Typhoeus lo que tengo es un "batcher" por material y profundidad.
- Te sugiero que "empaquetes" los sprites en unas pocas texturas. Para compartir la mayor cantidad de batches.
- A los vertices les pongo posicion, uvs, y color.
- Es conveniente tener un "draw_fast" con posicion (y a lo mejor una escala) y "draw_transform" con escala y rotacion.
- Dibujarlos con listas de triangulos indexados es una buena opción.
- Otro tema es si el batch lo dibujas con drawArrays o actualizas un buffer ogl. Pero lo principal yo creo que es "batchear" :)

Un saludo

En teoria tenia los sprites separados, de tal forma que cada objeto tenia su archivo de imagen. En libGDX usaba el spritebatch. Lo unico que variaba eran los Tiles que los tenia todos en una misma textura.
No lo llegué a tocar a tan bajo nivel.
En el juego que hago ahora intento hacer que todos los objetos quepan en una o 2 texturas grandotas (de unos 1024x1024), por lo que en teroía supongo que no habría problema.

De todas formas, el problema con el libGDX me pasa incluso con el "proyecto default", el que te sale la imagen esa para probar que funciona.

Cita de: YaW en 25 de Marzo de 2013, 08:31:14 AM
Cita de: NullPointerException en 24 de Marzo de 2013, 07:59:43 PM
A mi libGDX en sí no me desagrada, pero da una serie de problemas en ciertos dispositivos. Intento probarlo en el emulador (no tengo movil con Android 2.2 así que tiro de ahi para probar en esas versiones), y no me funciona. No sé si en un movil Android 2.2 para abajo funcionaria, pero lo que es el emulador no. A partir del 2.3 ya si que funciona.

En teoría LibGDX funciona en casi todas las versiones de Android, puede ser alguna cosa en concreto que no te funcione pero siempre puedes preguntar en el foro oficial. De todas formas el emulador de Android no es muy fiable, siempre a ser posible es mejor probarlo en un dispositivo para quitarse problemas.

Es verdad que el emulador no es fiable, yo de hecho no le hice caso en su momento, pero cuando un usuario me dijo que le pasaba lo mismo en su dispositivo (con la misma version del emulador) entonces ya estuve con la mosca detrás de la oreja.

TrOnTxU

#10
Yo no he tocado el libGDX, pero si lo vas a hacer en java seguro, parece que es muy buena opción (por lo que dicen).
Además si es OpenSource, igual te conviene intentar "depurar" los defectos que le veas y luego supongo que puedes mandarles el patch si quieres.

Hacerte un motor de cero, depende ... si es solo orientado a este juego y tampoco te planteas reaprovechar demasiado ...
Lo que te cueste menos tiempo depende de tu forma de hacer las cosas. Hay gente que se le da mejor bucear y modificar código, y otros escriben mejor desde cero.

Pero con lo que estoy de acuerdo, es que poder desarrollar en desktop te facilita la vida. (y los "emuladores" Android son muy lentos y engorrosos para depurar, al menos si trabajas en c++)
Yo el Typhoeus tambien lo tengo planteado rollito "cross-platform". Incluso, tengo un fileserver para los archivos en la versión "development" y no tengo que actualizar el APK cuando cambio el "Content", solo cuando hay cambios en el ".so".


Mi consejo es que o vas con un engine "cross-platform" como dice YaW( el libGDX o el que sea), o el que te programes deberia permitir que lo probaras en "desktop". Sino yo creo te vas a volver loco para "afinar" los parámetros y hacer pruebas.

Pero solo es mi opinión.

Un saludo y ánimo :)
Vicent: Linked-In  ***  ¡¡Ya tengo blog!!

NullPointerException

Cita de: TrOnTxU en 25 de Marzo de 2013, 04:23:08 PM
Yo no he tocado el libGDX, pero si lo vas a hacer en java seguro, parece que es muy buena opción (por lo que dicen).
Además si es OpenSource, igual te conviene intentar "depurar" los defectos que le veas y luego supongo que puedes mandarles el patch si quieres.

Hacerte un motor de cero, depende ... si es solo orientado a este juego y tampoco te planteas reaprovechar demasiado ...
Lo que te cueste menos tiempo depende de tu forma de hacer las cosas. Hay gente que se le da mejor bucear y modificar código, y otros escriben mejor desde cero.

Pero con lo que estoy de acuerdo, es que poder desarrollar en desktop te facilita la vida. (y los "emuladores" Android son muy lentos y engorrosos para depurar, al menos si trabajas en c++)
Yo el Typhoeus tambien lo tengo planteado rollito "cross-platform". Incluso, tengo un fileserver para los archivos en la versión "development" y no tengo que actualizar el APK cuando cambio el "Content", solo cuando hay cambios en el ".so".


Mi consejo es que o vas con un engine "cross-platform" como dice YaW( el libGDX o el que sea), o el que te programes deberia permitir que lo probaras en "desktop". Sino yo creo te vas a volver loco para "afinar" los parámetros y hacer pruebas.

Pero solo es mi opinión.

Un saludo y ánimo :)

Motor desde 0 por ahora no haré, dado que es un trabajo faraónico. Por eso más bien preguntaba por game engines existentes, para poder hacer uso de alguno.

Yo ya tengo un movil que tiene la ultima version (Jelly Bean), pero también quiero probar que funcione en dispositivos anteriores (con Android 2.2 que es lo minimo que uso) y, dado que no tengo un dispositivo con ese SO me veo obligado a usar el emulador para probarlo.

Aunque tienes razon en lo de corss-platform, a mi me fue bien con el que hice.

YaW

Probaste a poner el problema en el foro de LibGDX?

NullPointerException

Cita de: YaW en 26 de Marzo de 2013, 11:07:26 AM
Probaste a poner el problema en el foro de LibGDX?

Leí por ahí en que no se daba soporte a los errores con el emulador, aunque creo que debería hacerlo

TrOnTxU

Cita de: NullPointerException en 26 de Marzo de 2013, 01:58:52 PM
Cita de: YaW en 26 de Marzo de 2013, 11:07:26 AM
Probaste a poner el problema en el foro de LibGDX?

Leí por ahí en que no se daba soporte a los errores con el emulador, aunque creo que debería hacerlo

pufff pues yo trabajar pruebas con un emu de android me da el patatus!!

Cuando quiero probar diferentes resoluciones lo pruebo en win32 normal (o OSX si estoy con el mac) cargando desde un archivo de configuración. Tengo tambien una forma para hacer un build de las librerias bajo emulacion gles, supongo que el GDX tiene algo parecido.

Luego depuro la version en los android que tengo (que no son muchos) y cuando puedo hago una prueba en algun dispositivo de algun amigo.

Seguramente con el emu se puedan probar algunas cosas como entradas de llamadas, o eventos de estos. Pero si el libGDX tiene un buen framework soportará estas cosas y las podrás probar (más o menos) en la versión desktop.

Otra cosa es que tuviera problemas con algunos Android (dispositivos). Entonces puedes buscar alguna cosa más "ligera" que funcione en más dispositivos e incluso en los emuladores (en todo caso, si hay menos código, es más fácil de portar).
Tambien tienes frameworks para c++ si quieres pasarte al lado oscuro del coder. Igual la SDL o una cosa asi te da soporte de independencia de plataforma. Y el resto (manejo de sprites, etc) lo puedes implementar en OGL ...
Vicent: Linked-In  ***  ¡¡Ya tengo blog!!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.