1 poin oleh GN⁺ 2023-07-16 | 1 komentar | Bagikan ke WhatsApp
  • Menjelaskan strategi 0.5 A press untuk mendapatkan bintang Watch for Rolling Rocks di Super Mario 64 tanpa input A baru, hanya dengan mempertahankan A hold yang sudah berlanjut sejak sebelum mulai
  • Input A dibagi menjadi press, hold, dan release; jika A yang ditekan di bintang sebelumnya terus ditahan hingga dibawa masuk, itu bisa dihitung sebagai 0.5 untuk satu bintang, dan 0 input tambahan untuk keseluruhan run
  • Inti strateginya adalah memindahkan posisi home Scuttlebug dan mengangkatnya ke atas dengan memanfaatkan batas aktivasi ruangan, lalu memperoleh ketinggian platform bintang melalui misalignment dan pantulan
  • Kecepatan horizontal yang dibutuhkan dibuat dengan Hyper Speed Walking yang menggabungkan shallow water, lereng curam, gate, dan penilaian out-of-bounds, dan akumulasi kecepatannya memakan waktu sekitar 12 jam
  • Rute perpindahan PU dirancang agar kembali ke main map dan bisa mendekati elevator serta platform bintang dengan menyesuaikan konversi short pada floor collision, syncing speed per lereng, dan alignment QPU

Standar 0.5 A press

  • A press bukan satu input sesaat, melainkan dibagi menjadi tiga tahap: press, hold, dan release
    • press digunakan untuk membuat Mario melompat
    • hold dapat dipakai untuk small kick, swim di air, jatuh lambat saat twirl, dan jatuh lambat saat memakai Wing Cap
    • release saat ini tidak punya contoh penggunaan yang berguna atau penting
  • 0.5 A press berarti tidak menekan A baru, melainkan terus mempertahankan A yang sudah ditekan sebelumnya
  • Contoh Over the Rainbow menunjukkan cara perhitungan ini
    • untuk mencapai cannon platform, cukup dengan menahan A
    • tembakan cannon pertama dan tembakan cannon kedua masing-masing memerlukan satu A press
    • jika hanya melihat satu bintang, totalnya dihitung 3 A presses
    • dalam keseluruhan run A Button Challenge, A press sebelumnya yang dipakai untuk masuk course bisa terus ditahan untuk memenuhi kebutuhan hold pertama
    • karena itu, Over the Rainbow dihitung sebagai 2.5 A presses untuk satu bintang, dan 2 A presses tambahan untuk keseluruhan run
  • Strategi Watch for Rolling Rocks juga dimulai dengan kondisi A sudah ditekan saat level mulai, dan dalam keseluruhan run input ini dihitung sebagai kelanjutan dari A press sebelumnya

Memindahkan dan menaikkan Scuttlebug

  • Scuttlebug Transportation memanfaatkan sifat bahwa posisi home Scuttlebug diperbarui saat bertabrakan dengan Mario
    • Scuttlebug berpatroli dalam radius tertentu di sekitar home
    • saat Mario masuk ke radius itu, Scuttlebug melakukan lunging attack
    • jika Scuttlebug menabrak Mario, posisi Scuttlebug saat tabrakan menjadi home baru
  • Ada batasan dalam pemindahan
    • Scuttlebug tidak bisa keluar dari native room dan akan tersangkut di door
    • jika ia berjalan ke wall dari posisi yang terlalu jauh di bawah home saat ini, ia bisa menghilang, jadi itu harus dihindari selama pemindahan
  • Tujuannya adalah memindahkan Scuttlebug beserta home-nya ke dekat corner di bawah bintang Watch for Rolling Rocks
  • Scuttlebug Raising mengangkat Scuttlebug ke atas dengan memanfaatkan rentang aktivasi rolling rocks room
    • room dan object di dalamnya hanya aktif saat Mario berada di dalam rolling rocks room atau di small yellow region di luar door
    • jika Mario berada di luar area itu, room terlihat hitam dan object menjadi invisible serta tidak bergerak
    • meski dalam keadaan nonaktif, Scuttlebug tetap bisa berputar ke arah Mario dan mulai melakukan lunge
    • setelah Mario masuk ke yellow region dan mengaktifkan Scuttlebug, lalu keluar lagi dari yellow region tepat saat Scuttlebug mencapai puncak trajektorinya, Scuttlebug tidak jatuh dan berhenti di ketinggian itu
    • proses ini diulang untuk terus mengangkat Scuttlebug lebih tinggi
  • Radius deteksi Scuttlebug bukan sphere melainkan cylinder yang memanjang tak terbatas ke atas dan bawah, jadi lunge tetap bisa dipancing setinggi apa pun posisinya
  • Dalam strategi ini, Scuttlebug dibuat melakukan lunge ke arah home sehingga berhenti tepat di atas corner
    • jika Mario mengaktifkannya dari dalam radius Scuttlebug, Scuttlebug akan melakukan lunge ke arah Mario dan bisa bergerak ke arah door
    • cara itu lebih cepat, tetapi tidak dipakai di strategi ini karena yang dibutuhkan adalah posisi dekat corner

Misalignment dan mendapatkan ketinggian

  • Di bagian atas corner ada sifat yang disebut misalignment
    • dalam kode game, floor collision checking dan wall collision checking diproses dengan cara berbeda
    • akibatnya, di area 1x1 unit Mario bisa masuk ke bawah floor tanpa terdorong oleh wall
  • Jika Mario berada kurang dari 79 units di bawah floor, ia akan di-snap ke atas floor
  • Pada akhirnya, pantulan dari Scuttlebug dan ground pound dikombinasikan dengan misalignment untuk mendapatkan ketinggian yang cukup agar bisa naik ke platform Watch for Rolling Rocks

Hyper Speed Walking dan perpindahan Parallel Universe

  • Kecepatan yang dibutuhkan dibuat dengan Hyper Speed Walking
    • di lereng yang terlalu curam, biasanya Mario tidak bisa berdiri dan akan tergelincir
    • pada underwater portion dari lereng yang terendam shallow water, jika mencoba berlari uphill, Mario akan berlari mundur dan kecepatannya terus bertambah tanpa batas atas
  • Biasanya sulit menumpuk banyak kecepatan karena Mario akan jatuh ke air atau lerengnya habis, tetapi dengan memanfaatkan gate dan out-of-bounds, kecepatan bisa ditumpuk di tempat
    • bagian bawah gate diperlakukan sebagai ceiling
    • jika Mario mencoba bergerak terlalu dekat tepat di bawah ceiling, game akan menolak perpindahan posisinya
    • setelah mendapatkan sejumlah kecepatan, jika arahnya diputar sehingga intended next position melewati wall dan menjadi out-of-bounds, game tidak menaruh Mario di out-of-bounds dan membuatnya tetap di tempat
    • karena out-of-bounds terus berlanjut, kecepatan bisa ditumpuk lebih lama daripada dengan gate ceiling saja
  • Dalam strategi ini, gate dibuka, sebagian kecepatan dibangun dengan gate ceiling, lalu angle diputar ke arah out-of-bounds untuk menumpuk sisa kecepatannya
  • Akumulasi kecepatan ini memakan waktu sekitar 12 jam

PU, QPU, dan syncing speed

  • Position Mario adalah floating point number, tetapi pada floor triangle collision test nilainya dikonversi menjadi short
    • fractional portion di-truncate
    • angka yang terlalu besar atau terlalu kecil dimasukkan ke rentang -32768 sampai 32767 dengan modulo operator
  • Karena itu, walaupun posisi nyata berada di luar rentang tersebut, posisi yang dipakai untuk floor detection akan ter-loop kembali ke box asal
    • meskipun tidak ada geometri di posisi nyata Mario, jika posisi floor detection berada di atas geometri, game menganggap Mario sedang berada di atas tanah
    • area yang berfungsi seperti salinan map asli ini disebut Parallel Universe, atau PU
  • Di PU tidak ada graphics, object seperti elevator atau item block, enemy, coin, star, maupun wall
  • Pada konsol N64, camera bisa menyebabkan crash jika ikut masuk ke PU, jadi strategi ini menahan camera tetap di main map untuk menghindari crash
  • Game memeriksa apakah Mario berada di atas floor pada setiap quarter step dari pergerakannya
    • perpindahan PU yang sederhana mengharuskan lompatan 4 PU sekaligus agar setiap quarter step tetap berada di atas geometri
    • jarak 4 PU ini disebut QPU
  • Actual speed dan de facto speed yang dipakai untuk perpindahan tidak sama
    • de facto speed ditentukan sebagai sebagian dari actual speed berdasarkan steepness lereng
    • makin curam lerengnya, makin kecil de facto speed untuk speed yang sama
  • Speed yang membuat jarak QPU dan quarter step pas saling cocok disebut syncing speed
    • syncing speed paling rendah adalah speed yang memindahkan tepat 1 QPU
    • kelipatannya juga menjadi syncing speed, sehingga beberapa QPU bisa ditempuh sekaligus
    • setiap lereng punya himpunan syncing speed yang berbeda
  • Dalam contoh perpindahan PU Secret Aquarium, beberapa syncing speed dari lereng berbeda harus dipenuhi secara berurutan; butuh sekitar 12 jam untuk mencapai syncing speed pertama, dan sekitar 25 jam untuk mencapai syncing speed kedua
  • Rute Watch for Rolling Rocks dirancang agar bisa dilakukan dengan akumulasi speed 12 jam alih-alih 25 jam
    • path yang naik dari lake terdiri dari puluhan floor triangle dengan lereng berbeda-beda
    • dari sana dipilih enam triangle, T1 sampai T6, yang steepness-nya strictly decreasing
    • tinggi keenam triangle itu menutupi seluruh vertical distance yang dibutuhkan dari bawah ke atas tanpa celah
    • dengan memakai triangle-triangle ini secara berurutan, blueprint rute diselesaikan hanya dengan first syncing speed dari initial slope

Rute akhir dan mendapatkan bintang

  • Rute dasarnya dimulai dari lereng Hyper Speed Walking, naik mengikuti path di atas lake, menaiki 2 elevator, lalu menuju platform Amazing Emergency Exit, sebelum diluncurkan ke arah platform Watch for Rolling Rocks
  • Selama perpindahan PU, jika speed sedikit di bawah syncing speed, Mario bergerak relative forward; jika sedikit di atasnya, relative backward
  • Bahkan penyimpangan angle kecil dari cardinal direction pun bisa sangat memperbesar sideways movement karena jarak QPU
  • Pengelolaan QPU alignment sangat penting
    • grid yang merupakan kelipatan 4 PU disebut QPU grid
    • jika Mario berada di atas grid ini, berarti ia dalam keadaan QPU aligned
    • perpindahan PU positif lain memerlukan kondisi khusus seperti out-of-bounds atau pergantian lereng
    • jika menjadi QPU misaligned, bisa sulit untuk kembali ke main map
  • Di lake path, pada masing-masing triangle T1 sampai T6, speed diturunkan hingga mendekati syncing speed lereng tersebut, lalu Mario bergerak uphill dan berpindah ke triangle berikutnya
    • setiap perpindahan antar-triangle mengubah QPU alignment, tetapi rutenya direncanakan agar perubahan-perubahan itu saling meniadakan di akhir sehingga kembali menjadi QPU aligned
    • di triangle keenam, Mario mendekati main map dengan pola zigzag
  • Karena di PU tidak ada object, elevator baru bisa dipakai setelah kembali ke main map
  • A terus ditahan agar B bisa ditekan untuk melakukan small kick
    • tanpa kick, Mario akan menembus elevator
    • dengan kick, Mario bisa menaiki elevator dan mendapatkan ketinggian
  • Pergerakan terakhir berupa melakukan kick di platform Amazing Emergency Exit lalu memutar arah untuk meluncur ke arah Scuttlebug
    • perpindahan ini menghasilkan displacement 10 PU ke kanan dan 3 PU ke bawah, jadi posisi sebelumnya harus disetel 3 PU lebih atas dan 10 PU lebih ke kiri agar berakhir di main map
    • pada saat yang sama, posisi relatif di map juga disesuaikan agar pergerakan terakhir itu memungkinkan
  • Scuttlebug akan aktif begitu memasuki versi PU dari room itu, dan karena ia harus dicapai sebelum jatuh terlalu jauh, final approach hanya memberi kelonggaran beberapa frame
  • Pada akhirnya, pantulan Scuttlebug dan ground pound pada misalignment memberi ketinggian yang cukup untuk naik ke platform Watch for Rolling Rocks, dan bintangnya didapat dengan 0.5 A presses

1 komentar

 
GN⁺ 2023-07-16
Komentar Hacker News
  • Rasanya ini adalah video YouTube yang sempurna
    Di latarnya ada soundtrack Mario yang keren dan cuplikan gameplay, grafik buatan sendiri memperlihatkan secara visual apa yang sedang terjadi, dan narasi suara menjelaskan apa yang tampil di layar
    Video ini juga merujuk ke video YouTube lain dan komentar-komentarnya, sangat rinci dan berpengetahuan luas, tapi tidak mencoba menjual apa pun
    Terasa dibuat karena kecintaan, bukan demi jumlah penayangan, jadi buat saya ini adalah puncak YouTube

    • Video HealthyGamerGG juga terasa mirip
      Sangat rinci dan berpengetahuan luas, melintasi neurokimia/biokimia, psikologi, game, perilaku manusia, budaya dan agama, sampai bagaimana semua itu berubah seiring waktu
      Buat saya, itulah puncak YouTube
    • Mungkin akan lebih mudah dipahami kalau dikatakan, “mulai level sambil menahan tombol A, lalu setelah itu jangan menekan tombol A lagi”
    • Harus bersyukur kalau tidak sensitif terhadap musik latar
      Saya susah sekali tahan dengan musik latar
  • Kedalaman pengetahuan dan kemampuan analisis pannenkoek benar-benar menakjubkan
    Setelah menonton video-video SM64, standar saya jadi naik, sampai sangat sulit menemukan tingkat ketelitian dan kualitas produksi yang setara di game lain
    Yang paling mendekati sejauh ini adalah video tentang para speedrunner yang berhasil menaklukkan bilangan acak pada sebuah puzzle di Wind Waker
    https://youtu.be/1hs451PfFzQ

  • Ini adalah pornografi nerd murni dan benar-benar bagus
    Penjelasan seperti bagaimana deteksi tabrakan game sebenarnya menerima nilai floating-point lalu mengubahnya menjadi short terasa anehnya sangat memuaskan buat otak
    Fakta bahwa game seperti SM64 masih terus memikat dan membuat orang terpaku puluhan tahun setelah rilis mengatakan banyak hal
    Rasanya makin sedikit game arus utama masa kini yang memunculkan tingkat gairah pemain seperti itu

  • Sejarah lengkap A Button Challenge
    https://www.youtube.com/watch?v=yXbJe-rUNP8
    Videonya lebih dari 5 jam, jadi saya biasa memutarnya di latar atau menontonnya untuk mengisi waktu
    Jumlah pengetahuan dan tingkat eksploitasi bug yang ditunjukkan orang-orang ini benar-benar tidak masuk akal

    • Saya baru-baru ini menontonnya sampai habis, dan sangat merekomendasikannya kepada siapa pun yang punya sedikit saja ketertarikan
      Beberapa hal yang ditemukan benar-benar gila, dan mengejutkan betapa banyak elemen yang nyaris saja bekerja
      Bismuth juga memang YouTuber berkualitas tinggi secara umum
  • Saya benar-benar pecah di bagian “menumpuk kecepatan selama 12 jam
    https://youtu.be/kpk2tdsPh0A?t=640
    Alur pikirnya benar-benar jernih
    Menyenangkan mengetahui ada begitu banyak orang super pintar di internet

    • Kalau dilihat dari sisi lain, ini juga terasa agak seperti pemborosan
      Tentu saja tiap orang bebas menggunakan otaknya sesuka hati, tetapi mendedikasikan diri sedalam ini pada bug yang sangat rumit di game berusia sekitar 30 tahun, lalu membuktikan bahwa aksi yang mustahil dilakukan tanpa bantuan alat itu secara teknis mungkin, memang terlihat sangat aneh
      Video penjelasannya luar biasa, tetapi tujuan dasarnya terasa tidak masuk akal bagi saya
  • Kalau Anda suka cerita tentang alam semesta paralel, saya sangat merekomendasikan speedrun SM64 1-Key https://youtube.com/watch?v=iUt840BUOYA, lalu lanjutkan dengan penjelasan dari Bismuth https://youtube.com/watch?v=wjge1bVobN0
    Ini pencapaian teknis yang benar-benar menakjubkan dan sangat bertumpu pada riset pannenkoek2012

    • Menarik melihat istilah-istilah yang diciptakan para gamer untuk menjelaskan fenomena yang pada akhirnya cuma bug game
      Alam semesta paralel dan lore di sekitarnya semuanya muncul karena integer 16-bit mengalami overflow di dalam kode pemeriksaan lantai
      Mario 64 biasanya menyimpan posisi sebagai floating-point, tetapi saat pemeriksaan tabrakan dilakukan, nilainya diubah menjadi integer 16-bit
  • Benar-benar mengagumkan
    Saya selalu terkesan setiap kali melihat orang-orang yang begitu terdorong oleh suatu passion hingga mencurahkan dedikasi seekstrem ini
    Saya sendiri jarang pernah merasakan passion yang cukup kuat sampai bisa membuat saya bekerja sekeras ini
    Kadang saya berpikir alangkah baiknya jika orang-orang seperti ini menggunakan bakat dan energi mereka untuk hal yang benar-benar penting seperti menyembuhkan penyakit atau terobosan ilmiah
    Setidaknya dari sudut pandang mereka sendiri, mereka bisa merasa bahwa potensi besar mereka tidak terbuang sia-sia
    Dari usaha yang masuk ke video ini saja, rasanya sudah bisa menghasilkan satu paper penelitian yang lumayan bagus
    Saya berharap punya motivasi setingkat ini untuk pekerjaan saya juga, tetapi secara keseluruhan saya cuma bisa merasa kagum

  • Saya suka video ini
    Belakangan ini dia juga membuat video yang membahas elemen teknis spesifik dari N64, dan perlu berhati-hati dengan floating point
    https://youtu.be/nYDmBdUalgo

    • Video ini bahkan rasanya layak dipakai di kelas ilmu komputer sebagai materi pengantar untuk generator bilangan acak semu dan floating point IEEE
  • Bisa rekomendasikan lebih banyak video rabbit hole seperti postingan utama ini?
    Topiknya bebas
    Saya suka video seperti ini yang menunjukkan seberapa dalam sesuatu bisa digali
    Favorit saya saat ini adalah https://youtu.be/_hjRvZYkAgA

    • Baru-baru ini saya cukup menikmati video yang mulai me-reverse compile game PC Lego lama yang saya ingat dari masa kecil https://www.youtube.com/watch?v=MToTEqoVv3I
    • Marcel Vos punya cukup banyak video YouTube yang membahas mekanisme game Roller Coaster Tycoon, terutama ketika didorong sampai ke kondisi ekstrem
      https://youtu.be/KVgoy_a_gWI
    • Ada juga video bagus tentang selalu mengalahkan Pokémon dengan kumpulan input yang sama
      https://youtu.be/6gjsAA_5Agk
    • Video speedrun dari Karl Jobst juga bagus
  • Video ini juga menjelaskan apa itu input 0.5 A dan kenapa itu penting
    Mario 64 tidak terlalu memperhatikan tindakan melepas tombol, jadi para runner tidak membedakan tindakan melepas itu secara terpisah
    Karena kapan saja bisa memilih untuk tidak melepas A, maka dalam run dengan input A minimum, A hanya dilepas agar bisa ditekan lagi nanti
    Dalam komentar langsung mungkin bisa dijelaskan singkat apa yang “dimaksud” dengan 0.5 A, tetapi tanpa penjelasan seperti ini orang kemungkinan besar akan bertanya-tanya kenapa itu dianggap penting

    • Kalau cuma membaca ini, orang yang tidak terlalu paham gamenya mungkin tidak akan mengerti kenapa pada penekanan terakhir A tidak bisa terus saja ditahan
      Perlu juga dijelaskan bahwa saat A ditahan, Mario melakukan aksi yang berbeda dibanding saat A tidak ditekan
    • Lebih tepatnya, game ini kadang menuntut A baru ditekan, tetapi pada saat lain aksi cukup terjadi selama A sedang dalam keadaan ditekan
      Pada kasus pertama, jika A ditekan dan tidak dilepas, maka kasus kedua bisa “meminjam” input itu
    • Apakah “Mario 64 tidak memperhatikan tindakan melepas tombol” benar?
      Kalau game ini memperhatikan keadaan tombol ditahan, seperti saat melayang di udara, bukankah secara implisit itu juga memperhatikan keadaan tidak ditahan, seperti berada di udara tetapi tidak melayang?
      Untuk berpindah dari keadaan melayang di udara ke keadaan di udara tetapi tidak melayang, tombolnya harus dilepas
      Apakah saya salah paham?
      Saya baru main M64 sekitar 5 menit, tetapi sudah saya masukkan ke daftar untuk dimainkan suatu saat, dan saya terus mendorong anak-anak saya supaya ketagihan agar saya juga punya alasan untuk meluangkan waktu memainkannya
    • Tindakan melepas tombol memang diperhatikan
      Untuk melompat kedua kalinya, tombol harus dilepas dulu
      0.5 sebenarnya lebih dekat ke konsep bahwa satu input A berlanjut melintasi beberapa level
    • keydown + keyup = keypress
      Sekilas terlihat seperti “0.5 itu sebenarnya apa sih?”, tetapi pada akhirnya ini cuma soal semantik