1 puan yazan GN⁺ 2023-07-16 | 1 yorum | WhatsApp'ta paylaş
  • Super Mario 64 içindeki Watch for Rolling Rocks yıldızının, yeni bir A girişi olmadan, başlangıçtan önce devam eden A hold ile alınabildiği 0.5 A press stratejisi açıklanıyor
  • A girdisi press, hold ve release olarak ayrılıyor; önceki yıldızdan basılmış A tuşu basılı tutulursa tek bir yıldız için 0.5, tüm koşu içinse ek girdi 0 olarak sayılabiliyor
  • Stratejinin özü, Scuttlebug'ın home konumunu taşımak ve oda etkinleştirme sınırını kullanarak onu yukarı çıkarmak, ardından misalignment ve sekmeyle yıldız platformu yüksekliğini elde etmek
  • Gerekli yatay hız, sığ su, dik eğim, gate ve out-of-bounds tespitini birleştiren Hyper Speed Walking ile üretiliyor ve hız biriktirme yaklaşık 12 saat sürüyor
  • PU hareket rotası, floor collision'ın short dönüşümü, eğime göre değişen syncing speed ve QPU alignment kullanılarak ana haritaya dönmek ve elevator ile yıldız platformuna ulaşmak üzere tasarlanıyor

0.5 A press'in ölçütü

  • A press anlık bir giriş değil, press, hold, release olmak üzere üç aşamaya ayrılır
    • press, Mario'yu zıplatmak için kullanılır
    • hold, küçük kick, suda swim, twirl sırasında yavaş düşüş ve Wing Cap sırasında yavaş düşüş için kullanılabilir
    • release için şu anda faydalı ya da önemli bir örnek yoktur
  • 0.5 A press, A'ya yeniden basmadan, daha önce basılmış A'nın basılı tutulduğu durumu ifade eder
  • Over the Rainbow örneği bu sayım yöntemini gösterir
    • cannon platform'a ulaşmak için yalnızca A'yı basılı tutmak gerekir
    • ilk cannon ateşlemesi ve ikinci cannon ateşlemesi için ayrı ayrı birer A press gerekir
    • yalnızca tek yıldız açısından bakıldığında bu 3 A press sayılır
    • tüm A Button Challenge koşusunda, bölüme girişte kullanılan önceki A press basılı tutulup ilk hold gereksinimi bununla karşılanabilir
    • bu yüzden Over the Rainbow, tek yıldız için 2.5 A press, tüm koşu içinse ek 2 A press olur
  • Watch for Rolling Rocks stratejisinde de level başlarken A zaten basılıdır ve tüm koşu içinde bu giriş önceki bir A press'in devamı olarak sayılır

Scuttlebug taşıma ve yükseltme

  • Scuttlebug Transportation, Scuttlebug'ın home konumunun Mario ile çarpıştığında güncellenmesi özelliğini kullanır
    • Scuttlebug, home çevresindeki belirli bir yarıçap içinde devriye gezer
    • Mario bu yarıçapın içine girerse lunging attack yapar
    • Scuttlebug Mario'ya çarptığında, çarpışma anındaki Scuttlebug konumu yeni home olur
  • Taşımada bazı kısıtlar vardır
    • Scuttlebug kendi native room'unun dışına çıkamaz ve kapıda takılır
    • mevcut home konumundan çok daha aşağıdayken duvara yürümeye çalışırsa yok olabilir; bu yüzden taşıma sırasında bundan kaçınmak gerekir
  • Amaç, Scuttlebug'ı ve home konumunu Watch for Rolling Rocks yıldızının altındaki köşenin yakınına taşımaktır
  • Scuttlebug Raising, rolling rocks room'un etkinleştirme aralığını kullanarak Scuttlebug'ı yukarı çıkarır
    • Oda ve içindeki nesneler yalnızca Mario rolling rocks room içindeyken ya da kapının dışındaki küçük yellow region içindeyken etkin olur
    • Mario bunun dışındaysa oda siyah görünür, nesneler invisible olur ve hareket etmez
    • Scuttlebug etkin değilken bile Mario'ya doğru dönebilir ve lunge başlatabilir
    • Mario yellow region'a girip Scuttlebug'ı etkinleştirdikten sonra, Scuttlebug yörüngesinin tepe noktasına ulaştığında Mario yeniden yellow region'dan çıkarsa Scuttlebug düşmez ve o yükseklikte kalır
    • Bu süreç tekrarlanarak Scuttlebug sürekli daha yukarı çıkarılır
  • Scuttlebug'ın algılama yarıçapı bir sphere değil, yukarı ve aşağı sonsuza uzanan bir cylinder olduğundan, ne kadar yükselirse yükselsin lunge tetiklenmeye devam edebilir
  • Bu stratejide Scuttlebug'ın home yönüne lunge yapması sağlanarak tam köşenin üstünde kalması hedeflenir
    • Mario, Scuttlebug yarıçapı içinde etkinleştirme yaparsa Scuttlebug Mario'ya doğru lunge yapıp kapı yönüne ilerleyebilir
    • Bu yöntem daha hızlıdır, ancak bu stratejide köşe yakını konum gerektiği için kullanılmaz

Misalignment ve yükseklik kazanımı

  • Köşenin üst kısmında misalignment denilen bir özellik vardır
    • Oyun kodunda floor collision checking ile wall collision checking farklı şekilde işlenir
    • Bunun sonucunda 1x1 unit'lik bir bölgede Mario duvar tarafından itilmeden zeminin altına girebilir
  • Mario zeminin 79 unit'ten daha az altındaysa zeminin üstüne snap edilir
  • Son aşamada Scuttlebug bounce ve ground pound, misalignment ile birleştirilerek Watch for Rolling Rocks platformuna çıkmaya yetecek yükseklik elde edilir

Hyper Speed Walking ve Parallel Universe hareketi

  • Gerekli hız Hyper Speed Walking ile elde edilir
    • Çok dik eğimlerde Mario normalde ayakta duramaz ve kayar
    • Sığ suyla kaplı bir eğimin su altındaki kısmında, yokuş yukarı koşmaya çalışıldığında Mario geriye doğru koşar ve hızı sürekli artar; üst sınır yoktur
  • Normalde suya düşüldüğü ya da eğim bittiği için çok fazla hız biriktirmek zordur, ancak gate ve out-of-bounds kullanılarak yerinde hız biriktirilebilir
    • gate'in alt kısmı ceiling olarak kabul edilir
    • Mario ceiling'in hemen altına fazla yaklaşacak şekilde hareket etmeye çalışırsa oyun konum değişimini reddeder
    • Belli bir hız alındıktan sonra yön çevrilip hedeflenen sonraki konum duvarın ötesinde out-of-bounds olacak şekilde ayarlanırsa, oyun Mario'yu out-of-bounds'a koymaz ve yerinde tutar
    • out-of-bounds sürekli devam ettiği için gate ceiling'den daha uzun süre hız biriktirilebilir
  • Bu stratejide gate açılır, gate ceiling kullanılarak bir miktar hız üretilir, sonra açı out-of-bounds yönüne çevrilerek kalan hız toplanır
  • Hız biriktirme yaklaşık 12 saat sürer

PU, QPU ve syncing speed

  • Mario'nun position değeri floating point number'dır, ancak floor triangle collision test için short türüne dönüştürülür
    • fractional portion kesilip atılır
    • fazla büyük ya da küçük sayılar modulo operator ile -32768 ile 32767 aralığına sokulur
  • Gerçek konum bu aralığın dışında olsa bile, floor detection için kullanılan konum başlangıçtaki kutunun içine geri döner
    • Mario'nun gerçek konumunda zemin olmasa bile, floor detection konumu bir zeminin üstündeyse oyun Mario'yu yerde kabul eder
    • Orijinal haritanın kopyası gibi davranan bu alanlara Parallel Universe, yani PU denir
  • PU içinde graphics yoktur; elevator, item block, nesne, düşman, coin, star ve wall da bulunmaz
  • N64 konsolunda camera PU'ya kadar takip ederse çökme yaşanabildiğinden, bu strateji çökmeden kaçınmak için camera'yı ana haritada sabitler
  • Oyun, Mario hareketinin her quarter step'inde zeminde olup olmadığını kontrol eder
    • Basit bir PU hareketinde, her quarter step bir zeminin üstüne denk gelsin diye tek seferde 4 PU geçmek gerekir
    • Bu 4 PU mesafesine QPU denir
  • Gerçek speed ile harekette kullanılan fiilî speed aynı değildir
    • fiilî speed, eğimin steepness değerine bağlı olarak gerçek speed'in bir kısmından belirlenir
    • eğim ne kadar dikse, aynı speed değerinde fiilî speed o kadar küçük olur
  • QPU mesafesi ile quarter step'in tam uyuştuğu speed'e syncing speed denir
    • en düşük syncing speed, tam olarak 1 QPU hareket ettiren hızdır
    • bunun katları da syncing speed olur ve bir seferde birden fazla QPU geçilebilir
    • her eğim için syncing speed kümesi farklıdır
  • Secret Aquarium PU hareketi örneğinde, art arda birden çok eğimin syncing speed değerlerini sağlamak gerekiyordu; ilk syncing speed'e ulaşmak yaklaşık 12 saat, ikinci syncing speed'e ulaşmak ise yaklaşık 25 saat sürüyordu
  • Watch for Rolling Rocks rotası, 25 saat yerine 12 saatlik hız birikimiyle mümkün olacak şekilde tasarlanmıştır
    • gölden yukarı çıkan path, farklı eğimlere sahip onlarca floor triangle'dan oluşur
    • bunlar içinden T1'den T6'ya kadar altı triangle seçilmiştir ve steepness değerleri sıkı biçimde azalmaktadır
    • bu altı triangle'ın yükseklikleri, alttan üste gereken dikey mesafeyi boşluk bırakmadan kapsar
    • rota taslağı, bu triangle'ları sırayla kullanarak başlangıç eğiminin ilk syncing speed'iyle tamamlanır

Son rota ve yıldızın alınışı

  • Temel rota, Hyper Speed Walking eğiminden başlayıp göl üstündeki path boyunca yükselmek, 2 elevator kullanmak, Amazing Emergency Exit platformuna gitmek ve oradan Watch for Rolling Rocks platformuna fırlatılmak şeklindedir
  • PU hareketi sırasında speed, syncing speed'den biraz düşükse relative forward, biraz yüksekse relative backward hareket oluşur
  • cardinal direction'dan açı çok az sapsa bile, QPU mesafesi nedeniyle sideways movement büyük ölçüde büyür
  • QPU alignment yönetimi bu yüzden kritiktir
    • 4 PU katlarına karşılık gelen grid'e QPU grid denir
    • Mario bu grid üzerindeyse QPU aligned durumdadır
    • bunun dışındaki pozitif PU hareketleri için out-of-bounds ya da slope change gibi özel koşullar gerekir
    • QPU misaligned olunursa ana haritaya dönmek zorlaşabilir
  • Göl yolunda T1'den T6'ya kadar her triangle üzerinde speed, ilgili eğimin syncing speed'ine yaklaştırılacak kadar düşürülür; ardından yokuş yukarı ilerlenip bir sonraki triangle'a geçilir
    • triangle geçişlerinde QPU alignment değişir, ancak rota sonunda bunlar birbirini götürecek ve yeniden QPU aligned olunacak şekilde planlanmıştır
    • altıncı triangle üzerinde zigzag yapılarak ana haritaya yaklaşılır
  • PU içinde object bulunmadığından elevator'lar ancak ana haritaya dönüldükten sonra kullanılabilir
  • A'nın basılı tutulmasının nedeni, B'ye basarak küçük bir kick yapmak içindir
    • kick olmazsa Mario elevator'ın içinden geçer
    • kick yapılınca Mario elevator'a binip yükseklik kazanabilir
  • Son hareket, Amazing Emergency Exit platformunda kick yaptıktan sonra yön değiştirip Scuttlebug'a doğru launch olmak şeklindedir
    • bu hareket sağa 10 PU ve aşağı 3 PU displacement ürettiğinden, ana haritada bitirmek için önceden 3 PU yukarıda ve 10 PU solda konum alınır
    • aynı anda relative map konumu da son hareketin mümkün olacağı şekilde ayarlanır
  • Scuttlebug, odanın PU sürümüne girildiği anda etkinleşir; fazla düşmeden ona ulaşmak gerektiği için final approach sırasında yalnızca birkaç frame'lik pay vardır
  • Sonuçta Scuttlebug bounce ile misalignment üzerindeki ground pound birleştirilerek Watch for Rolling Rocks platformuna çıkmaya yetecek yükseklik elde edilir ve yıldız 0.5 A press ile alınır

1 yorum

 
GN⁺ 2023-07-16
Hacker News yorumları
  • Bunun mükemmel YouTube videosu olabileceğini düşünüyorum
    Arka planda harika bir Mario soundtrack'i ve oynanış görüntüleri var, kendi hazırladığı grafikler neler olduğunu görsel olarak gösteriyor ve sesli anlatım da ekranda olanı açıklıyor
    Diğer YouTube videolarına ve yorumlara da başvuruyor, inanılmaz derecede ayrıntılı ve bilgi dolu ama bir şey satmaya çalışmıyor
    İzlenme uğruna değil, sevgiyle yapılmış gibi hissettiriyor; benim için YouTube'un zirvesi bu

    • HealthyGamerGG videoları da benzer bir his veriyor
      Nörokimya/biyokimya, psikoloji, oyunlar, insan davranışı, kültür ve din ile bunların zaman içinde nasıl değiştiği arasında dolaşıyor; ayrıntılı ve bilgi derinliği yüksek
      Benim için YouTube'un zirvesi bu tarz şeyler
    • “Level'a başlarken A tuşunu basılı tutup başlıyorsun ve sonrasında A tuşuna bir daha basmıyorsun” derse anlaması daha kolay olabilir
    • Arka plan müziğine karşı aşırı hassas olmamayı nimet saymak lazım
      Ben arka plan müziğine zor dayanıyorum
  • pannenkoek'in bilgi derinliği ve analiz gücü gerçekten hayranlık verici
    SM64 videolarını izledikten sonra çıtam o kadar yükseldi ki başka oyunlarda benzer düzeyde titizlik ve yapım kalitesi bulmak çok zor geliyor
    Şimdiye kadar en çok yaklaşan şey, speedrunner'ların Wind Waker'daki bir bulmacada RNG'yi nasıl alt ettiğini anlatan videoydu
    https://youtu.be/1hs451PfFzQ

  • Bu tam anlamıyla saf inek pornosu ve gerçekten harika
    Oyunun çarpışma algılamasının gerçekten kayan noktalı değer alıp bunu short'a çevirdiği gibi açıklamalar tuhaf bir şekilde beynimi gıdıklıyor
    SM64 gibi bir oyunun piyasaya çıkışından onlarca yıl sonra hâlâ insanları büyüleyip kendine bağlaması çok şey anlatıyor
    Günümüz ana akım oyunları arasında, oyuncularda bu seviyede tutkuyu paylaşan yapımlar giderek azalıyor gibi görünüyor

  • A Button Challenge'ın eksiksiz tarihi
    https://www.youtube.com/watch?v=yXbJe-rUNP8
    5 saati aşan bir video; arkada açık bırakmak ya da vakit öldürmek için izliyorum
    Bu insanların sergilediği bilgi miktarı ve bug istismarı seviyesi akıl almaz

    • Bunu yakın zamanda baştan sona izledim ve azıcık bile ilgisi olan herkese şiddetle tavsiye ederim
      Keşfedilen bazı şeyler gerçekten çılgınca ve zar zor çalışan o kadar çok şey var ki insan şaşırıyor
      Bismuth genel olarak da yüksek kaliteli bir YouTuber
  • 12 saat boyunca hız biriktirme” kısmında koptum
    https://youtu.be/kpk2tdsPh0A?t=640
    Düşünce yapısı gerçekten çok berrak
    İnternette böyle inanılmaz zeki insanların olması güzel

    • Tersinden bakınca biraz israf gibi de geliyor
      Elbette herkes zihnini istediği gibi kullanmakta özgür ama yaklaşık 30 yıllık bir oyundaki aşırı anlaşılmaz bir bug'a bu kadar yoğunlaşıp, araç desteği olmadan pratikte uygulanması imkânsız bir numaranın teknik olarak mümkün olduğunu kanıtlamaya çalışmak bana gerçekten tuhaf geliyor
      Açıklama videosu harika ama altındaki asıl hedef bana saçma geliyor
  • paralel evrenler mevzusunu seviyorsan, SM64 1-Key speedrun'ını https://youtube.com/watch?v=iUt840BUOYA izlemeni, ardından da Bismuth'un açıklamasını https://youtube.com/watch?v=wjge1bVobN0 şiddetle tavsiye ederim
    Büyük ölçüde pannenkoek2012'nin araştırmalarına dayanan gerçekten inanılmaz bir teknik başarı

    • Oyuncuların aslında sadece oyun bug'ı olan olguları açıklamak için ürettiği terimler komik
      Paralel evrenler ve onun etrafındaki tüm kavramlar, zemin kontrol kodundaki 16 bit integer overflow yüzünden ortaya çıkıyor
      Mario 64 normalde konumu kayan noktalı sayı olarak saklıyor ama çarpışma kontrolünde bunu 16 bit integer'a dönüştürüyor
  • Gerçekten hayranlık verici
    İnsanların bir şeye bu kadar güçlü bir tutkuyla bağlanıp böylesine uç bir adanmışlık göstermesini her gördüğümde etkileniyorum
    Benim de beni bu kadar sıkı çalıştıracak düzeyde bir tutku hissettiğim zamanlar çok nadir oldu
    Bazen böyle insanların yeteneklerini ve enerjilerini hastalık tedavisi ya da bilimsel atılımlar gibi gerçekten önemli işlere yöneltmesini diliyorum
    En azından kendileri açısından da büyük bir potansiyelin boşa gitmediğini hissedebilirlerdi
    Sırf bu videoya harcanan emekle bile ortaya düzgün bir araştırma makalesi çıkardı gibi geliyor
    Keşke kendi işimde de bu seviyede bir motivasyonum olsa ama genel olarak sadece hayran kalıyorum

  • Bu kanalı seviyorum
    Daha yakın zamanda N64'ün somut teknik ayrıntılarını ele alan bir video da yaptı ve kayan nokta konusunda dikkatli olmak gerekiyor
    https://youtu.be/nYDmBdUalgo

    • Bu video, bilgisayar bilimi dersinde sözde rastgele sayı üreteci ve IEEE kayan nokta için giriş materyali olarak bile kullanılabilir
  • Orijinal gönderideki gibi başka tavşan deliği videoları önerebilir misiniz?
    Konu hiç fark etmez
    Bir şeyin ne kadar derine gidebildiğini gösteren böyle videoları seviyorum
    Şu anda en sevdiğim https://youtu.be/_hjRvZYkAgA

    • Çocukluğumdan hatırladığım eski bir Lego PC oyununu decompile etmeye başlayan şu videoyu da yakın zamanda epey keyifle izledim https://www.youtube.com/watch?v=MToTEqoVv3I
    • Marcel Vos'un Roller Coaster Tycoon oyununun mekaniklerini, özellikle de uç noktalara itildiğinde neler olduğunu ele alan epey fazla YouTube videosu var
      https://youtu.be/KVgoy_a_gWI
    • Aynı input dizisiyle Pokémon'u her zaman yenen harika bir video da var
      https://youtu.be/6gjsAA_5Agk
    • Karl Jobst'un speedrun videoları da iyidir
  • Bu video, 0.5 A input'un ne olduğunu ve neden önemli görüldüğünü de açıklıyor
    Mario 64, tuşu bırakma eylemini umursamadığı için koşucular bırakma hareketini ayrıca saymıyor
    İstediğiniz anda A'yı bırakmamayı seçebileceğiniz için, minimum A input koşularında A ancak tekrar basmak gerektiğinde bırakılır
    Canlı anlatımda 0.5 A'nın ne “anlama geldiği” kısaca açıklanabilir ama böyle bir açıklama olmadan insanların neden buna önem verdiğini merak etmesi çok muhtemel

    • Sadece bunu okuyunca oyunu çok iyi bilmeyen biri, neden son basışta A'yı sürekli basılı tutmanın yetmediğini anlayamaz
      A'yı basılı tutmanın, Mario'nun A'ya basılmadığındaki hâlinden farklı davranmasına yol açtığını da açıklamak gerekir
    • Daha doğrusu, oyun bazen A'ya yeniden basılmasını ister ama bazı durumlarda A'nın zaten basılı olması da hareketi tetikler
      İlk durumda A'ya basıp bırakmazsanız, ikinci durum o input'u ödünç alabilir
    • “Mario 64 tuş bırakmayı umursamıyor” demek gerçekten doğru mu?
      Havada süzülme gibi basılı tutulma durumunu umursuyorsa, havada olup süzülmeme gibi basılı tutulmayan durumu da zorunlu olarak umursuyor olmuyor mu
      Havada süzülür durumdan havada süzülmez duruma geçmek için tuşu bırakmanız gerekir
      Ben mi yanlış anlıyorum?
      M64'ü yalnızca yaklaşık 5 dakika oynadım ama bir gün oynamak üzere listeme ekledim ve çocukların oyuna kapılmasını sağlayıp kendime de oynama vakti açmak için onları sürekli teşvik ediyorum
    • Tuş bırakmayı aslında umursuyor
      İkinci kez zıplamak için önce tuşu bırakmanız gerekir
      0.5, aslında tek bir A input'unun birden fazla seviye boyunca sürdüğü fikrine daha yakın
    • keydown + keyup = keypress
      Yüzeyde bakınca “0.5 de ne?” dedirtiyor ama sonuçta sadece bir anlamlandırma meselesi