N1RA: Hilo desarrollo (Mega Drive)

1, 2, 3
El juego emula 4 planos superpuestos, con un aspecto visual increíble.

Imagen
BoMbErLiNk escribió:Esto ha costado lo suyo:


- Se añaden reflejos en el agua, la clonación de sprites es total, tengo que bloquear a mano que es lo que refleja, ya que la función intentaría reflejar el HUD o lo que hay con prioridad muy por delante de la pantalla (como brillos), el juego va sobrado en la gestión de sprites, y duplicarlos no le supone esfuerzo

- Se utiliza una técnica similar a la del Sonic 1 para cambiar los colores a mitad de pantalla, es provisional y tengo que incorporar la idea superior del Sonic 3, me estaba tomando algo de tiempo y quería ver si el efecto era posible, en el HSYNC cambiar 4 colores por ejemplo sería seguro, pero tratar de cambiar muchos más es lo que causa artefactos en consola real (o Blastem)

La función es en C, pero la preparación del VDP y la inyección de colores en ASM

1) Se intentó crear la semi transparencia con Shadow & Highlight, pero tiene demasiadas limitaciones, gasta 1 plano, si un sprite queda por debajo del plano afecta a todos los colores menos el 15, etc, sirve para otras cosas, pero no lo veo para reflejos de agua

Mickey Mania lo usa en agua (sin reflejos) pero de forma muy inteligente, el efecto no reacciona a cambios de paletas, ni fundidos de pantalla, así que cuando arranca el nivel, no hay agua y va llenándose poco a poco, luego cuando permite salir del pozo al desplazarse por el nivel queda atrás y el efecto puede desactivarse de forma segura

2) Iba a mantener la lluvia, pero por cuestiones de diseño la eliminé de la sala, para crear una atmósfera "zen" más calmada, con agua cristalina

3) La cuarta paleta no se cambia, es una ilusión, me sobraban colores así que el oscurecimiento viene dibujado en el arte

- Sin ser una demo técnica, gracias a los distintos efectos se consigue una media de más de 80 colores en pantalla:
Imagen

- El viento desplaza al jugador cuando salta y entorpece el vuelo de los Cherry, mece los arboles para indicar cuando está activo, la zona esta conectada a un bloque superior que es de habilidad, caemos en esta subsección si no conseguimos pasar, no soy muy de penalizar al jugador por fallar en algo, las salas están muy juntas para volver a intentarlo de forma inmediata

- El efecto de sol usa Highlight, no hay uno, son 2 soles! Es un poco complicado de interpretar, el movimiento de los destellos mejorará, ahora mismo colisiona con las nubes, con la montaña y con el plano principal para mostrarse o no

El escenario no esta completo, le falta detalle, se irá puliendo.


Que barbaridad y que maravilla, gracias por la dedicación y el trabajo, seguid así y muchos ánimos!

Saludos.
BoMbErLiNk escribió:Esto ha costado lo suyo:


- Se añaden reflejos en el agua, la clonación de sprites es total, tengo que bloquear a mano que es lo que refleja, ya que la función intentaría reflejar el HUD o lo que hay con prioridad muy por delante de la pantalla (como brillos), el juego va sobrado en la gestión de sprites, y duplicarlos no le supone esfuerzo

- Se utiliza una técnica similar a la del Sonic 1 para cambiar los colores a mitad de pantalla, es provisional y tengo que incorporar la idea superior del Sonic 3, me estaba tomando algo de tiempo y quería ver si el efecto era posible, en el HSYNC cambiar 4 colores por ejemplo sería seguro, pero tratar de cambiar muchos más es lo que causa artefactos en consola real (o Blastem)

La función es en C, pero la preparación del VDP y la inyección de colores en ASM

1) Se intentó crear la semi transparencia con Shadow & Highlight, pero tiene demasiadas limitaciones, gasta 1 plano, si un sprite queda por debajo del plano afecta a todos los colores menos el 15, etc, sirve para otras cosas, pero no lo veo para reflejos de agua

Mickey Mania lo usa en agua (sin reflejos) pero de forma muy inteligente, el efecto no reacciona a cambios de paletas, ni fundidos de pantalla, así que cuando arranca el nivel, no hay agua y va llenándose poco a poco, luego cuando permite salir del pozo al desplazarse por el nivel queda atrás y el efecto puede desactivarse de forma segura

2) Iba a mantener la lluvia, pero por cuestiones de diseño la eliminé de la sala, para crear una atmósfera "zen" más calmada, con agua cristalina

3) La cuarta paleta no se cambia, es una ilusión, me sobraban colores así que el oscurecimiento viene dibujado en el arte

- Sin ser una demo técnica, gracias a los distintos efectos se consigue una media de más de 80 colores en pantalla:
Imagen

- El viento desplaza al jugador cuando salta y entorpece el vuelo de los Cherry, mece los arboles para indicar cuando está activo, la zona esta conectada a un bloque superior que es de habilidad, caemos en esta subsección si no conseguimos pasar, no soy muy de penalizar al jugador por fallar en algo, las salas están muy juntas para volver a intentarlo de forma inmediata

- El efecto de sol usa Highlight, no hay uno, son 2 soles! Es un poco complicado de interpretar, el movimiento de los destellos mejorará, ahora mismo colisiona con las nubes, con la montaña y con el plano principal para mostrarse o no

El escenario no esta completo, le falta detalle, se irá puliendo.


¡Anda que no vais sobrados ni nada!

Que si reflejos, efectos de lente de luz, efectos de viento...

Sobre este último tengo una duda:

Para realizar el efecto de viento, además de las hojas que salen volando hacia el cielo, he visto que se sacuden tanto los árboles como los arbustos.

En la anterior respuesta, se ve que el árbol y la montaña están compuestos por el mismo plano, pero para simular viento parece que hay un desplazamiento de línea en la copa del árbol y arbustos pero que no afecta a la propia montaña... Sabiendo que el line scrolling afecta a toda la capa pero en este caso la montaña no está afectada...
¿Es posible que la copa del árbol esté construida con sprites y movéis los bloques para el efecto?
Imagen

Es por simple curiosidad genuina!

¡Muy buen trabajo y seguid así!
@M68K
Pues tuve que recomponer la escena, el escenario tal y como lo monté en la sala de test no servía para movimiento. (en el plano A chocarían escenario y montaña a distinta velocidad)

Así que la montaña y los soles son sprites, al gestor de objetos le puse control de velocidad relativa al scroll, actúan como capas.

Buena observación en lo del viento, se usa desplazamiento por línea para simular movimiento, ya que árbol y arbusto quedan a la misma altura y no hay otras cosas obstruyendo el mapa [oki]

Otro detalle: es una sala de 1024 de ancho cíclica, a mitad de sala se vuelve a repetir, al principio iba a ser una limitación ya que no daba por qué la SGDK estropeaba el efecto de HSYNC al cargar nuevos tiles (cargué el mapa entero en la memoria interna de cada plano, 512 de ancho), luego encontré el motivo: la SGDK cambia el auto incremento del registro de la VDP al mandar tiles (en HSYNC se pone a 2, para mandar colores en bloques de 32bits y no debe colisionar con eso), así que bueno, la sala se quedó de esa forma en este vídeo, pero podría ser totalmente distinta y más detallada.

Hay una separación intencionada de 8 pixel entre el reflejo y el escenario normal, eso es para darle tiempo al HSYNC de ir cambiando los colores en cuanto aplique el método de Sonic 3, el problema de implementarlo no es el concepto, sino que nuevamente la SGDK hace "algo" y tengo que investigar porque me rompe los tiempos, pero de momento eso queda así, anotado, para avanzar en otros apartados.

Ahora mismo estoy corrigiendo un estropicio, el HSYNC obliga en el VBLANK a restaurar todas las paletas a cada frame, y eso entra en conflicto con otras llamadas a paletas, al final entre cambios de color de armadura, los fundidos, los colores con rotación del escenario y el agua oscurecida hacen necesario un "mezclador" único de tiempo preciso.

Para el siguiente post: Me gustaría enseñar un nuevo escenario con otro concepto de jugabilidad, y para noviembre moverme a darle caña a los escenarios.
@BoMbErLiNk

¡Gracias!

Es justo lo contrario a lo que deduje, árboles y arbustos a misma altura = Line scrolling efectivo mientras la montaña entonces se genera con sprites para simular esa profundidad extra. Me ha gustado la solución que habéis dado al movimiento de la maleza porque ahorráis VRAM/DMA al no tener que cargar nuevos tiles, y un line scrolling sale prácticamente gratis a nivel de CPU.

No sé si estás teniendo problemas usando la función PAL_setColors de SGDK, se come demasiado tiempo con las comprobaciones y me obligaba a escribir una rutina personalizada en ASM más eficiente. Que te cambie o reinicie la CRAM cuando al principio del frame es un fastidio si por ejemplo, el cambio de color de la armadura tiene que durar más de un frame.

Sea como fuese, lo que vais mostrando ya se ve con unos resultados muy buenos. Aunque entiendo esa búsqueda de rascar ciclos de donde sea.
104 respuestas
1, 2, 3