Desain bergulir layar bergaya Mega Man

25

Seri Mega Man klasik NES menggunakan teknik pengguliran yang sangat spesifik sehingga saya kesulitan membungkus kepala saya dengan implementasi. Pada dasarnya, level dibagi menjadi "layar" yang semuanya berukuran sama. Beberapa layar dengan lancar saling bergeser , menciptakan ilusi bidang bermain yang lebih luas. Beberapa layar menghentikan kamera untuk menggulir hingga pemain mencapai tepi layar, saat transisi terjadi dan layar berikutnya ditampilkan. Dimungkinkan juga untuk satu layar untuk memiliki lebih dari satu transisi, misalnya ia memiliki tangga yang naik ke satu layar, tetapi Anda juga bisa berjalan maju ke layar lain.

Bagaimana transisi layar ini dapat dimodelkan?

Diagram transisi layar Mega Man

  • Layar 0 adalah layar awal, tempat pemain memulai.
  • Layar 0-3 menggulir secara horizontal dan muncul ke pemain sebagai satu bidang permainan yang berkelanjutan.
  • Karena ada transisi antara Layar 3 dan layar tetangga 4 dan 5, kamera tidak akan maju melewati tepi kanan atau atas Layar 3 kecuali pemain bergerak ke tepi masing-masing dan "mendorong" ke layar berikutnya.
  • Setelah pemain bergerak ke salah satu dari tepi transisi, input pengguna dinonaktifkan sementara dan kamera transisi ke area baru, setelah itu input pengguna dikembalikan.

  • Layar biru (Layar 5) telah menonaktifkan pengguliran horizontal sehingga hanya transisi vertikal yang dimungkinkan.

  • Layar hijau (Layar 6) memiliki transisi vertikal kembali ke Layar 5 tetapi juga memungkinkan pengguliran horizontal mulus ke Layar 7.

Sunting : Menerapkan transisi dalam hal kamar mengarahkan saya ke ini:

Diagram implementasi struktur ruang

Takik kecil dengan panah adalah wilayah tempat transisi dapat terjadi. Setiap wilayah memiliki "arah" dan terletak tepat di luar area yang terlihat di ruangan itu. Segera setelah pemain mencapai wilayah, transisi akan dimulai.

Zack Manusia
sumber
1
perilaku ini juga hadir di game 2D dalam seri Metroid.
Sparr
Ya, pada dasarnya sama saja. Perbedaannya adalah bahwa IIRC Metroid memungkinkan pengguliran vertikal vertikal di beberapa kamar / poros, sedangkan Mega Man tidak pernah memiliki pengguliran vertikal vertikal; selalu ada transisi.
Zack The Human
Saya pernah mendengar ini disebut 'pemutaran film'.
Blecki

Jawaban:

21

Kedengarannya seperti apa yang Anda butuhkan adalah konsep kamar yang bertentangan dengan layar . Layar 1-3 akan menjadi satu ruangan, mis. Kamar Anda kemudian dapat dari berbagai ukuran dan bentuk, atau bahkan terbatas pada ukuran kelipatan layar .

Kamera Anda akan mengikuti pemain melalui ruangan tertentu, hingga pemain terlalu dekat dengan perbatasan (setengah layar lebar). Ketika pemain bergerak melintasi perbatasan, dan ke ruangan lain, Anda melakukan visualisasi transisi.

Setiap kamar akan memiliki satu set titik akses, yang dipetakan untuk mengakses titik-titik ruangan lain - menciptakan titik transisi.

TreDubZedd
sumber
Terima kasih untuk sarannya. Inilah yang awalnya ingin saya lakukan tetapi saya mengalami hambatan mental ketika mencoba untuk berurusan dengan transisi. Katakan misalnya ada ruangan panjang dengan pintu masuk dari atas di ujung kiri ruangan, dan pintu keluar di atas ujung kanan. Saya kira cara untuk mengatasi ini adalah dengan memiliki daerah kecil yang ditentukan yang dapat memicu transisi, hmm?
Zack The Human
Sedikit lebih jauh: konsep "ruang" adalah apa yang saya miliki saat ini dalam permainan saya. Ukuran kamar bisa berubah-ubah, tetapi saya belum menentukan cara beralih dari kamar ke kamar.
Zack The Human
1
@Zack: Kamera mengikuti Player di sekitar. Batas-batas Kamera tidak boleh tumpang tindih dengan ruangan di luar ruangan tempat Pemain berada (yaitu jika tepi kanan viewport berlawanan dengan tepi kanan ruangan ini, kamera tidak dapat bergerak ke kanan). Jika Pemain melewati dinding ruangan ke ruangan yang berdekatan, minta Kamera melacak dengan cepat sampai aman di dalam Ruangan baru (Anda hanya perlu khawatir tentang naik / turun / kiri / kanan dalam struktur Anda untuk gerakan ini). Secara opsional, jika pemain berjalan ke dinding ruangan, ambil kendali otomatis dan paksakan mereka untuk berjalan maju sepenuhnya di dalam ruangan baru.
doppelgreener
1
@Zack: Suntingan pertanyaan Anda tampaknya berkorelasi dengan apa yang saya pikirkan. Posisi pemain hanya dapat bergerak keluar dari ruangan tertentu di lokasi transisi tersebut (antara y1 dan y2 di dinding vertikal, atau x1 dan x2 di dinding horizontal), dan segera setelah itu, Anda menempatkan posisinya di kamar berikutnya --mereka menghindari loop "bolak-balik" - dan melakukan transisi visual.
TreDubZedd
1
Anda juga dapat mempertimbangkan "perbatasan" di sekitar setiap kamar, yang umumnya merupakan area yang tidak dapat dimainkan (kecuali untuk wilayah transisi). Anda dapat mendesain kamar Anda secara grafis sedemikian rupa sehingga perbatasan yang tidak dapat dimainkan selalu berisi gambar "dinding", tetapi daerah transisi dibiarkan terbuka, seperti ruangan lainnya. Anda dapat memalsukan "tumpang tindih" transisi dengan menunggu pemain untuk menyeberang ke perbatasan (dapat diputar) sepenuhnya, dan di kamar sebelah, pastikan posisi baru tidak memotong perbatasan sama sekali.
TreDubZedd
-8

Konsep area pengguliran halus yang lebih besar yang terdiri dari potongan berukuran layar adalah artefak dari keterbatasan sumber daya yang parah pada konsol klasik, di mana keuntungan kinerja dapat diperoleh dengan menyimpan data dalam potongan ukuran tertentu (seperti satu halaman memori). Hanya ada sedikit alasan untuk menggunakan sistem seperti itu dalam permainan modern.

Sparr
sumber
7
Saya mengerti bahwa pengembang asli harus menerapkan pengguliran dengan cara ini untuk memuat ubin, sprite, dll. Saya tidak perlu menerapkan sistem berbasis layar yang dijelaskan dalam pertanyaan saya, yang saya inginkan adalah meniru kamera dan / atau gerakan gulir.
Zack The Human
4
-1 - Pembagian area bermain menjadi bidak diskontinyu mungkin tidak relevan untuk dimuat lagi, tetapi itu masih menciptakan perasaan tempat tertentu bagi pemain dan membantu mereka memetakan area secara mental.
@Seapa itu relevan dengan jawaban saya? Saya secara khusus dan langsung menangani potongan berukuran beberapa layar. Saya tidak mengatakan apa-apa tentang potongan yang terputus-putus atau tidak.
Sparr
Saya ingin memberi tahu Anda bahwa saya tidak meremehkan jawaban Anda, tetapi saya tidak benar-benar berpikir itu menjawab pertanyaan saya: 'Bagaimana transisi layar ini bisa dimodelkan?'.
Zack The Human
@ Zack, terima kasih. jika terlalu negatif, saya akan menghapusnya, tetapi jika tetap di -3 maka saya akan meninggalkannya karena saya pikir itu relevan bahkan jika bukan jawaban langsung
Sparr