Diseño de desplazamiento de pantalla estilo Mega Man

25

La serie clásica de Mega Man de NES utiliza una técnica de desplazamiento muy específica que me cuesta trabajo implementar. Esencialmente, el nivel se divide en "pantallas" que son todas del mismo tamaño. Algunas de las pantallas desplazan suavemente entre sí, creando la ilusión de campos de juego más amplios. Algunas de las pantallas impiden que la cámara se desplace hasta que el jugador haya alcanzado el borde de la pantalla, momento en el que se produce una transición y se muestra la siguiente pantalla. También es posible que una sola pantalla tenga más de una transición, por ejemplo, tiene una escalera que sube a una pantalla, pero también puede caminar hacia otra pantalla.

¿Cómo se pueden modelar estas transiciones de pantalla?

Diagrama de transición de pantalla de Mega Man

  • La pantalla 0 es la pantalla de inicio, donde comienza el jugador.
  • La pantalla 0-3 tiene un desplazamiento horizontal suave y aparece para el jugador como un campo de juego continuo.
  • Como hay una transición entre la pantalla 3 y las pantallas vecinas 4 y 5, la cámara no avanzará más allá de los bordes derecho o superior de la pantalla 3 a menos que el jugador se mueva a ese borde respectivo y "empuje" a la siguiente pantalla.
  • Una vez que el jugador se mueve a cualquiera de los bordes de transición, la entrada del usuario se desactiva momentáneamente y la cámara pasa a la nueva área, después de lo cual se restaura la entrada del usuario.

  • La pantalla azul (Pantalla 5) ha deshabilitado el desplazamiento horizontal para que solo sean posibles las transiciones verticales.

  • La pantalla verde (Pantalla 6) tiene una transición vertical de regreso a la Pantalla 5, pero también permite un desplazamiento horizontal suave hacia la Pantalla 7.

Editar : Implementar las transiciones en términos de habitaciones me lleva a esto:

Diagrama de implementación de estructura de sala

Las pequeñas muescas con una flecha son las regiones en las que puede ocurrir una transición. Cada región tiene una "dirección" y se encuentra justo fuera del área visible de la habitación. Tan pronto como el jugador llegue a una región, se iniciará una transición.

Zack The Human
fuente
1
Este comportamiento también está presente en los juegos 2D de la serie Metroid.
Sparr
Sí, es esencialmente lo mismo. La diferencia es que el IIRC Metroid permitió el desplazamiento suave vertical en algunas habitaciones / pozos, mientras que Mega Man nunca tuvo un desplazamiento suave vertical; siempre hubo una transición.
Zack The Human
He escuchado esto llamado 'proyección de película'.
Blecki

Respuestas:

21

Parece que lo que necesita es el concepto de habitaciones en lugar de pantallas . Las pantallas 1-3 serían una habitación, por ejemplo, Sus habitaciones podrían tener cualquier tamaño y forma, o incluso restringirse al tamaño de los múltiplos de una pantalla .

Su cámara seguiría al jugador a través de una habitación determinada, hasta que el jugador se acerque demasiado al borde (medio ancho de pantalla). Cuando el jugador cruza el borde y entra a otra habitación, realiza la visualización de transición.

Cada habitación tendría un conjunto de puntos de acceso, que se asignan a los puntos de acceso de otra habitación, creando los puntos de transición.

TreDubZedd
fuente
Gracias por la sugerencia. Esto es lo que inicialmente quería hacer, pero me encontré con un obstáculo mental al tratar de lidiar con las transiciones. Digamos, por ejemplo, que hay una sala larga con una entrada desde la parte superior en el extremo izquierdo de la sala y una salida en la parte superior del extremo derecho. Supongo que la forma de lidiar con esto sería tener pequeñas regiones definidas que puedan desencadenar la transición, ¿hmm?
Zack The Human
Un poco más allá: el concepto de "sala" es lo que tengo actualmente en mi juego. Las habitaciones pueden tener un tamaño arbitrario, pero aún no he definido cómo hacer la transición de una habitación a otra.
Zack The Human
1
@Zack: la cámara sigue al jugador. Los límites de la cámara nunca deben superponerse a una habitación fuera de la que está el jugador (es decir, si el borde derecho de la ventana de visualización está contra el borde derecho de esta habitación, la cámara no puede moverse hacia la derecha). Si el jugador pasa a través de la pared de una habitación hacia una habitación adyacente, haga que la cámara rastree rápidamente hasta que esté segura dentro de la nueva habitación (solo tiene que preocuparse por su movimiento hacia arriba / abajo / izquierda / derecha). Opcionalmente, si el jugador camina hacia la pared de una habitación, tome el control automático y obligarlo a caminar hacia adelante para estar completamente dentro de la nueva habitación.
doppelgreener
1
@Zack: la edición de su pregunta parece correlacionarse con lo que estaba pensando. La posición del jugador solo puede moverse fuera de una habitación determinada en esas ubicaciones de transición (entre y1 e y2 en una pared vertical, o x1 y x2 en una pared horizontal), y tan pronto como lo hace, coloca su posición en la habitación siguiente - para evitar un bucle "de ida y vuelta" - y realizar la transición visual.
TreDubZedd
1
También puede considerar un "borde" alrededor de cada habitación, que generalmente es un área no jugable (a excepción de las regiones de transición). Puede diseñar gráficamente sus habitaciones de modo que el borde no jugable siempre contenga gráficos de "pared", pero las regiones de transición se dejan abiertas, como el resto de la habitación. Puede simular una "superposición" de transición al esperar que el jugador cruce por completo el borde (jugable) y, en la siguiente habitación, asegúrese de que la nueva posición no cruce el borde en absoluto.
TreDubZedd
-8

El concepto de áreas de desplazamiento más grandes y lisas formadas por fragmentos del tamaño de una pantalla es un artefacto de severas limitaciones de recursos en las consolas clásicas, donde se pueden obtener ganancias de rendimiento al mantener los datos en fragmentos de tamaños específicos (como una página de memoria). Hay muy pocas razones para usar dicho sistema en un juego moderno.

Sparr
fuente
77
Entiendo que los desarrolladores originales tuvieron que implementar el desplazamiento de esta manera para cargar mosaicos, sprites, etc. No necesito implementar el sistema basado en pantalla descrito en mi pregunta, lo que realmente quiero es emular la cámara y / o movimiento de desplazamiento.
Zack The Human
44
-1 - La división del área de juego en trozos discontinuos puede que ya no sea relevante para cargar, pero aún crea una sensación particular de lugar para los jugadores y los ayuda a mapear el área mentalmente.
@ Joe, ¿cómo es eso relevante para mi respuesta? Me dirijo específica y directamente a los fragmentos que tienen múltiples tamaños de pantalla. No dije nada acerca de que los trozos fueran discontinuos o no.
Sparr
Quería hacerle saber que no rechacé su respuesta, pero realmente no creo que responda a mi pregunta: "¿Cómo se pueden modelar estas transiciones de pantalla?".
Zack The Human
@Zack gracias. si se vuelve mucho más negativo, lo eliminaré, pero si permanece en -3, lo dejaré, ya que creo que es pertinente, incluso si no es una respuesta directa
Sparr