Hedefsizce Başarmaya Çalışmak: Yapmayın Etmeyin

Yine bir oyun geliştirici etkinliğindeyim. Genç arkadaş heyecanlı, anlatıyor da anlatıyor. Oyun geliştirmenin içine yeni giren pek çok yazılımcı gibi kendi frameworkünün üzerinde oyun yazma uğraşında. Eh, doğal olarak da uzun sürmüş, oyun daha bitmemiş. Soruyorum, “Neden kendi frameworkünü yazmak ile uğraştın?”. Suratından belli biraz bozuluyor. Canı öyle istemiş, öyle daha rahat ediyormuş. Herkesin kendi frameworkünü yazma sevdasını yanlış bulduğumu söylüyorum. Savunmaya geçiyor, ama savunduğu bir tez yok. O frameworkü niye yazdığını o da bilmiyor. Bir hedefi yok.

Bu aslında amatöründen profesyoneline herkesin başına gelebilen bir şey. Oyun geliştirme kreatif ve iteratif bir iş. Bir projeye başladığın nokta ile bitirdiğin nokta arasında dağlar kadar fark oluyor. Çoğu zaman bu iterasyonların arasında kayboluyor insan. Yolunu şaşırıyor, saçmalıyor. En başından sonunu görebilmek büyük bir beceri, disiplin ve deneyim gerektiriyor.

Kaosu Kontrol Altına Almak

Kaotik bir evrende yaşayan bizlerin zihinlerinde fırtınalar kopmasından doğal bir şey olamaz. Bu fırtınayı kontrol altına almak için evrendeki kaosa anlam kazandıran bilimdenscience-stand-back feyz almak gerekir. Bilimin bütün evrenin tantanası arasında ayağının yere basmasını sağlayan şey ise deneysel yaklaşımıdır. Düşün, test et, onayla. Basit ama değerli bir prensip. Bizim gibi sürekli yeni şeyler deneyen bir alan için ise paha biçilemez bir elmas.

  • Cevaplamaya çalıştığın soruyu tanımla/bil: Deneyinin sonunda başarmak istediğin şey ne?  (Bir framework yazmak) – Neden bunu başarmak istiyorsun? (Var olan framworklerdeki oyun geliştirme yaklaşımı benim workflow ihtiyaçlarımı karşılamıyor) – Bunu başarmak için seçtiğin yöntem doğru yöntem mi? ( Var olan framework üzerine extension yazmıyorum çünkü…)
  • Hipotez üret: Ne yapacağını planla. Bu plan çözmek istediğin soruya cevabı en kısa sürede bulmanı sağlasın. Odaklan, aynı anda bütün sorularına cevap arayıp deneyini bulandırma. Elde ettiğin sonuçlar bir sonraki kararını alabilmen için olabildiğince net olsun
  • Öngörüde bulun: Deneye başlamadan önce beklediğin sonucu bil. Bil ki deneyi istediğin sonuca kaydırmak için bilinçaltından hileler yapma. Bil ki sonuç farklı bir şey çıkarsa geçiştirme. Zıtlığı irdele, yanlışını düzelt.
  • Test et: Planını uygula deneyini tamamla. Deney sırasında beyninde pek çok kıvılcım çakacak. Odağından şaşma. O kıvılcımları bir kenara not et, her biri potansiyel bir deney. Ama bu deney değil! Her şey sırayla.
  • Analiz et: Orijinal fikrinde hata mı buldun? Düzeltmeye çalış. Olmadı mı? Hipotezine geri dön, yeni öğrendiğin bilgilerle tekrar iterasyon yap. Doğru yolu bulamazsan da hatanın farkında ol, gelecek kararlarını alırken önünün daha net gör.

Bütün bu  söylediklerimizden sonra örnek hikayemize geri dönelim. “Neden kendi frameworkünü yazdın?” sorusunun cevabı “Canım öyle istedi.” olmamalı. Burada bu soruyu sormamın sebebi aşağılamak kesinlikle değil, bozulmaca yok. Bekliyorum ki cevap “Alternatif bir programlama paradigması kullanıyorum.”, “Kart oyunları geliştirmeyi kolaylaştırıyorum.”, “X’de olup Y’de olmayan bir açığı kapatıyorum.” olsun. Hayır. normalde kabul etmem de “Öğrenmek için framework yazıyorum.”a bile razı oluyorum bazen. İstiyorum ki attığımız adımlar ileri doğru olsun. Mahpus avlularında hayali duvarlarımız arasında mekik dokumayalım. Yapmayın etmeyin!

*

Yazıyı bu deneysel yaklaşımın sadece teknik problemlere özgü olmadığını örnekleyerek bitirelim.

  • “Oyunum için hedeflediğim kaybolmuşluk duygusunu renk seçimiyle nasıl yansıtırım onu deniyorum.”
  • “Ortaokul – Lise çağı kız çocukları için hedeflediğim oyundaki ana karakter ile ilgili anket çalışması yapıp neyi beğenmişler göreceğim.”
  • “Bir sonraki oyunumda Player Generated Content kullanmayı düşünüyorum. Oyuncuyu bu yönde motive edici sosyal interaksyonları tasarlıyorum.”