Design a scorrimento dello schermo in stile Mega Man


25

La serie classica NES di Mega Man utilizza una tecnica di scorrimento molto specifica che sto facendo fatica ad avvolgere la mia testa attorno all'implementazione. In sostanza, il livello è diviso in "schermi" che hanno tutte le stesse dimensioni. Alcuni schermi si spostano agevolmente l' uno verso l'altro, creando l'illusione di campi di gioco più ampi. Alcune schermate impediscono lo scorrimento della fotocamera fino a quando il lettore non ha raggiunto il bordo dello schermo, momento in cui si verifica una transizione e viene visualizzata la schermata successiva. È anche possibile che una singola schermata abbia più di una transizione, ad esempio ha una scala che sale a una schermata, ma si può anche camminare in avanti verso un'altra schermata.

Come si possono modellare queste transizioni dello schermo?

Diagramma di transizione dello schermo di Mega Man

  • La schermata 0 è la schermata iniziale, dove inizia il giocatore.
  • La schermata 0-3 scorre in orizzontale e appare al giocatore come un campo di gioco continuo.
  • Poiché esiste una transizione tra la schermata 3 e le schermate 4 e 5 vicine, la telecamera non avanzerà oltre i bordi destro o superiore della schermata 3 a meno che il giocatore non si sposti su quel rispettivo bordo e "spinga" fino alla schermata successiva.
  • Una volta che il giocatore si sposta su uno dei bordi di transizione, l'input dell'utente viene momentaneamente disabilitato e la telecamera passa alla nuova area, dopo di che viene ripristinato l'input dell'utente.

  • La schermata blu (schermata 5) ha disabilitato lo scorrimento orizzontale in modo che siano possibili solo le transizioni verticali.

  • Lo schermo verde (schermo 6) ha una transizione verticale di nuovo allo schermo 5 ma consente anche lo scorrimento orizzontale uniforme sullo schermo 7.

Modifica : l'implementazione delle transizioni in termini di stanze mi porta a questo:

Schema di implementazione della struttura della stanza

Le piccole tacche con una freccia sono le regioni in cui può verificarsi una transizione. Ogni regione ha una "direzione" e si trova appena al di fuori dell'area visibile della stanza. Non appena il giocatore colpisce una regione, verrà avviata una transizione.


1
questo comportamento è presente anche nei giochi 2D della serie Metroid.
Sparr il

Sì, è essenzialmente lo stesso. La differenza è che IIRC Metroid ha permesso lo scorrimento regolare in alcune stanze / pozzi, mentre Mega Man non ha mai avuto uno scorrimento regolare; c'è sempre stata una transizione.
Zack The Human,

Ho sentito questo chiamato 'flick screening'.
Blecki,

Risposte:


21

Sembra che ciò di cui hai bisogno sia il concetto di stanze rispetto agli schermi . Le schermate 1-3 sarebbero una stanza, ad es. Le stanze potrebbero essere di qualsiasi dimensione e forma, o addirittura limitate alla dimensione dei multipli di uno schermo .

La tua videocamera seguirà il giocatore attraverso una determinata stanza, fino a quando il giocatore non si avvicina troppo al bordo (metà dello schermo). Quando il giocatore si sposta oltre il confine e in un'altra stanza, si esegue la visualizzazione di transizione.

Ogni stanza avrebbe una serie di punti di accesso, che sono mappati ai punti di accesso di un'altra stanza, creando i punti di transizione.


Grazie per il suggerimento Questo è quello che inizialmente volevo fare ma ho colpito un blocco mentale quando ho provato a gestire le transizioni. Supponiamo ad esempio che ci sia una lunga stanza con un'entrata dall'alto all'estremità sinistra della stanza e un'uscita nella parte superiore dell'estremità destra. Suppongo che il modo per affrontarlo sarebbe quello di avere piccole regioni definite che possano innescare la transizione, hmm?
Zack The Human,

Un po 'più in là: il concetto di "stanza" è quello che ho attualmente nel mio gioco. Le stanze possono avere dimensioni arbitrarie, ma non ho ancora definito come passare da una stanza all'altra.
Zack The Human,

1
@Zack: la videocamera segue il lettore. I limiti della videocamera non devono mai sovrapporsi a una stanza esterna a quella in cui si trova il giocatore (ovvero se il bordo destro del viewport è contro il bordo destro di questa stanza, la videocamera non può spostarsi a destra). Se il giocatore attraversa una parete della stanza in una stanza adiacente, fai in modo che la videocamera si insegua rapidamente fino a quando non è al sicuro all'interno della nuova stanza (devi solo preoccuparti di su / giù / sinistra / destra nella tua struttura per questo movimento). Opzionalmente, se il giocatore cammina su una parete della stanza, prendi il controllo automatico e costringilo a camminare in avanti per essere completamente all'interno della nuova stanza.
doppelgreener,

1
@Zack: la modifica della domanda sembra correlata a ciò che stavo pensando. La posizione del giocatore può spostarsi fuori da una determinata stanza in quelle posizioni di transizione (tra y1 e y2 su una parete verticale, o x1 e x2 su una parete orizzontale) e, non appena lo fa, si posiziona la sua posizione nella stanza successiva --thus evitando un ciclo "avanti e indietro" - ed eseguire la transizione visiva.
TreDubZedd,

1
Potresti anche considerare un "bordo" attorno a ogni stanza, che è generalmente un'area non giocabile (ad eccezione delle regioni di transizione). Puoi progettare graficamente le tue stanze in modo tale che il bordo non riproducibile contenga sempre elementi grafici "a parete", ma le aree di transizione vengono lasciate aperte, come il resto della stanza. Puoi simulare una "sovrapposizione" di transizione aspettando che il giocatore attraversi completamente il bordo (giocabile) e, nella stanza successiva, assicurati che la nuova posizione non intersechi affatto il bordo.
TreDubZedd,

-8

Il concetto di aree di scorrimento più ampie e più ampie costituite da blocchi di dimensioni dello schermo è un artefatto di gravi limitazioni delle risorse sulle console classiche, in cui è possibile ottenere miglioramenti delle prestazioni mantenendo i dati in blocchi di dimensioni specifiche (come una pagina di memoria). Ci sono pochissime ragioni per usare un sistema del genere in un gioco moderno.


7
Capisco che gli sviluppatori originali dovevano implementare lo scorrimento in questo modo per caricare tessere, sprite, ecc. Non ho bisogno di implementare il sistema basato sullo schermo descritto nella mia domanda, quello che voglio davvero è emulare la videocamera e / o movimento a scorrimento.
Zack The Human,

4
-1 - La divisione dell'area di gioco in blocchi discontinui potrebbe non essere più rilevante per il caricamento, ma crea comunque una particolare sensazione di spazio per i giocatori e li aiuta a mappare l'area mentalmente.

@Joe come è rilevante per la mia risposta? Mi rivolgo in modo specifico e diretto ai blocchi di dimensioni multiple dello schermo. Non ho detto nulla sul fatto che i pezzi fossero discontinui o meno.
Sparr,

Volevo farti sapere che non ho votato in senso negativo sulla tua risposta, ma non credo proprio che risponda alla mia domanda: "Come si possono modellare queste transizioni dello schermo?".
Zack The Human,

@Zack grazie. se diventa troppo più negativo lo eliminerò, ma se rimane a -3, allora lo lascerò poiché penso che sia pertinente anche se non una risposta diretta
Sparr
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.