PortadaÍndiceCalendarioFAQBuscarMiembrosGrupos de UsuariosRegistrarseConectarse

Comparte | 
 

 Spring Jewels

Ver el tema anterior Ver el tema siguiente Ir abajo 
Ir a la página : Precedente  1, 2
AutorMensaje
elPatrixF
Soporte
Soporte
avatar

Argentina Masculino 100% Cumplimiento de las normas
Reputación : 325
Mensajes enviados : 1296
Edad : 25
Premios : Ganador concurso periódico: Demos de Aplicaciones 3º puesto concurso anual: Demos de juegos

MensajeTema: Spring Jewels   Jue Abr 04, 2013 7:39 am

Recuerdo del primer mensaje :

[Tienes que estar registrado y conectado para ver esa imagen]

Proyecto de juego que inicié hace un par de días.
Se trata de un juego de tipo Puzzle. Una mezcla entre Bejeweled (Conocido juego de intercambio de joyas), Spring Weekend (No tan conocido juego del creador del tetris; parte de la clásica "The Puzzle Collection" de Microsoft), y Lose Your Marbles (Juego de combinar bolitas de colores de segasoft; del que yo hice un pequeño "mini-remake" no hace mucho :xD:).  :arrow:

[Tienes que estar registrado y conectado para ver esa imagen]

La situación es así: hay un tablero con gemas de 7 colores distintos. Las gemas se pueden rotar de a 6 haciendo clic en la ficha del centro para hacer girar las gemas del borde.
El clic derecho realiza un giro en el sentido de las agujas del reloj, y el clic izquierdo lo hace en el sentido contrario.
Dicho esto, no sirve de nada hacer clic en las gemas que están ubicadas en el borde del tablero porque al rotar, algunas gemas caerían del tablero; por lo que hacer clic en las gemas del borde es un movimiento inválido.

Para conseguir puntos hay que romper las gemas. Las gemas se rompen alinéandolas de dos formas distintas:
1- Alineando 5 gemas en diagonal. (Así \ o así /)
2- Alineando 7 gemas de forma horizontal
Alinear 5 (ó 6) gemas de forma horizontal no hará nada.

Esta demo solo tiene lo que llevo hecho hasta ahora; el modo "Libre", si se quiere llamar de alguna forma Razz

Requisitos mínimos:

  • Resolución de pantalla de al menos 1280x720. (Lamento los que tengan monitores 1024x768... pero necesito hacerlo en alta definición~ tendrán que verlo cortado por ahora;)
  • DirectX 9
  • Mouse de al menos 2 botones Razz


Descargar:
[Tienes que estar registrado y conectado para ver este vínculo]

La versión para android aquí:
[Tienes que estar registrado y conectado para ver este vínculo]

Está compilado desde TGF2, con display mode en Direct3D 9; así que debería irles fluido todo el tiempo, a pesar de las rotaciones y los efectos de escala Smile
(Pueden pulsar F12 dentro de la demo para mostrar la "información de la consola debug").

¡Video!
[Tienes que estar registrado y conectado para ver este vínculo]
La música de fondo del juego es provisoria, pero debería sonar practicamente idéntica a eso

Tengo en plan poder meterle varios modos de juego, y de darle más enfoque a la calidad gráfica que mis anteriores "intentos de juego"; a ver si a este lo puedo sacar para adelante Razz
Le puse mucho empeño a la presentación gráfica del juego (Las joyas rotan completamente), pero también me quise asegurar de que fuera lo más robusto posible (Las joyas que se ven no son las mismas que las "joyas" lógicas del juego, y cosas así) asi que cualquier bug* que vean háganmelo saber por acá Smile

Espero les guste!

*Soy consciente de que el ícono grande es verde y los demás son rojos; no lo quise cambiar todo devuelta porque no es más que una demo técnica de momento XD


elPatrixF @Web, Twitter, [Tienes que estar registrado y conectado para ver este vínculo]


Última edición por elPatrixF el Sáb Mar 08, 2014 8:57 pm, editado 2 veces
Volver arriba Ir abajo
Ver perfil de usuario http://elpatrixf.com

AutorMensaje
elpupas7
Administrador
Administrador
avatar

España Masculino Ningúno
Reputación : 1228
Mensajes enviados : 3904
Premios : Empty (invisible) Empty (invisible) Empty (invisible) Empty (invisible)

MensajeTema: Re: Spring Jewels   Dom Mar 09, 2014 10:40 pm

Sip.
En la rev.14, parece (apreciación poco fiable), que el rendimiento cayó en 1 o 2 puntos.

Te sugeriría poner la versión en la esquina superior izq. del juego. Es mas fácil de "acordarse", pero bueno, quizás solo sea problema mío.

Si vas a crear revisiones nuevas que implican nuevas aplicaciones, te sugeriría también nombres (los que aparecen en pantalla, debajo del icono, mas cortos. En mi caso, solo se ve "Spring Jevels (dev..."
No sé si hay "truquillo" para ver el resto.


Actualidad Iniciación Recursos Cursos
[Tienes que estar registrado y conectado para ver este vínculo] [Tienes que estar registrado y conectado para ver este vínculo][Tienes que estar registrado y conectado para ver este vínculo] [Tienes que estar registrado y conectado para ver este vínculo]
[Tienes que estar registrado y conectado para ver este vínculo] [Tienes que estar registrado y conectado para ver este vínculo] [Tienes que estar registrado y conectado para ver este vínculo] [Tienes que estar registrado y conectado para ver este vínculo]
Volver arriba Ir abajo
Ver perfil de usuario
elPatrixF
Soporte
Soporte
avatar

Argentina Masculino 100% Cumplimiento de las normas
Reputación : 325
Mensajes enviados : 1296
Edad : 25
Premios : Ganador concurso periódico: Demos de Aplicaciones 3º puesto concurso anual: Demos de juegos

MensajeTema: Re: Spring Jewels   Dom Mar 09, 2014 11:11 pm

[Tienes que estar registrado y conectado para ver este vínculo] escribió:
Sip.
En la rev.14, parece (apreciación poco fiable), que el rendimiento cayó en 1 o 2 puntos.

Te sugeriría poner la versión en la esquina superior izq. del juego. Es mas fácil de "acordarse", pero bueno, quizás solo sea problema mío.

Si vas a crear revisiones nuevas que implican nuevas aplicaciones, te sugeriría también nombres (los que aparecen en pantalla, debajo del icono, mas cortos. En mi caso, solo se ve "Spring Jevels (dev..."
No sé si hay "truquillo" para ver el resto.
Ok, creo que la caida del framerate es por la inclusion del primer frame con la info, porque al cabo de un rato el programa vuelve a tener la velocidad normal.

Ya voy por la v18, agregué un frame sin transparencias, un boton para mostrar/ocultar detectores, y puse la versión un poco más fácil de ver.


elPatrixF @Web, Twitter, [Tienes que estar registrado y conectado para ver este vínculo]
Volver arriba Ir abajo
Ver perfil de usuario http://elpatrixf.com
elPatrixF
Soporte
Soporte
avatar

Argentina Masculino 100% Cumplimiento de las normas
Reputación : 325
Mensajes enviados : 1296
Edad : 25
Premios : Ganador concurso periódico: Demos de Aplicaciones 3º puesto concurso anual: Demos de juegos

MensajeTema: Re: Spring Jewels   Lun Mar 10, 2014 11:01 pm

Bien, subo la v21 gente... después de un rato largo de optimizar código logré quitar por completo los actives que usaba de detectores, así que ahora la cantidad de Actives promedio bajó de 100 a 75, y la cantidad de eventos del nivel se redujo de una forma considerable~



Como ya no hay detectores que me identifiquen cada joya en su lugar, tuve que basar las "ubicaciones" de las joyas en las coordenadas directas y colocarlas dentro de un arreglo una única vez, para luego comprobar las líneas desde el arreglo, en vez de tener que usar los detectores para comprobar el color actual de la joya ubicada en determinada ubicación.

Como colorario, puedo agregar que la extensión ForEach no me funcionó en android (Los eventos de for each nunca se lanzaban en la tablet, a pesar de que lo hacían perfectamente en la pc), pero como ya tenía un sistema de IDs basado en "start of frame -> spread a number on alterable value A (id)" no fué muy complicado de "traducir" a fast loop :xD:

El resultado final es un arreglo con muchos huecos vacíos en el medio, pero esto no tiene impacto a nivel rendimiento (El arreglo mide 128x128x1)

A nivel programa, como para ilustrar un poco, se pasó de esto:
[Tienes que estar registrado y conectado para ver esa imagen]
a esto:
[Tienes que estar registrado y conectado para ver esa imagen]
Siendo el cuadrado negro los detectores, y el cuadrado rojo las "joyas logicas".

Y además como ahora las ubicaciones se basan en las coordenadas reales, pude aprovechar el loopindex para calcular las otras dos diagonales idénticas a las diagonales centrales, pero corridas a la derecha, sin impacto en el rendimiento pero reduciendo la cantidad de código del programa.

De 7 grupos individuales, cada uno con fastloops que se ejecutan 1 vez por movimiento, pasamos a 3 grupos individuales de los cuales 2 de ellos se ejecutan 3 veces.
[Tienes que estar registrado y conectado para ver esa imagen] -> [Tienes que estar registrado y conectado para ver esa imagen]
El rendimiento es mátemáticamente el mismo, pero la cantidad de código en el programa es menos de la mitad Happy smile

En fin, a pesar de todo esto no parece haber cambios en el rendimiento del programa, aún cuando con el nuevo código se ahorran unas cuantas "pasadas" de bucles (Por el tema de que se iteran sobra todas las joyas UNA sola vez para guardarlas en el arreglo, mientras que con los detectores se comprobaban más de una vez las joyas que se usaban en varias lineas, como por ejemplo la joya central, que sirve para ambas diagonales centrales, y para la gran horizontal).

Mismo link de descarga, y la versión original con detectores se conserva en un frame aparte, accesible desde el programa Smile
Por ahora (v21) el tablero de 5x5x5 permanece igual sin ninguna optimización, ya que con ese se pueden alcanzar los 30 fps sin mucho problema, pero luego de que haya hecho un par de optimizaciones más al tablero normal voy a re-hacer el tablero de 5x5x5 en base a ello.

No creo que copie ninguna de estas optimizaciones a la versión de PC por ahora porque la versión de PC anda a velocidad normal y sin tener que hacer ningún tipo de frameskip, y además el ejecutable de MMF2 puede manejar miles y miles de actives sin entrar en conflictos, más aún con la aceleración hardware para manejar las transformaciones y los efectos especiales y etc etc Very Happy


Ya no sé bien que más hacer para optimizarlo sin tener que sacrificar rotaciones ni reducir el tamaño del tablero =="

Tendría que investigar un poco más en los fastloops que se usan para "ubicar" las joyas en el tablero, que se ejecutan constantemente a manera de foreach para hacer todo el efecto bonito de como se mueven las joyas por el tablero (Hay dos actives de joya, la joya lógica, que es un cuadrado invisible, y la joya gráfica, que tiene un ID que lo asocia con una joya lógica y se mueve y rota con suavidad a medida que la joya lógica va cambiando de ubicación y "forma").
Ya se me había ocurrido "fusionar" la joya lógica y la de programa en un solo objeto, pero esto implicaría reescribir todo el código del juego, o olvidarse por completo de los efectos gráficos de rotación y traslación suavizada :xD:

Y además de todo esto, está el misterio de por qué el juego se laguea por unos instantes luego de pasar el primer frame (10-15 fps), pero al cabo de unos segundos recupera la velocidad "esperable" (15-24 fps)... eso si que me tiene perplejísimo.
Ah, y recordar que los FPS objetivo son 30, no 60. 60 es algo ya inalcanzable en mi plan :xD:

En fin, ¿Alguien tiene alguna sugerencia sobre como podría optimizar más el juego para mejorar el rendimiento? Wizard


elPatrixF @Web, Twitter, [Tienes que estar registrado y conectado para ver este vínculo]
Volver arriba Ir abajo
Ver perfil de usuario http://elpatrixf.com
Zonacas
Super-Moderador
Super-Moderador
avatar

España Masculino 100% Cumplimiento de las normas
Reputación : 557
Mensajes enviados : 2871
Premios : Ganador Concurso "Aniversario PacMan" 2º puesto concurso anual: Demos de juegos

MensajeTema: Re: Spring Jewels   Mar Mar 11, 2014 9:45 am

Creo recordar leer en el foro de Clickteam que los loops funcionan más rápido si el nombre del loop tiene pocos caracteres...

realmente nunca lo he comprobado y tampoco se cuanto se ganaría en optimización

la cosa es que en vez de llamar al loop "comprobar" llámalo "c"



[Tienes que estar registrado y conectado para ver esa imagen]
[Tienes que estar registrado y conectado para ver este vínculo]
ENLACES INTERESANTES: [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
Volver arriba Ir abajo
Ver perfil de usuario http://www.comunidadid.com/
elPatrixF
Soporte
Soporte
avatar

Argentina Masculino 100% Cumplimiento de las normas
Reputación : 325
Mensajes enviados : 1296
Edad : 25
Premios : Ganador concurso periódico: Demos de Aplicaciones 3º puesto concurso anual: Demos de juegos

MensajeTema: Re: Spring Jewels   Mar Mar 11, 2014 11:04 am

[Tienes que estar registrado y conectado para ver este vínculo] escribió:
Creo recordar leer en el foro de Clickteam que los loops funcionan más rápido si el nombre del loop tiene pocos caracteres...

realmente nunca lo he comprobado y tampoco se cuanto se ganaría en optimización

la cosa es que en vez de llamar al loop "comprobar"  llámalo  "c"
No se me había ocurrido pero tiene bastante sentido siendo que se pueden llamar en expresiones no verificadas por el editor (loopindex("bucle") pasa como "Valid expression" aún cuando nunca se definió una fastloop "bucle") y cosas así, aunque no son más que 7 u 8 loops en total, no creo que cambie tanto el rendimiento del programa.

Asumo que el rendimiento se vería afectado por lo que tarda el programa en buscar en la lista de nombres de loops (A nombres mas cortos, menos caracteres por comprobar y consecuentemente menos tiempo requerido para comprobarlos, supongo) y asumo que también ayudaría

Pero en fin, algo es algo, voy a probarlo luego; es un trabajo muy exhaustivo pasar por TODOS los eventos y todas las acciones cambiando el nombre de los bucles =="

Alguna otra idea entretanto?


elPatrixF @Web, Twitter, [Tienes que estar registrado y conectado para ver este vínculo]
Volver arriba Ir abajo
Ver perfil de usuario http://elpatrixf.com
elPatrixF
Soporte
Soporte
avatar

Argentina Masculino 100% Cumplimiento de las normas
Reputación : 325
Mensajes enviados : 1296
Edad : 25
Premios : Ganador concurso periódico: Demos de Aplicaciones 3º puesto concurso anual: Demos de juegos

MensajeTema: Re: Spring Jewels   Miér Mar 12, 2014 12:37 am

Bien, ya hice el cambio de todos los fastloops y los reemplacé por nombres de solo 1 caracter.
En total 14 loops distintas en un sinfín de eventos, ahora se llaman e, j, g, u, c, f, 1, 2, 3, 4, 5, 6, r, o.
No hay ninguna mejora aparente en el rendimiento :S

Subo el apk como siempre, mismo link de descarga.

EDIT:
v27, agregué un frame con solo los actives, sin la lógica de juego, para probar que los gráficos no generan nada de lag en el juego :xD:
EDIT2:
Creo que lo único que me queda por hacer es optimizar la lógica del juego todavía más para que no se haga abuso de los fastloops constantes para ubicar las joyas en el tablero frame por frame... esto va a tomar un tiempo importante =.=


elPatrixF @Web, Twitter, [Tienes que estar registrado y conectado para ver este vínculo]
Volver arriba Ir abajo
Ver perfil de usuario http://elpatrixf.com
Zonacas
Super-Moderador
Super-Moderador
avatar

España Masculino 100% Cumplimiento de las normas
Reputación : 557
Mensajes enviados : 2871
Premios : Ganador Concurso "Aniversario PacMan" 2º puesto concurso anual: Demos de juegos

MensajeTema: Re: Spring Jewels   Miér Mar 12, 2014 2:56 pm

que resolución usas para la versión de android?

creo que podrías sacrificar algo de resolución en la versión Android



[Tienes que estar registrado y conectado para ver esa imagen]
[Tienes que estar registrado y conectado para ver este vínculo]
ENLACES INTERESANTES: [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo] - [Tienes que estar registrado y conectado para ver este vínculo]
Volver arriba Ir abajo
Ver perfil de usuario http://www.comunidadid.com/
elPatrixF
Soporte
Soporte
avatar

Argentina Masculino 100% Cumplimiento de las normas
Reputación : 325
Mensajes enviados : 1296
Edad : 25
Premios : Ganador concurso periódico: Demos de Aplicaciones 3º puesto concurso anual: Demos de juegos

MensajeTema: Re: Spring Jewels   Miér Mar 12, 2014 3:06 pm

[Tienes que estar registrado y conectado para ver este vínculo] escribió:
que resolución usas para la versión de android?

creo que podrías sacrificar algo de resolución en la versión Android
No, la resolución no es problema en absoluto.
Pruebalo tu mismo, en el frame de demostración que no tiene eventos del juego y solo tiene los gráficos de las joyas el juego corre a 30 fps constanemente (La aplicacion está configurada para correr a 30 fps), aún con todas las joyas girando. Son aproximadamente 50 actives en pantalla escalados, rotados, y moviendose en tiempo real y sin nada de lag.

Esta captura la saqué desde el mmf2, pero puedo asegurarte que en mi tablet anda igual de bien
[Tienes que estar registrado y conectado para ver esa imagen]

Ya sacrifiqué bajando de a 1280x720 a 640x400; bajar la resolución no va a aumentar el rendimiento para nada porque aquí lo que causa el lag es el programa y no la gráfica.


elPatrixF @Web, Twitter, [Tienes que estar registrado y conectado para ver este vínculo]
Volver arriba Ir abajo
Ver perfil de usuario http://elpatrixf.com
elPatrixF
Soporte
Soporte
avatar

Argentina Masculino 100% Cumplimiento de las normas
Reputación : 325
Mensajes enviados : 1296
Edad : 25
Premios : Ganador concurso periódico: Demos de Aplicaciones 3º puesto concurso anual: Demos de juegos

MensajeTema: Re: Spring Jewels   Miér Mar 12, 2014 6:10 pm

Bueno... este es el momento en el que uno se siente más idiota que de costumbre:

Con solo pasar de esto:
[Tienes que estar registrado y conectado para ver esa imagen]
[Tienes que estar registrado y conectado para ver esa imagen]

A esto:
[Tienes que estar registrado y conectado para ver esa imagen]

...el juego ahora ronda los 23-30 fps.


v30, mismo link de descarga; y todavía se puede optimizar más; deben haber unos  cuantos eventos duplicados que se pueden fusionar.



EDIT:
Micro update, ahora la versión de PC tiene una versión preliminar de lo que serían las "joyas explosivas"; y se pueden crear haciendo 7 en línea.
EDIT2:
Otro micro update; ahora la versión de PC inicia en "modo clásico", donde al cabo de determinado puntaje empiezan a aparecer más colores en el tablero y se tiene la posibilidad de "perder" al no quedar al menos 5 joyas de un mismo color en el tablero.º
EDIT3:
[Tienes que estar registrado y conectado para ver esa imagen]


elPatrixF @Web, Twitter, [Tienes que estar registrado y conectado para ver este vínculo]
Volver arriba Ir abajo
Ver perfil de usuario http://elpatrixf.com
Contenido patrocinado




MensajeTema: Re: Spring Jewels   

Volver arriba Ir abajo
 
Spring Jewels
Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 2 de 2.Ir a la página : Precedente  1, 2
 Temas similares
-
» Cigarros Jewels
» [comic] Some Like it Hot Spring [español] [M/M] [DD]

Permisos de este foro:No puedes responder a temas en este foro.
 :: Proyectos :: Proyectos: Fase Inicial. (Demos e imágenes)-
Cambiar a: