Devlog · Paw & Sword · Çizim süreci

Sprite animasyonlarını tutarlı tutmak: 8 karelik sayfa kuralı

Tam sekiz karelik sayfalar, aynı çizgide ayaklar, boy sıçraması yok ve göz rengi kontrolü: yüzlerce animasyonu temiz tutan sıkıcı kurallar.

Paw & Sword'da 45 kahraman sınıfı, her sınıf için yedi rütbe görünüşü, her görünüş için birkaç klip (bekleme, yürüme, saldırı, yetenek, hasar alma) ve her klip için beşe kadar çizilmiş yön var. Bu, çok büyük sayıda animasyon şeridi demek. Tehlike tek bir kötü şerit değil. Tehlike, her biri farklı bir şekilde birazcık yanlış olan bin şerit.

Bir kahramanın yürüyüşünü izlerken gözün minicik hataları yakalıyor: kedinin bir kare boyunca büyümesi, ayakların yerin içine batması, gözlerin renk değiştirmesi, bir karede kaybolup geri gelen pelerin. Bunların hiçbiri tek bir durağan görselde görünmüyor. Hepsi harekette ortaya çıkıyor. Bu yazıda şeritleri tutarlı tutmak için kullandığım kuralları sıralıyorum. Bilerek sıkıcılar.

Bir poz referansından başla

Her sınıfın bir temel görünüşü var: Normal rütbe ve onun eksiksiz bir şerit seti. O kareler, bütün üst görünüşler için poz referansı. Yeni bir şerit yapılmadan önce temel görünüşün ilgili kareleri doğru sırayla ve doğru boyutta bir poz panosuna diziliyor.

Üst görünüş bu pozları birebir izliyor: aynı kare sayısı, aynı sıra, aynı zamanlama. Sadece kıyafet ve teçhizat değişiyor. Bunun iki faydası var. Hareket rütbeler arasında aynı kalıyor, yani rütbe atlayan kahraman hâlâ kendisi gibi hareket ediyor. Animasyonu oynatan oyun kodu da hangi görünüşün aktif olduğunu umursamıyor, çünkü her görünüşün kare düzeni aynı.

Kedinin kendisini ise sınıfın kimlik cümlesi belirliyor; bunu her sınıfa tek kedi yazısında anlatmıştım.

8 karelik sayfa kuralı

Yeni kareler sayfalar halinde üretiliyor ve her sayfa aynı düzene uyuyor:

  • Tam sekiz figür: tek bir görünüşün tek bir şeridinden sekiz kare.
  • Metin gibi okunan 4'e 2'lik bir ızgara: üst sıra 1'den 4'e, alt sıra 5'ten 8'e kadar kareler.
  • Her figür kendi hücresinin tamamen içinde ve etrafında boşluk var.
  • Sekiz figür de aynı ölçekte ve her sıranın ayakları tek bir çizgi üzerinde.
  • Yazı, sayı, ızgara çizgisi ya da yer gölgesi yok. Arka plan şeffaf ya da çizimde hiç geçmeyen düz bir renk.

Sekiz kare olmayan şeritler de sekiz karelik sayfa kullanıyor. On karelik bir şerit iki sayfa kullanıyor: 1'den 8'e ve 3'ten 10'a kadar kareler. Dört karelik bir şerit, sayfayı doldurmak için karelerini tekrarlıyor. Bu çakışma işe yarıyor: tekrar eden kareler yedek çekim gibi; kötü bir kare, şeridi baştan yapmadan yedeğiyle değiştirilebiliyor.

Neden bu kadar katı bir düzen? Çünkü öngörülebilir bir sayfayı bir script kesebilir. Kimse kareleri elle kırpmıyor ve script her seferinde aynı kararı veriyor.

Script ile kesme ve ölçekleme

Kesme script'i her hücrede tek bir figür arıyor. İki figür birbirine değiyorsa ya da bir hücre boşsa işi reddediyor ve nedenini söylüyor. Yüksek sesle hata vermek bir özellik: "Aşağı yukarı doğru" kesilmiş bir sayfa, reddedilmiş bir sayfadan daha kötü.

Boy sorunlarının çoğu ölçeklemeden çıkıyor. Akla ilk gelen yol, her kareyi kendi sınır kutusuna sığdırmak. Bu hemen bozuluyor: Kılıcı havada olan bir saldırı karesinin kutusu bekleme karesinden daha uzun, onu sığdırmak kediyi küçültüyor. Şerit oynayınca kahraman nabız gibi atıyormuş gibi görünüyor. Ben buna boy sıçraması diyorum.

Çözüm, bütün şeridi tek bir oranla ölçeklemek; böylece kedinin gövdesi her karede aynı boyda kalıyor. Kareler de ortak bir dayanak noktasına, yani ayaklara göre hizalanıyor. Figürün en alttaki dolu satırı her karede aynı satıra oturuyor. Silahların ve efektlerin yukarı ya da yanlara taşmasına izin var. Zıplamalar bilinçli bir istisna ve gözle kontrol ediliyor.

Son olarak kenarlar sertleştiriliyor. Yumuşak, yarı saydam kenarlı piksel çizim, oyun onu ölçeklediğinde bulanık görünüyor. Bu yüzden her piksel ya tamamen görünür ya da tamamen şeffaf.

Kontrol: karşılaştırma sayfaları ve kısa bir liste

Biten her şeridin bir karşılaştırma sayfası oluyor: bütün karelerin referansın yanında tek sırada durduğu bir görsel. Şerit ayrıca normal ve 2 kat hızda döngüde oynatılıyor. Kontrol listesi kısa:

  1. Boy: Kedi her karede aynı boyda mı?
  2. Ayaklar: Ayaklar zıplamadan ya da kaymadan çizginin üzerinde kalıyor mu?
  3. Gözler: Göz rengi her karede doğru mu? En sık kayan ayrıntı bu.
  4. Kıyafet: Bütün parçalar her karede var mı: pelerin, omuzluk, kemer, şapka?
  5. Silah: Bütün şerit boyunca aynı patide mi kalıyor?
  6. Kenarlar: Çizginin etrafında arka plandan kalan piksel var mı?

Bir kare kontrolden geçemezse sadece o kare değiştiriliyor; mümkünse sayfadaki yedek çekimle. Tek bir kötü kare için koca şeridi baştan yapmak, süreçleri yavaşlatan şeyin ta kendisi.

Sıkıcı kurallar neden buna değer?

Küçük sprite'ları canlı hissettiren şey tutarlılık. Her karesi uyumlu bir yürüme döngüsü, hareket eden tek bir karakter gibi okunuyor. Tek bir karesi yanlış olan döngü ise bir hata gibi okunuyor; hangi karenin yanlış olduğunu kimse söyleyemese bile.

Kurallar süreci tekrarlanabilir de kılıyor. Sorunları bir oyuncu yerine bir script ya da bir kontrol listesi yakalıyor. Biçim bir kez sabitlenince aynı adımlar yönlü görünüşlerde de işe yarıyor; bu da kahramanlar sekiz yönde yürümeyi öğrenirken çok önemliydi.

Paw & Sword kasaba sahnesi: kalabalık bir piksel pazar meydanında çok sayıda kedi kahraman ve esnaf
Ekranda onlarca hareketli kedi varken küçük tutarsızlıklar hızla birikiyor.
Can Fabrika maskotu: gözlüklü ve İngiliz anahtarlı mor kedi mühendis, tahta bir tabelaya yaslanıyor

Kapı açık

Oyuncular, basın, yayıncılar ve iş birlikleri: hepsine açığız.