Alchemist's Castle Postmortem

Alchemist's Castle Postmortem
Yazının orijinaline blogumdan ulaşabilirsiniz.

Nedir Bu Postmortem?


Ölüm sonrası diye Türkçeye çevirilebilecek bu kelime adli tıpta çok kullanılır. “Ölüm sonrası darbe” gibi terimleri polisiye dizilerde sık sık duyarız. Fakat oyun dünyasındaki anlamı biraz daha farklı ve bu yazının kadavralarla veya otopsi ile bir ilgisi yok.

Postmortem, oyun çıktıktan bir süre sonra yazılan, kısaca geliştirme sürecini anlatan yazılardır. Bu tarz yazıları Gamasutra gibi sitelerde bol bol bulabilirsiniz. Söz konusu yazılarda geliştime sürecinde karşılaşılan zorluklardan, yolunda giden ve gitmeyen süreçlerden bahsedilir. Geliştirici açısından geriye dönüp bakmak, kendisini değerlendirmek ve biraz da reklam yapmak için oldukça güzel bir fırsat oluyor bu yazılar. Öte yandan okuyucular da geliştiriclerin tecrübelerinden faydalanıyor, böylece karşılıklı kazanç sağlanabiliyor.

Bu yazı da tam olaran böyle bir yazı olacak. “Alchemist’s Castle’ın geliştirme süreci nasıl geçti? Bu süreçte neleri doğru yaptık? Nerede hata yaptık?” gibi soruların cevaplarını vermeye çalışacağım.

Sebebi Neydi Ki?

Uzun bir süredir ne iş yerinde ne de boş vaktimde herhangi bir proje bitirememiştim. Ufak da olsa, seveceğim ve gurur duyabileceğim bir oyun yapma kararı aldım. Milyonlar satmasını ya da oyun tasarımı konusunda çığır açmasını beklemiyordum. Sadece sinir etmeyecek, kısa ve hoş bir tecrübe yaşatmasını istiyordum. Çocukluğumda PlayStation 1’de oyandığım Legacy of Kain: Soul Reaver oyunundan ne kadar çok zevk aldığımı hatırlayıp “Metroidvania” türünde bir şey yapmaya karar verdim.

Legacy of Kain: Soul Reaver

Süreçte Yolunda Gidenler

1. Görseller

Basit dahi olsa kısa sürede düzgün görünecek görsel yapmam mümkün değildi. Bu nedenle her Global Game Jam’de birlikte çalıştığım çizer geldi aklıma; İbrahim. Daha önceden de çalışmış olduğumuz için iletişim kurabiliyor ve birbirimizin dilinden anlıyorduk. İbrahim’e hazır bir oyun verirsem görsel çizip çizemeyeceğini sordum ve aklımdan geçenleri anlattım. Fikir onun da hoşuna gitmiş ve o da bitmiş bir projesi olsun istiyordu. Birkaç haftada içinde Kenney’nin bedava görsellerini kullanarak ufak bir prototip yaptım. Artık üzerinden konuşabileceğimiz bir projemiz vardı ve İbrahim yavaştan görsellerini çıkarmaya başlamıştı.

İbrahim'den önce ve İbrahim'den sonra

2. Karakter Kontrolleri


Bir oyunda kontroller en önemli bileşenidir. Tasarım, görseller, sesler gibi unsurlar ne kadar iyi olursa olsun oyuncu karakterini kontrol etmekte zorlanıyorsa o oyundan zevk alması çok zordur. Bu nedenle önceliğim karakterin hareketlerini oturtmaktı. Neyse ki oldukça basit sayılabilecek bir kod işimi gördü. İşin bu kısmı nispeten kolay bir şekilde aradan çıkmış oldu.

3. Küçük Ölçek

Oyunun ölceğini küçük tutmuş olmamız işi fazla uzatmadan önemli olan kısımlara yoğunlaşmamızı kolaylaştırdı. İlk planımıza göre oyun 3 ayda bitecekti. Fakat bu küçük ölçeğe rağmen oyunun çıkışı 5 ayı buldu. Bunun 3.5 – 4 ayı aktif geliştirme, 1 – 1.5 ayı ise test ve hata düzeltmek ile geçti. Daha büyük ölçlekli bir projeye girişseydik bitirene kadar hevesimiz kaçabilir proje yarıda kalabilirdi. En iyi ihtimalle ortaya daha kötü bir ürün çıkacaktı.

4. Bölüm Tasarımı


Oyunun temeli ve mekanikleri bittikten sonra sıra bölüm tasarımına geldi. Ne var ki ikimiz de bu konuda tecrübesizdik. Ufak bir iki game jam oyunu haricinde iki boyutlu platformer için bölüm tasarlamamıştık. Bu konuda hemen araştırma yapmaya koyuldum. İlk fark ettiğim şey bölüm tasarımı konusunda materyal bulmanın zor olmadığı idi. İkinci fark ettiğim şey ise bütün bu materyallerin 3D ve özellikle FPS oyunlar ile ilgili olduğuydu. 2D platformer için birkaç tane çok iyi Mario 1-1 bölümünü inceleyen video ve makale haricinde neredeyse hiç materyal yoktu. Neyse ki 3D bölümler için geçerli biçrok prensibi 2D’ye uyarlamak çok zor olmadı. Sancılı geçen bir ay gibi bir sürenin ardından oyun dünyası hazırdı. 2D bölüm tasarımı konusunda ilk tecrübemiz olmasına karşın 2017 yılında “Kristal Piksel: En İyi Tasarım” ödülünü almayı bir şekilde başardık (hala şaşkınız).




5. Doğru Fiyat

Projeye başlarken oyunu telefona bedavaya çıkarmayı planlıyordum. Sonuçta amacım para kazanmak değildi, sadece güzel bir proje çıkarmaktı. Bu durum İbrahim’i mutlu etmedi ve oyunu 1 dolar yapmaya karar verdik. Elimiz değmişken Steam’e de koyalım dedik ve mobil versiyonunu erteledik. Geliştirme sürecinde verdiğimiz en iyi kararlardan birisiydi. Hem hedef kitlemiz Steam’deydi hem de telefona nazaran daha fazla para kazanabildik. Fiyatı düşük tutmamız bize pozitif inceleme olarak geri döndü. Oynayanlar bu fiyata bu kadar iyi bir oyun görmeyi beklemiyordu. İnceleme yazan insanlar oyunun devrimsel bir özelliği olmamasına karşın 1 dolara değdiğini ve önerdiklerini söylüyordu. Hatta oyunun fazla ucuz olduğuna dair geribildirimler dahi aldık.


6. PlayStation 4

Oyunu çıkardıktan bir ay kadar sonra yollarımız Kodobur ile kesişti. Sağolsunlar oyunu PS4’e çıkarmamıza yardımcı olacaklarını söylediler. Unity oyun motorunu kullandığımız için oyunu port ederken (PS4’te çalıştırmaya çalışırken) teknik açıdan pek zorluk yaşamadık. Problemler “Certification” denilen süreçte başladı. Oyunu bir konsola çıkarmanız için öncelikle o firmadan onay almanız gerekiyor ve bu işleme “Certification” deniyor. Ne var ki konsol üreticileri bir iki genel belge haricinde bu konuda pek doküman sağlamıyor. Bu nedenle süreç deneme – yanılma yolu ile devam etti. Her versiyon için cevap almamız iki haftayı bulduğundan oyunu üç ay sonra anca çıkarabildik. Peki neden bundan “Yolunda Gidenler” kısmında bahsediyorum? Çünkü elde ettiğimiz kazancı düşününce yaptığımız işe kesinlikle değdiğini görüyorum. Artı olarak oyun PS4 gibi bir konsolda olduğu zaman çok daha ciddiye alınıyor.

Süreçte Yolunda Gitmeyenler

1. Programlama

Uzun süren bir projede yazılımcının koda bakım “Bunu kim yazmış?” diye cümleye başlayıp sövmesi oldukça sık karşılaşılan bir durum. Ufak bir araştırma sonucunda da muhakkak kendi kodu olduğu ortaya çıkar. Alchemist’s Castle buna bir istisna değildi (tek fark projede suçu atabileceğim bir yazılımcının olmamasıydı). Daha proje bitmeden yer yer , “Şair burada ne demek istemiş?” diye anlamsızca ekrana baktığım oluyordu. Hem projeyi küçümsediğim hem de bazı konularda yeterince tecrübem olmadığı için kod birbirine girmişti.

Mobil versiyonunu erteleme kararı aldığımız için oyun çıkana kadar bir telefona atıp çalıştırmayı denememiştim. En son bir deneme yaptıktan sonra performansın ne kadar sorunlu olduğunu fark ettim. Bu problem sadece mobil platformlarla sınırlı kalsa iyiydi ancak çok eski bilgisayarlarda denediğimde de durum farklı değildi. Performans kaybının ana sorumlusu oyundaki objeleri hareket ettirmek ve çarpışmaları algılamak için kullandığım yöntemdi (raycast). Oyunu bitirmiş ve çıkarmıştık. Kodu da spagettiye çevirmiş olduğum için geriye dönüp büyük değişiklikler yapmam mümkün olmadı. Böylece mobil sürümünü rafa kaldırmak durumunda kaldık.

2. Günlük Girdileri

Tasarım açısından oyunu basit tutmuş olmamız bu konuda çok fazla hata yapamayacağımız anlamına geliyordu. Her şeye rağmen zoru başardık. Oyuncunun hikayeyi öğrenmesi için oyunun çeşitli yerlerine gizlenmiş günlük sayfalrını bulması gerekiyor. Bulduğun her sayfa günlükteki bir girdiye tekabül ediyor. Problem günlükteki girdilerin sıra ile açılmıyor olması. Yani X odasındaki sayfayı bulduğunuzda günlükte her zaman Y girdisi açılıyor. Bu da hikayede kopukluklara sebep oluyor. Sayfaların yarısını topladığınız taktirde hikayenin sadece başını ve sonunu açmış olma ihtimaliniz oldukça yüksek. Hikayeyi öğrenmenin en iyi yolu önce bütün sayfaları toplayıp sonra günlüğü açıp baştan sona okumaktan geçiyor ki bütün sayfaları toplayan insan sayısı pek fazla değil. Günlükteki girdilerin ne olursa olsun sıra ile açılması, hikayenin çok daha iyi anlaşılmasını sağlayabilirdi.



3. Pazarlama

Nam-ı diğer marketing. Şüphesiz ki her bğaımsız geliştiricinin duyunca tir tir titremeye başladığı bir kelimedir bu. Becerdiğini iddia eden pek yoktur, zira becermişse oyunlarından iyi para kazanıyor, önümüzdeki ay ne yesem diye kara kara düşünmüyordur. Benim planım birkaç Türk youtuber’a oynatmaktı. Ufak dahi olsa dergiler de inceleme yapar diye düşünüyordum. Oyunun Türkiye’deki fiyatı da ucuz olduğundan (2.1 tl) insanlar alır diye thmin ediyorum. Lakin öyle olmadı. Bir iki kişi oyunu oynadı ve Oyungezer’de inceleme çıktı ama bunlar oldukça geç, oyunun çıkışından bir iki ay sonra olmuştu. Acı bir şekilde öğrenmiş oldum ki pazarlama işine ne kadar erken başlanırsa ve bu konuda ne kadar çok aktif olunursa o kadar iyi olurmuş.

Sonuç

Yaptığımız hatalara rağmen öğrendiklerimiz ve kazandıklarımız ağır basıyor bana sorarsanız. Bu süreçte programlamayı (!) ve bölüm tasarımını öğrendim, kazandığımız para İbrahim’in beddeli askerlik yapmasına yetti. Ama en önemlisi kazandığımız iki ödül oldu. 2017 Kristal Piksel’den En İyi Tasarım ödülü ile, 2018 Big Indie Fest @ReVersed – Viyana festivalinden En İyi Oyun ödülü ile ayrıldık. Artı olarak katıldığımız konferanslarda Rami Ismail ve Jonathan Blow gibi büyük isimlerle sohbet etme şansımız oldu. Sırf bir proje bitirimiş olmak için yaptığımız küçük ve basit 2D platformer metroidvania’dan başka ne bekleyebilirdik ki?

Wow...

Anton Semchenko: anton.website

İbrahim Hakkı Uslu: artstation.com/hadozee

Oyunu alabileceğiniz platformlar:

Steam
Playstation 4
Jump
Itch.io
Microsoft Store
Loot.game
Yorumlar