Conception de défilement d'écran de style Mega Man

25

La série NES Mega Man classique utilise une technique de défilement très spécifique que j'ai du mal à comprendre. Essentiellement, le niveau est divisé en "écrans" qui ont tous la même taille. Certains écrans défilent en douceur entre eux, créant l'illusion d'un champ de jeu plus large. Certains écrans empêchent la caméra de défiler jusqu'à ce que le lecteur atteigne le bord de l'écran, moment auquel une transition se produit et l'écran suivant s'affiche. Il est également possible pour un seul écran d'avoir plus d'une transition, par exemple, il a une échelle qui monte jusqu'à un écran, mais vous pouvez également avancer vers un autre écran.

Comment modéliser ces transitions d'écran?

Diagramme de transition d'écran Mega Man

  • L'écran 0 est l'écran de démarrage, où le joueur démarre.
  • L'écran 0-3 défile horizontalement et apparaît au joueur comme un champ de jeu continu.
  • Puisqu'il y a une transition entre l'écran 3 et ses écrans voisins 4 et 5, la caméra n'avancera pas au-delà des bords droit ou supérieur de l'écran 3 à moins que le joueur ne se déplace vers ce bord respectif et ne "passe" à l'écran suivant.
  • Une fois que le joueur se déplace vers l'un des bords de transition, l'entrée utilisateur est momentanément désactivée et la caméra passe dans la nouvelle zone, après quoi l'entrée utilisateur est restaurée.

  • L'écran bleu (écran 5) a désactivé le défilement horizontal afin que seules les transitions verticales soient possibles.

  • L'écran vert (écran 6) a une transition verticale vers l'écran 5 mais permet également un défilement horizontal horizontal vers l'écran 7.

modifier : La mise en œuvre des transitions en termes de pièces m'amène à ceci:

Diagramme de mise en œuvre de la structure de la salle

Les petites encoches avec une flèche sont les régions dans lesquelles une transition peut se produire. Chaque région a une "direction" et se trouve juste à l' extérieur de la zone visible de la pièce. Dès que le joueur touche une région, une transition sera lancée.

Zack The Human
la source
1
ce comportement est également présent dans les jeux 2D de la série Metroid.
Sparr
Oui, c'est essentiellement la même chose. La différence étant que l'IIRC Metroid autorisait le défilement lisse vertical dans certaines pièces / puits, alors que Mega Man n'avait jamais de défilement lisse vertical; il y a toujours eu une transition.
Zack The Human
J'ai entendu ce qu'on appelle le "dépistage par film".
Blecki

Réponses:

21

Cela ressemble à ce dont vous avez besoin, c'est le concept de pièces par opposition aux écrans . Les écrans 1 à 3 seraient une seule pièce, par exemple Vos pièces pourraient alors avoir n'importe quelle taille et forme, ou même être limitées à la taille de multiples d'un écran .

Votre caméra suivrait le joueur à travers une pièce donnée, jusqu'à ce que le joueur se rapproche trop de la bordure (une demi-largeur d'écran). Lorsque le joueur se déplace à travers la frontière et dans une autre pièce, vous effectuez la visualisation de transition.

Chaque pièce aurait un ensemble de points d'accès, qui sont mappés aux points d'accès d'une autre pièce - créant les points de transition.

TreDubZedd
la source
Merci pour la suggestion. C'est ce que je voulais initialement faire, mais j'ai heurté un barrage mental en essayant de gérer les transitions. Disons par exemple qu'il y a une longue pièce avec une entrée par le haut à l'extrémité gauche de la pièce et une sortie en haut à l'extrémité droite. Je suppose que la façon de gérer cela serait d'avoir de petites régions définies qui peuvent déclencher la transition, hmm?
Zack The Human
Un peu plus loin: le concept de "salle" est ce que j'ai actuellement dans mon jeu. Les pièces peuvent être de taille arbitraire, mais je n'ai pas encore défini comment passer d'une pièce à l'autre.
Zack The Human
1
@Zack: la caméra suit le joueur. Les limites de la caméra ne doivent jamais chevaucher une pièce en dehors de celle dans laquelle se trouve le joueur (c'est-à-dire que si le bord droit de la fenêtre est contre le bord droit de cette pièce, la caméra ne peut pas se déplacer vers la droite). Si le joueur passe à travers un mur de pièce dans une pièce adjacente, faites suivre rapidement la caméra jusqu'à ce qu'elle soit en sécurité dans la nouvelle pièce (vous n'avez qu'à vous soucier de haut / bas / gauche / droite dans votre structure pour ce mouvement). En option, si le joueur se dirige vers le mur d'une pièce, prenez le contrôle automatique et forcez-le à avancer pour être complètement à l'intérieur de la nouvelle pièce.
doppelgreener
1
@Zack: La modification de votre question semble correspondre à ce que je pensais. La position du joueur ne peut sortir d'une pièce donnée qu'à ces endroits de transition (entre y1 et y2 sur un mur vertical, ou x1 et x2 sur un mur horizontal), et dès qu'il le fait, vous placez sa position dans la pièce suivante - évitant ainsi une boucle "aller-retour" - et effectuer la transition visuelle.
TreDubZedd
1
Vous pouvez également envisager une "bordure" autour de chaque pièce, qui est généralement une zone non jouable (sauf pour les régions de transition). Vous pouvez concevoir graphiquement vos pièces de telle sorte que la bordure non jouable contienne toujours des graphiques "mur", mais les régions de transition restent ouvertes, comme le reste de la pièce. Vous pouvez simuler un "chevauchement" de transition en attendant que le joueur passe entièrement dans la bordure (jouable), et dans la pièce suivante, assurez-vous que la nouvelle position ne coupe pas du tout la frontière.
TreDubZedd
-8

Le concept de plus grandes zones de défilement en douceur constituées de blocs de taille d'écran est un artefact de limitations de ressources sévères sur les consoles classiques, où des gains de performances pourraient être obtenus en conservant les données dans des blocs de tailles spécifiques (comme une page mémoire). Il y a très peu de raisons d'utiliser un tel système dans un jeu moderne.

Sparr
la source
7
Je comprends que les développeurs originaux devaient implémenter le défilement de cette façon afin de charger des tuiles, des sprites, etc. Je n'ai pas besoin d'implémenter le système basé sur l'écran décrit dans ma question, ce que je veux vraiment, c'est émuler la caméra et / ou mouvement de défilement.
Zack The Human
4
-1 - La division de la zone de jeu en morceaux discontinus peut ne plus être pertinente pour le chargement, mais elle crée toujours un sentiment particulier de place pour les joueurs et les aide à cartographier la zone mentalement.
@Joe, comment cela est-il pertinent pour ma réponse? J'adresse spécifiquement et directement les morceaux de taille d'écran multiple. Je n'ai rien dit au sujet des morceaux discontinus ou non.
Sparr
Je voulais vous faire savoir que je n'ai pas dévalorisé votre réponse, mais je ne pense pas vraiment qu'elle réponde à ma question: "Comment modéliser ces transitions d'écran?".
Zack The Human
@Zack merci. si elle devient beaucoup plus négative, je la supprimerai, mais si elle reste à -3, je la laisserai car je pense que c'est pertinent même si ce n'est pas une réponse directe
Sparr