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 ). :arrow:
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
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;)
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 (Pueden pulsar F12 dentro de la demo para mostrar la "información de la consola debug").
¡Video!
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 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á
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
Última edición por elPatrixF el Sáb Mar 08, 2014 8:57 pm, editado 2 veces
Versión ReContra Alpha! jajaja genial. Lo estoy descargando para verlo y te digo. No dudo que será genial, siempre sorprendiendonos con tus proyectos. P.D: Soy un ladrón, lo estoy descargando gracias al wifi de mi escuela Edit: Genial, no se como lo hiciste pero está genial. Además el sonido de rotación es super adictivo :cherry: Lo malo es que, bueno ... es que... Que no pude hacer una sola diagonal. Pero esta genial, te pasaste como siempre. +R
Tras media hora con él... (bueno, algo más, que el tiempo vuela y ni te enteras )
Tenemos seis diagonales válidas para alinear 5 fichas (joyas, que mas da) iguales y 1 línea horizontal para alinear 7 fichas iguales.
El tema es escoger la linea horizontal siempre que se pueda pues entrega un montón de puntos más que las diagonales.
El truco es ver la forma de mover las fichas a través de un movimiento circular (hexagonal, da lo mismo) para colocarlas donde queramos.
El problema es que este truco se pilla enseguida y una vez pillado, el puzzle pierde gran parte de su interés. Espero que le implementes alicientes para que el interés no decaiga.
Aún así jugué lo suficiente para hacer 10010 puntos. Y reconozco que no le gustará a todo el mundo colocar objetos a base de movimientos circulares.
Por otro lado, algunas cuestiones:
- Por qué usas joyas como objetos ? - Por qué tanta resolución ?
Por otro lado la mecánica es intachable y la programación (no me cabe duda) es igualmente buena. Espero que encuentres el camino para que esto sea divertido al tiempo de un reto atractivo, en cuyo caso sería un buen juego para móviles o para subirlo a Mochimedia o similares.
Y es lo que puedo decirte en esta "primera impresión".
Descuida pupas, esto no pasa más de una "demo" técnica, en el estado que está ahora. Hasta ahora no califica siquiera como juego porque no hay objetivo ni nada; es solo un tablero, funcionando. No tiene ni menú, ni puntajes, ni personaje, ni modos de juego, y más allá de todo es imposible perder. Pero vamos, que no es más que el "motor base"; todavía falta TODO lo interesante del juego.
Por ahora son joyas porque me hice el vago y solamente hice 1 sólo gráfico para todas las fichas (Solamente hice un diamante y lo pinte de colores diferentes); además la "joya" tiene appeal y le dá un toque deluxe Al principio MUY principio del juego, las joyas eran una pokebola, mi cara haciendo muecas, los cascos de daft punk, un CD, y una copia de estos 4 con los colores cambiados... no probaron ser buenos placeholders así que me dibujé un diamantito a las apuradas, lo guarde en 10 colores diferentes, y los puse en el juego La versión final va a tener todas cosas distintas. Definitivamente. Y todavía no estoy seguro si deberían ser joyas. Y denuevo, falta MUCHÍSIMO para la versión final.
Pfft. La resolución es todo un tema.
La resolución es grande porque quiero quiero que el juego tenga buena calidad gráfica para sacarle el máximo partido al display de Direct3D. El mismo juego utilizando el driver de pantalla estándar de TGF2 toma demasiado tiempo para calcular las rotaciones y los escalares incluso en calidad 0 (Sin suavizar). Usando la aceleración por hardware de Direct3D no sólo consigo suavizar los sprites y los bordes (Acordarse que TGF2 no tiene soporte para canales alfa) sino que además obtengo un boost increíble de velocidad.
Además, un juego así, a menor resolución, no se vería bien. Al principio lo iba a hacer de 640x360, pero después me puse a pensar que la única forma de forzar pantalla completa con este modo de video es sí o sí estirar la pantalla de juego (Sin cambiar de modo de video, total pixelación de la imagen) o usando el Keep aspect ratio (Barras negras alrededor); de modo que a mitad de camino cambié la resolución del juego a 1280x720; y le coloqué la opción de poder jugarlo a pantalla completa. Además, este juego está pensado para ser casual, tirando al palo de los juegos "Deluxe" y cosas así. Deluxe es sinónimo de HD, y HD no se lleva bien con las resoluciones chiquitas
Podría haber pensado en hacerlo en una resolución intermedia, ya se, pero la resolución estándar, de pantalla ancha (16:9 o 16:10) más pequeña que se puede encontrar es 1280x720. Cualquier resolución 16:9 menor a eso, o bien no tiene calidad suficiente, o bien no funcionará en modo pantalla completa en todas las pc's.
Y quiero un juego en alta definición, lo que menos quiero es que se vea pixelado; por eso ahora el area de juego no se estira, y la única forma de "agrandar" la pantalla es jugar a pantalla completa, donde el monitor se encarga de suavizar todo al cambiar de resolución.
Lo habría hecho multiresolución, haciéndolo compatible con 1024x768 y 1366x768 al mismo tiempo, pero TGF2 no admite extensiones, y además hubiera sido un trabajo más tedioso ubicar dinámicamente todas las cosas del nivel con respecto al centro y al borde. Y no, no hay chance de que lo haga en MMF2, el juego entero va a estar hecho en TGF2, es mi desafío XD
De todas formas el juego está programado para que cambiar la dimensión de las fichas no afecte a la jugabilidad. De modo que si en algún momento quiero sacar una versión para celulares, solo tengo que cambiar un par de números, cambiar los gráficos del juego, y listo, half-resolution
Zonacas escribió:
Bug
Prueba a pulsar varias veces seguidas con los dos botones a la vez...
llega un momento que las joyas se quedan amontonadas y no puedes seleccionarlas.
...soy idiota, se me escapó por completo manejar el clic simultáneo, ya lo arreglo en 2 patadas!!
Un detalle, el compartir el .mfa. +R por ello, siempre se puede aprender algo y más viniendo de ti.
Me gustaría hacer una prueba, con sus consiguientes cambios, para llevarlo a celular, con tu permiso.
Adelante!
Si necesitas cambiar el tamaño de las joyas, acordate de ajustar el valor "dimFicha" en el objeto CONFIG, para que se ajusten todos los movimientos de traslación de forma automática!
:O que genial el juego , casi no vi el mfa , estaba escondidito , a analizarlo que siempre se aprende algo de elpatrix , ojala no este dificil
Está un poco críptico porque no tenía pensado subirlo, pero igual tiene unos cuantos comentarios sueltos por ahí- y de última está hecho todo en TGF2 así que no hay extensiones ni nada que sea imposible de leer
Mini-update... a versión 0.1095; con unas pocas adiciones, y unos cuantos nuevos bugs en conjunto (Mismo link de descarga, como siempre)
Ahora las combos (Hacer una combinación válida en un solo movimiento luego de haber hecho una combinación válida), jugadas rápidas (Hacer varias combinaciones bien rápido y en poco tiempo; alla "Blitz"), y rupturas en simultáneo (Romper 2 o 3 de joyas columnas a la vez en un solo movimiento) tienen efecto en el puntaje y en el sonido. Esto abre unas cuantas posibilidades más para el modo "Desafío" que tengo planeado hacer. (Un modo en el que el objetivo es cumplir determinadas condiciones, por ejemplo, Romper 10 joyas en un solo movimiento, hacer una combo de 3, romper 15 joyas en un solo movimiento, hacer al menos 5 combinaciones rápidas, romper 10 joyas del mismo color en un solo movimiento, etc.)
Corregido un bug que hacía que el juego no eliminara las joyas alineadas en el tablero si uno no deja de mover joyas. (Digamos, hacer 5 en línea y luego entrar a mover otras joyas al azar; el puntaje sigue aumentando pero las joyas no se van del tablero, haciendo que el tablero se vuelva a comprobar y que se vuelva a detectar la combinación)
La puntuación ahora cuenta solo al momento en que la joya se rompe, salvo para la combinación horizontal que tiene un plus de puntaje.
El modo debug se sigue accediendo con F12, para recordar.
Ahora el modo debug permite cambiar el color de las joyas. Haciendo clic medio, o pulsando un número del 1 al 7 con el mouse sobre la joya, hará que cambie de color. Pulsar Shift+Numero hará que todas las joyas se pinten de un color.
En modo debug, pulsar ESC pone la puntuación a 0
En modo debug, pulsar la barra espaciadora pone el puntaje a score( "Player 1" ) pow 2
En modo debug, el + del numpad aumenta en 1 el puntaje actual
En modo debug, pulsar M pone el puntaje a 2^30 (No piensen demasiado por qué, estuve trasteando con el tema del valor máximo que puede tener el puntaje antes de caer en overflow, pero no pude terminar de descubrirlo. Asumo que es 2^31 = 2147483648 = #INF, segun MMF2, pero no pude terminar de alcanzarlo sin tener errores de por medio; tengo que encontrar una forma de circunvalar este problema, aunque no se pueda alcanzar prácticamente nunca un puntaje así.)
Romper más de 15 joyas (Lograr más de 3 combinaciones válidas en un mismo movimiento) en un solo movimiento colocará el puntaje a 0, y cortará cualquier cadena, ombo, o jugada rápida en curso. Esto es así porque en un juego normal es provisoriamente imposible armar un tablero que rompa más de 15 joyas en un solo movimiento. Si descubren que no es así, por favor notifíquenlo!!
Las joyas ahora se trasladan más rápido (Suavizar := 7); no afecta a la jugabilidad.
Coloqué un falso contador de movimientos por segundo, del cual no estoy muy seguro si está bien o no (Lo único que hace es "Every 1 second -> Set Counter 2:=(value( "Counter 2" ))*(2 pow -1)"; y luego Add 1 to counter cada vez que se hace un movimiento válido).
Espero no les moleste que los vaya floodeando cada X días con un micro-update como este; es que quiero llevarlos al tanto de todas las modificaciones que vaya haciendo al juego porque ustedes son el equipo que mejor soporte y depuración puede darme al respecto!
Sigue sin ser un "juego" porque todavía no hay objetivos; y porque todavía no tiene nada XD
a mi me gustan los updates , se ve la curva del avance del juego , probado el nuevo update , aunque vengo con la mala noticia de que no tengo la habilidad para hacer super combos o jugadas rapidas , a la justas hago una fila , pienso que a la vez de poner sonidos por movidas especiales tambien debas poner que salga un letrero cada vez que salga esto y que te digas "que maestro soy " , y no te hagas bolas con el puntaje maximo , acotalo en una cantidad y listo , pues creeme que hay cada enfermo que se toma enserio en llegar sacar millones de puntos xDD , espero ver mas novedades ! , saludos.
a mi me gustan los updates , se ve la curva del avance del juego , probado el nuevo update , aunque vengo con la mala noticia de que no tengo la habilidad para hacer super combos o jugadas rapidas , a la justas hago una fila , pienso que a la vez de poner sonidos por movidas especiales tambien debas poner que salga un letrero cada vez que salga esto y que te digas "que maestro soy " , y no te hagas bolas con el puntaje maximo , acotalo en una cantidad y listo , pues creeme que hay cada enfermo que se toma enserio en llegar sacar millones de puntos xDD , espero ver mas novedades ! , saludos.
Sí si, por supuesto, pero será recién cuando diseñe todos los carteles No quiero poner placeholders porque los placeholders son los que la mayoría de las veces terminan en el juego final XD Además, quiero que salga un cartel con un número indicando el puntaje obtenido con cada joya rota, y cosas así.
Igual el tema del puntaje es una forma de programación segura, en la uni nos inculcaron severamente que no tenemos que dejar nada librado a la suerte Y no quiero desperdiciar puntaje potencial. Podría acotarlo directamente en 2000000000 aunque perdiese 147483648 puntos máximos y cosas así, pero luego lo veo, cuando tenga tiempo de pulir el sistema XD
Ahora sí toca inventar un mecanismo de fin de juego; podría agregar un color más de joya, y que al no quedar más combinaciones disponibles (Menos de 5 joyas para cualquier color en el tablero) el juego termine. Podría hacer que inicie con 5 colores, luego aumente a 6, y luego a 7, y luego finalmente a 8. Esto sería un tanto análogo al modo "clásico" del bejeweled original
Estoy pensando en agregar joyas explosivas y cosas así. Podría hacer que al juntar 7 horizontales, la del centro se convierta en "joya explosiva" y que libere una explosión que rompa a todas las joyas del borde, en conjunto. Es probable que las agregue en el próximo update
Administrador Administrador
Reputación : 731Mensajes enviados : 1183Premios :
Tema: Re: Spring Jewels Dom Jun 30, 2013 3:33 pm
Muy bueno Patrix, no lo había visto, recién me entero gracias al video recopilatorio que hizo elpupas7. Espero que sigas con este proyecto y lo termines, si querés te lo puedo exportar a iOS o SWF cuando lo tengas listo...
Hace poco reavive un poco este proyecto porque me conseguí el exportador de android y decidí ver si podía armarme un APK sin mucho tweaking. Resulta que mantener 100 actives en pantalla, rotados, escalados, y movidos cada uno por fastloops, no son algo muy alegre para el exportador
Cuestión, luego de reducir el tamaño de pantalla a 640x400, suprimir un par de canales alfa, quitar algunos objetos sobrantes, reducir la calidad de las transformaciones, bajar el FPS a 30 (ajustando todas las variables internas para que vaya más o menos a la misma cadencia y eso).
La cuestión, el juego va bastante más lento de lo que yo desearía (para hacer que vaya más rápido, mi unica alternativa sería reducir la cantidad de actives, pero para eso tengo que cambiar todo el código de programa para depender menos de "actives detectores" y cosas así ==")
En promedio el juego corría a 20-24 fps, con drops de hasta 11 fps en las explosiones y cosas así. Mi conclusión final es que la única forma de acelerar el juego es cambiando el programa y dependiendo menos de fastloops, actives detectores, y cosas así.
Hice una prueba también a 320x200 pero no hubo absolutamente ninguna mejora en el rendimiento
[Tienes que estar registrado y conectado para ver esa imagen] Este APK no pasa más allá de ser una demo técnica- viene con un par de botones en el menu de opciones para activar el modo debug, uno para cambiar a un modo de 5x5x5; con menos joyas en el tablero (que va mucho más rápido); y uno para deshabilitar las transformaciones.
El método que usé por ahora para cambiar el sentido de rotación es un interruptor a la izquierda del tablero, pero quizá se me ocurra una idea más elegante. Lo que pasa es que el botón de alternar dirección fue la más simple de implementar (Ya tuve suficientes problemas para adaptar el juego con todo el tema de los clics y el orden de los eventos y eso )
En fin, acá el link del APK para los que lo quieran probar en sus dispositivos:
APK (2,29 MB):[Tienes que estar registrado y conectado para ver este vínculo] Fue probado en un telefono samsung con gingerbread (2.3) y en una samsung galaxy tab 3 con jellybean (4.2)
Quiero ser cuidadoso con todo el tema de los tweaks, ya que si le cambio demasiadas cosas, luego ir convirtiendo el juego de la versión de PC a la versión de Android se va a volver un trabajo de programación en paralelo que puede llegar a costarme más que programar el juego de cero -.-
Aunque programando el juego de cero podría asegurarme de que nunca hago uso y abuso de actives y fastloops
Ya de paso, estoy trabajando también en la versión de PC, haciendo algunos pequeños ajustes y detalles, a medida que me voy topando con defectos mientras le doy ajustes a la versión de android (Que luego de jugar la versión de Android, la versión de PC SI que parece HD ); y ahora que estoy trabajando desde MMF2 puedo darle unos cuantos retoques extras que hubieran sido imposibles desde TGF2 (Como canales alfa, audio en OGG, extensiones, incluso ahora hasta puedo hacer un modo de juego con puntajes online o algo por el estilo... aunque debería enfocarme más en terminar el resto del juego, o incluso en renovar los gráficos una vez más ) Por lo general suelo actualizar el EXE en dropbox muy a menudo, así que cualquier update que le haga al juego lo van a ver casi de forma inmediata
Zonacas Super-Moderador
Reputación : 558Mensajes enviados : 2871Premios :
Tema: Re: Spring Jewels Dom Mar 09, 2014 5:29 am
Si para los exportadores hay que pensar en optimizar
nada de alpha chanels y si puede ser nada de fastloops , a no ser que sean estrictamente necesarios jeje
en los actives desactivar fine detection si no es necesario que no tenga en cuenta el color transparente, y hacer crop en los actives
y si reduces la paleta de colores a 32768 en graphics mode tal vez ahorres algo de memoria
Los active en android tiene una opción de imagen compression -> color reduction que también es bueno activar
Si para los exportadores hay que pensar en optimizar
nada de alpha chanels y si puede ser nada de fastloops , a no ser que sean estrictamente necesarios jeje
en los actives desactivar fine detection si no es necesario que no tenga en cuenta el color transparente, y hacer crop en los actives
y si reduces la paleta de colores a 32768 en graphics mode tal vez ahorres algo de memoria
Los active en android tiene una opción de imagen compression -> color reduction que también es bueno activar
Todo eso ya lo tengo super probado y estoy curado de espanto Las fastloops son lo único que no pude optimizar a tope porque son algo estrictamente necesario en el programa y sacarlas implicaría volver a hacer todo el juego de cero. Pude quitar un par de bucles anidados y reemplazarlos por pases simples pero igual tengo que iterar por todas las joyas del tablero.
Por lo demás, hay cero canales alfa, cero fine detection, todos los objetos fuera de pantalla se destruyen, pero a fin de cuentas la diferencia en rendimiento es poca por esto :/ Esencialmente, quitar los canales alfa, deshabilitar objetos lejos del frame, reducir colores de imagen y comprimir sprites por lo general solo contribuyen a que el programa ocupe menos espacio en memoria ram; lo que consecuentemente acelera el rendimiento en el hipotético caso de que el juego deba usar memoria virtual (Por haber ocupado la memoria física al completo y cosas así).
El exportador deja mucho que desear a nivel rendimiento, pero calculo que no se le puede pedir mucho más por ahora. Los actives son lo que más consumen de gusto, principalmente los que se usan solamente como detectores y que a pesar de que siempre están invisibles, ocupan lugar en memoria y tienen cada uno su animación y su máscara de colisión (aún cuando fine detection está desactivado).
En resumen, es casi seguro que lo único que podría hacer en este momento para acelerar el juego es achurar todavía más el código del juego. Esto es, saltearme loops, reformular el FOR-EACH de una formula más eficiente que usar fastloops y valores alterables--
En fin, creo que por ahora quedará así~ tengo que enfocarme más en terminar la versión de PC y luego cuando esté hecho podría volver a hacer el juego cero para Android
Lo acabo de probar por lo mismo que no hay mucho movimiento , se ve bien en mi galaxy s2 , va a unos 22-23 fps , por cierto como pones los fps para android en una esquina ? , nunca he intentado hacer eso , un menu no iria mal .
Lo acabo de probar por lo mismo que no hay mucho movimiento , se ve bien en mi galaxy s2 , va a unos 22-23 fps , por cierto como pones los fps para android en una esquina ? , nunca he intentado hacer eso , un menu no iria mal .
Es tan solo un counter con un evento Always -> Set counter to "framerate"
En reposo: varía continuamente entre 22-27 fps Tapeando como un poseso: En torno al 17 (15-20)
2. Tablero pequeño
En reposo: 29-30 Tapeando: 27-30
No he notado variaciones en el fps por el cambio en el transform.
Notas:
1. No me lo dejaba instalar porque tenía otra aplicación con el mismo nombre y quería actualizarse. Seguramente no le has cambiado el nombre a la aplicación (la primera linea del exportador).
2. El debug una vez activado luego ya no se quita.
3. Si lo vas a ir actualizando, sería conveniente ponerle la versión en pantalla para referirnos a ella al hacer un test.
4. Me pareció una aplicación estupenda en su momento y en Android aún me lo parece más.
Nueva versión pues, hice unas cuantas modificaciones y las había escrito hermoso en una lista, pero como se me refrescó la página y se me borró todo el mensaje que había escrito me amargué y... bleh.
Mismo link, versión 14 creo. Estoy trabajando en la 15 en este momento, para corregir un problema de rendimiento que yo mismo acabo de causarme no se como... lejos de casa y en la netbook- es un martirio =="