Thornveil

Thornveil Devlog #3: Kayıt, Kaldığın Yer ve Dövüşün İkinci Dalgası

İkinci devlog üçüncü ve dördüncü haritalarla, kayaların görünüşüyle ve dövüşün ilk elden geçişiyle kapanmıştı. Bu yazıda kayıt dosyasının güvene alınması, bir haritayı bırakıp geri dönmenin oyuncuya bir soru olarak sunulması, ödüllerin iki kez ödenmesini engelleyen sayaç, dövüşün karşılıklı hâle gelmesi ve Diken Ormanı'nın mini patronu Goblin Yüzbaşı anlatılıyor.

İkinci devlog üçüncü ve dördüncü haritalarla, kayaların görünüşüyle ve dövüşün ilk elden geçişiyle kapanmıştı. Bu yazıda kayıt dosyasının güvene alınması, bir haritayı bırakıp geri dönmenin oyuncuya bir soru olarak sunulması, ödüllerin iki kez ödenmesini engelleyen sayaç, dövüşün karşılıklı hâle gelmesi ve Diken Ormanı'nın mini patronu Goblin Yüzbaşı anlatılıyor.

Bu yazının görselleri henüz çekilmedi.

35 · Kayıt dosyası artık bozulmuyor

Kayıt tek bir dosyaya doğrudan yazılıyordu. Yazma sırasında oyun kapanırsa ya da telefon uygulamayı öldürürse, elde yarısı yazılmış bir dosya kalıyordu ve bir sonraki açılışta o dosya okunamadığı için ilerleme gitmiş sayılıyordu.

Artık hiçbir kayıt yerinde yazılmıyor. Yeni kayıt önce save.tmp.json olarak yazılıyor, mevcut kayıt hâlâ okunabiliyorsa save.bak.json adını alıyor, ve ancak ondan sonra yeni dosya gerçek adı devralıyor. Açılışta sırayla üç dosya deneniyor: gerçek kayıt, bitmiş geçici dosya, yedek. Hiçbiri okunamıyorsa dosya save.corrupt.json olarak kenara kaldırılıyor — üzerine yazılıp yok edilmiyor, çünkü bozuk bir kayıt bile içinden bir şey kurtarılabilecek tek kanıt.

Oyun ayrıca uygulama duraklatıldığında, odağı kaybettiğinde ve kapatıldığında kayıt yazıyor. Ama yalnızca bellekte gerçek bir ilerleme varsa: başlık ekranından çıkmak, dolu bir kaydın üstüne boş bir kayıt yazmıyor.

Geliştirme ve test çalıştırmaları save_dev.json kullanıyor. Bir testin ya da bir ekran görüntüsü betiğinin oyuncunun gerçek ilerlemesine dokunma ihtimali yok.

36 · Kaldığın yerden mi, baştan mı?

Bir haritayı yarısında bırakıp harita seçimine dönmek belirsiz bir durumdu: geri gelindiğinde ne olacağı belli değildi.

Şimdi her harita kendi dönüş noktasını taşıyor. Bir kamp ateşine değildiğinde o haritanın nerede, kaç saniyede ve kaç ölümde bırakıldığı yazılıyor. Haritaya tekrar girildiğinde oyun soruyor: "Kaldığın yerden" ya da "Baştan başla". Her harita kendi kaydını tuttuğu için araya başka bir harita girmek yarım kalanı çöpe atmıyor.

Süre ve ölüm sayısı da dönüş noktasında duruyor. Yoksa bir haritayı son ateşten devam ederek bitirmek, sıfırdan başlamış gibi bir süre yazardı — yani kaldığı yerden devam eden oyuncu, en iyi süresini yalan söyleyerek alırdı.

Duraklatma menüsündeki seçenek de adını netleştirdi: yaptığı şey son kontrol noktasına dönmek olduğu için artık "Son Ateşe Dön" yazıyor, "Yeniden Başla" değil.

37 · Bir ödül iki kez ödenmiyor

"Baştan başla" o haritanın toplanabilirlerini geri koyuyor. Bu, tekrar oynayan oyuncunun bitiş kartında x/y sayacını tamamlayabilmesi için gerekli — ama aynı sandığı ikinci kez açıp aynı elmasları ikinci kez kasaya koymak için değil.

Bu yüzden iki ayrı liste var. collected bir haritanın toplananlarını tutuyor ve o haritayı baştan başlatmak onu temizliyor. credited ise hangi ödülün bir kez ödendiğini tutuyor ve kayıt yaşadığı sürece asla temizlenmiyor. İkinci kez açılan bir sandık elmaslarını haritanın sayacına sayılsın diye dışarı atıyor, ama kasaya bir şey koymuyor ve vermediği bir şeyi söz veren bir bildirim göstermiyor.

Goblinlerin taşıdığı bakır cevher de aynı sayaçta, üstelik goblinin durduğu karoya göre anahtarlanmış hâlde. Yani ne ölüp aynı yolu yeniden yürümek ne de haritayı tekrar oynamak aynı goblini ikinci bir külçe için sağmaya yarıyor. Bir arena dalgasının doğurduğu düşmanın sabit bir yeri olmadığı için zaten hiç cevher düşürmüyor.

Bölüm sonu kartındaki "Tekrar Oyna" da bunun üstüne kuruldu: bölümün bütün haritalarının toplanabilirlerini geri koyup ilk haritadan başlatıyor, hiçbir ilerlemeyi silmeden ve kayda hiç dokunmadan.

38 · Vuruşun bir bedeli var

Dövüşün asıl sorunu ölçüldüğünde ortaya çıktı: isabet eden bir vuruş, toparlanma karelerini beklemeden bir sonrakine geçiyordu. Yani kılıç isabet ettikçe hiç durmuyordu — sürdürülebilir hız saniyede beş vuruşun üstündeydi ve savurmanın hiçbir maliyeti yoktu. Düşmanın karşılık vermesi için bir boşluk yoktu, çünkü oyuncu hiçbir an savurmuyor değildi.

Çözüm oyuncuyu yavaşlatmak değil, komboya bir son vermek oldu. Dizi artık üç vuruş: savurma, saplama ve bir bitirici. Bitirici iptal edilemiyor — ne bir sonraki vuruşa, ne zıplamaya. Yarım saniye orada kalınıyor ve düşmanın sırası tam orada. Karşılığında bir buçuk kat hasar veriyor.

İki şey bu kuralı bir tuzağa dönüşmekten kurtarıyor. Bitirici yalnızca ondan önceki vuruş isabet ettiyse çıkıyor, yani havaya savurmak kimseyi çivilemiyor. Ve bir atılma (dash) bitiriciyi kesebiliyor: kalabalığın ortasında çakılı kalmak bir tercih değil, ama çıkış bedava da değil — atılmayı ve onun bekleme süresini harcıyor.

Telefonda parmakla tuşa basma ritmi değişmedi. Basılı tutmak komboyu hâlâ sürdürüyor. Değişen tek şey, o komboyu sonuna kadar götürmenin bir bedeli olması.

39 · Kalkanla savuşturma

Kalkan tutmak bedava bir şeydi ve hiçbir şey kazandırmıyordu, bu yüzden hiç kullanılmıyordu.

Artık kalkanı kaldırdıktan sonraki 0,2 saniye içinde karşılanan bir darbe savuşturma sayılıyor: geri itme yok, ekran bir an duruyor ve vuran düşman 0,8 saniye açık kalıyor. Bu duraklatma poise sayacına, sersemleme bekleme süresine ve zırha bakmıyor. Bir patronun sırasını isteyerek almanın tek yolu bu.

40 · Düşmanlar artık tepki veriyor

Düşman temeline, hepsi varsayılan olarak kapalı beş davranış eklendi. Kapalı olmaları önemli: beş haritada duran yüzlerce goblin, balçık, mantar ve yarasa bit bit aynı kaldı.

  • Savurma hızı düşman başına ayarlanabiliyor. Gri goblinin saldırı şeridi bir saniyelik bir animasyon ve vuruş 0,7. saniyede geliyor — hareket eden bir oyuncuya asla yetişemeyecek kadar geç.
  • Toparlanma: bir savurmadan sonra düşman kıpırdayamıyor ve o pencerede yediği hasar katlanıyor. "Ne zaman vurmam gerekiyor?" sorusunun dürüst cevabı bu.
  • Geri çekilme: üstüne kombo binen düşman savurmasını kesip mesafe açıyor. Ama kendi savurmasının ortasında asla kaçmıyor — o kural, karşılık verebilmesinin tek sebebi.
  • Mesafe tutma: savurması hazır değilken kılıcın menzilinde dikilip beklemek yerine dışına çıkıyor.
  • Zırh: her üçüncü vuruşta sarsılmayan düşman. Bir patron için gerekli; her kılıç darbesinde kesilen bir patronun verecek dövüşü yok.

Bir de gerçek bir hata çıktı. Düşmanların "orada diken var mı" sorusu fizik katmanına bakıyordu, ama o katmanda yalnızca tehlikeler değil bütün tetikleyiciler var: kontrol noktaları, hikâye beatleri, patron odaları. Yani düşmanlar, bir tetikleyicinin üstünden geçen tamamen güvenli atlayışları "orada tehlike var" sanıp reddediyordu. Tehlikeler artık kendi grubuyla ayırt ediliyor.

41 · Saldırının önünde bir ünlem

Bütün düşmanlar aynı hazırlık animasyonunu paylaşıyor ve 20 piksel boyunda bir karakterde o hazırlık bir tehdit olarak okunmuyor. Oyuncu vurulduğunu görüyor, geleceğini görmüyor.

Artık bir düşman savurmadan önce 0,4 saniye kıpırdamadan duruyor ve kafasının üstünde bir ünlem gösteriyor — demircinin taşıdığı balonun aynısı, aynı beyaz ünlem. O anda hiçbir şey vurmuyor; kaçmanın penceresi tam orası. Yüzbaşının sıçramaya hazırlanırken çöktüğü anda da aynı ünlem çıkıyor.

Bu da varsayılan olarak kapalı. Beş haritadaki düşmanların hiçbirinde ünlem yok; yüzbaşı ve onun çağırdığı goblinler kullanıyor.

42 · Goblin Yüzbaşı

Diken Ormanı'nın mini patronu, yedinci harita için. Paketlerde yüzbaşı çizimi yok, bu yüzden gri goblinin 2,1 katı boyunda, hafif sıcak tonlu hâli. 100 canı var ve zırhlı: sıradan bir kılıç darbesi onu beyaza boyuyor, o kadar. Sırasını almanın tek yolu savuşturma.

Dövüşün beatleri, her birinin önünde bir uyarı ve arkasında bir pencere:

  • Dizi. İki vuruş, aralarında 0,7 saniye; ikincisi hamle yapıp iki hasar veriyor. Ardından 0,65 saniye açık kalıyor ve o pencerede yediği hasar ikiye katlanıyor.
  • Geri sıçrama. Üstüne dört vuruş binerse savurmasını bitirip mesafe açıyor.
  • Sıçrama serisi. Her 25 canda bir — yani 75, 50 ve 25'te — çöküp arka arkaya üç kez zıplıyor. Her zıplayış oyuncunun gittiği yere iniyor, iniş iki yandan da vuruyor, ve her inişte bir goblin düşüyor. Goblinler pusu dalgalarındaki gibi önce uyarı dumanıyla haber veriyor ve geldiklerinde bir süre kıpırdamıyor. Aynı anda en fazla iki tanesi yaşıyor. Serinin son inişinden sonra 0,9 saniye açık kalıyor: hayatta kalmanın ödülü.
  • İkinci faz. Canı yarıya inince rengi kızarıyor, her şey 1,2 kat hızlanıyor ve seri bir zıplama uzuyor.

Bir de kaldırılan bir şey var. Yüzbaşı başta bir kalkan taşıyordu ve savurmaları arasında onu dikiyordu; önden gelen her şeyi bloklayan, bloklanan vuruşlarla aşınan, kırıldığında onu açık bırakan bir beat. Mekanik çalışıyordu ama kalkan kolunda duran bir eşya ikonu gibi görünüyordu, bu yüzden tamamen çıkarıldı. Bir mekaniğin iyi tasarlanmış olması, ekranda iyi görünmesini garanti etmiyor.

Yüzbaşının kendi test odası var: harita seçiminde görünmeyen, hiçbir bölüme ait olmayan çıplak bir arena. Dövüşün tamamı orada 41 kontrolle sınanıyor — odaya girince uyanması ve kapıların kapanması, zırhın sıradan bir komboya dayanması, savuşturmanın onu sersemletmesi, açık pencerede hasarın katlanması, komboya geri çekilmeyle cevap vermesi, can işaretinde seriyi başlatması, her inişte goblin düşürmesi, fazın dönmesi, oyuncu ölünce her şeyin sıfırlanması — yüzbaşı tam canla ve uykuda dönüyor, çağırdığı goblinler de onunla gidiyor — ve yenildiğinde kapının açılıp bayrağın kaydedilmesi.

Perde arkası: ölçmeden "daha iyi oldu" denmiyor

Bu yazıdaki dövüş sayıları da tahmin değil. Bir vuruşun kaç saniyede bir tekrarlandığı animasyon karelerinden ve fizik karelerinden sayıldı; düşmanın bir komboda kaç saniye kıpırdayamadığı, savurmasının kaç saniyede geldiği ve bir dövüşün kaç saniye sürdüğü aynı şekilde çıkarıldı.

Bunun sebebi basit: bir dövüş ayarı yalnızca bakılan düşmanı değil, bütün haritaları aynı anda etkiliyor. Bu yüzden yeni davranışların hepsi varsayılan olarak kapalı geldi ve her değişiklikten sonra beş haritanın testleri, kayıt testleri, İngilizce testi, arayüz testleri ve erişilebilirlik denetimi baştan çalıştırıldı.

Dengeyi ise ölçüm değil oynamak belirledi. Yüzbaşı ilk hâlinde fazla kolaydı, ikinci hâlinde fazla zordu; savurma araları, telgraf süreleri ve goblin sayısı elde oynanarak oturdu.

Sırada ne var?

  • Diken Ormanı'nın kalan üç haritası: Kök Mağarası, Goblin Kampı ve Balçık Kral'ın Bataklığı.
  • Yüzbaşının kendi haritasına, yedinci haritaya yerleşmesi.
  • Bölüm sonu akışı ve bölümün baştan sona denetimi.
  • Ses. Oyunda hâlâ hiç ses yok; vuruş ve isabet sesleri olmadan dövüş hiçbir ayarla tam oturmuyor.

Emeği geçenler

Günlüklere dön

Neler oluyor, bak.

Tüm güncellemeler