메가맨 스타일 화면 스크롤 디자인


25

NES 클래식 메가맨 시리즈는 구현에 어려움을 겪고있는 매우 구체적인 스크롤 기술을 사용합니다. 기본적으로 레벨은 모두 같은 크기의 "스크린"으로 나뉩니다. 일부 화면은 서로 부드럽게 스크롤 되어 더 넓은 범위의 경기장을 환상으로 만듭니다. 일부 화면 에서는 플레이어가 화면 가장자리에 도달 할 때까지 카메라가 스크롤되지 않습니다.이 때 전환이 발생하고 다음 화면이 표시됩니다. 단일 화면에 둘 이상의 전환이있을 수도 있습니다. 예를 들어 하나의 화면으로 올라가는 사다리가 있지만 다른 화면으로 이동할 수도 있습니다.

이러한 화면 전환을 어떻게 모델링 할 수 있습니까?

메가맨 화면 전환 다이어그램

  • 화면 0은 플레이어가 시작되는 시작 화면입니다.
  • 화면 0-3은 가로로 부드럽게 스크롤되며 플레이어에게 하나의 연속 된 경기장으로 나타납니다.
  • 화면 3과 주변 화면 4와 5 사이에 전환이 있기 때문에 플레이어가 해당 가장자리로 이동하여 다음 화면으로 "밀어 내기"하지 않으면 카메라는 화면 3의 오른쪽 또는 위쪽 가장자리를지나 진행되지 않습니다.
  • 플레이어가 전환 가장자리 중 하나로 이동하면 사용자 입력이 일시적으로 비활성화되고 카메라가 새 영역으로 전환 된 후 사용자 입력이 복원됩니다.

  • 블루 스크린 (스크린 5)은 가로 스크롤을 비활성화하여 세로 전환 만 가능합니다.

  • 녹색 화면 (화면 6)은 화면 5로 다시 수직으로 전환되지만 화면 7로 수평으로 부드럽게 스크롤 할 수 있습니다.

편집 : 객실 측면에서 전환을 구현하면 다음과 같이 나옵니다.

방 구조 구현도

화살표가있는 작은 노치는 전환이 발생할 수있는 영역입니다. 각 지역은 "방향"거짓말이 바로 룸의 가시 영역의 외부. 플레이어가 지역에 도달하자마자 전환이 시작됩니다.


1
이 동작은 Metroid 시리즈의 2D 게임에도 있습니다.
Sparr

예, 본질적으로 동일합니다. 차이점은 IIRC Metroid가 일부 룸 / 샤프트에서 수직 부드러운 스크롤을 허용 한 반면 Mega Man은 수직 부드러운 스크롤을 사용하지 않았다는 것입니다. 항상 전환이 있었다.
Zack The Human

이것을 '플릭 스크리닝'이라고 들었습니다.
Blecki

답변:


21

스크린 과는 반대로 방의 개념이 필요한 것 같습니다 . 화면 1-3은 하나의 방이됩니다. 예를 들어, 방의 크기와 모양이 다를 수 있거나 화면 의 배수 크기로 제한 될 수도 있습니다 .

플레이어가 경계에 너무 가까워 질 때까지 (화면 너비의 반) 카메라는 지정된 방을 통해 플레이어를 따라갑니다. 플레이어가 경계를 넘어 다른 방으로 이동할 때 전환 시각화를 수행합니다.

각 회의실에는 전환 지점을 생성하는 다른 회의실의 액세스 지점에 매핑되는 일련의 액세스 지점이 있습니다.


제안 해 주셔서 감사합니다. 이것이 내가 처음에하고 싶었지만 전환을 처리하려고 할 때 정신적 장애를 겪었습니다. 예를 들어 방의 왼쪽 끝에있는 입구와 오른쪽 끝에있는 출구가있는 긴 방이 있다고 가정합니다. 나는 이것을 다루는 방법이 작은 영역을 정의하여 전환을 유발할 수 있다고 가정합니다.
Zack The Human

조금 더 : "룸"개념은 현재 게임에서 가지고있는 것입니다. 방의 크기는 임의 일 수 있지만 방에서 방으로 전환하는 방법을 아직 정의하지 않았습니다.
잭 인간

1
@Zack : 카메라가 플레이어를 따라갑니다. 카메라 경계는 플레이어가있는 방 외부의 방과 절대 겹치지 않아야합니다 (예 : 뷰포트의 오른쪽 가장자리가이 방의 오른쪽 가장자리와 반대이면 카메라는 오른쪽으로 이동할 수 없습니다). 플레이어가 방 벽을 통과하여 인접한 방으로 들어간 경우, 카메라가 새 방 안에 안전하게 들어갈 때까지 카메라를 빠르게 추적하십시오 (이 움직임에 대해 구조물의 위 / 아래 / 왼쪽 / 오른쪽 만 걱정하면됩니다). 선택적으로 플레이어가 방 벽까지 걸어가는 경우 자동 제어 기능을 사용하여 새 방 안에 완전히 들어가도록 강제로 걸어갑니다.
doppelgreener

1
@ 잭 : 귀하의 질문 편집은 내가 생각했던 것과 관련이있는 것으로 보입니다. 플레이어의 위치는 전환 위치 (수직 벽의 y1과 y2 또는 수평 벽의 x1과 x2 사이)에서 지정된 방 밖으로 만 이동할 수 있으며, 그 즉시 위치를 다음 방에 배치합니다. 따라서 "뒤로"루프를 피하고 시각적 전환을 수행합니다.
TreDubZedd

1
각 룸 주변의 "테두리"를 고려할 수도 있습니다. 일반적으로 전환 할 수없는 영역입니다 (전환 영역 제외). 재생 불가능한 테두리에 항상 "벽"그래픽이 포함되도록 룸을 그래픽으로 디자인 할 수 있지만 다른 룸과 같이 전환 영역이 열린 채로 있습니다. 플레이어가 (재생 가능한) 경계선을 완전히 지나갈 때까지 기다리면서 과도기적 인 "중첩"을 위조 할 수 있으며 다음 방에서 새 위치가 경계와 전혀 교차하지 않도록하십시오.
TreDubZedd

-8

화면 크기의 청크로 구성된 더 큰 부드러운 스크롤 영역의 개념은 특정 크기의 청크 (예 : 하나의 메모리 페이지)로 데이터를 유지하여 성능을 향상시킬 수있는 클래식 콘솔에서 심각한 자원 제한의 산물입니다. 현대 게임에서 그러한 시스템을 사용해야 할 이유는 거의 없습니다.


7
원래 개발자 타일, 스프라이트 등을로드하기 위해이 방법으로 스크롤을 구현 해야 한다는 것을 이해합니다 . 내 질문에 설명 된 화면 기반 시스템을 구현할 필요가 없습니다. 내가 정말로 원하는 것은 카메라 및 / 또는 또는 스크롤 이동.
Zack The Human

4
-1-불연속 덩어리로 플레이 영역을 나누는 것은 더 이상로드와 관련이 없을 수 있지만, 여전히 플레이어에게 특정 장소 느낌을주고 해당 영역을 정신적으로 매핑하는 데 도움이됩니다.

@ 조 내 답변과 어떻게 관련이 있습니까? 화면 크기가 여러 개인 청크를 구체적으로 직접 처리합니다. 나는 덩어리가 불연속 적이거나 그렇지 않다고 말하지 않았다.
Sparr

귀하의 답변을 공감하지 않았다는 사실을 알려 드리고 싶지만 실제로는 '어떻게 이러한 화면 전환을 모델링 할 수 있습니까?'라는 나의 질문에 대한 답변이라고 생각하지 않습니다.
Zack The Human

@ 잭 감사합니다. 그것이 훨씬 더 부정적이라면 그것을 지울 것이지만, -3에
머무르면
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.