Piksel, Ter ve Gözyaşı: Deneyim Sahibi Olmadan Bir Oyunu Nasıl Hazırlarsınız?

Kaspersky Academy Başkanı Denis Barinov, Kaspersky Güvenlik Farkındalığı Eğitimleri Kıdemli Ürün Müdürü Oleg Ignatov ve Alexander Lunev, birlikte kaleme aldıkları makalede ana işleri oyun olmamasına rağmen bir oyun yapmaya çalışmanın getirdiği zorlukları ve bu yolda çıkardıkları dersleri paylaştı. Biz de bu son derece ilginç ve bilgilendirici yazıyı siz değerli Enterprise Next okurlarının beğenisine sunuyoruz.  

Ocak 2022’de Kaspersky’nin ilk mobil oyunu Disconnected piyasaya sürüldü. Oyun, çalışanlarının siber güvenlik temelleri konusundaki bilgilerini güçlendirmek isteyen şirketler için tasarlanmıştı. Oyun geliştirme konusu bir siber güvenlik şirketinden beklenemeyecek bir şeydi ama motivasyonumuz açıktı: Çekici ve etkileşimli bir siber güvenlik öğretme yöntemi yaratmak istiyorduk.

Güvenlik bilinci ve öğrenme yaklaşımlarına dair çevrimiçi uyarlanabilir platformlar, etkileşimli atölyeler ve hatta VR simülasyonları gibi alanlara uzanan denemelerimizden kaynaklanan, uzun yıllara dayalı deneyimimiz sonucunda, materyal ilgi çekici bir şekilde sunulsa bile insanların bunları pratikte uygulamaktan yoksun olduğunu fark ettik. Bu, bilgileri alsalar da her zaman uygulamaya geçiremeyecekleri anlamına geliyordu.

Bu sorunu çözmek için, oyuncuların tanıdık ve gerçekçi bir senaryo eşliğinde olaya dahil olmalarına olanak tanıyan bir mobil siber güvenlik oyunu hazırlamaya karar verdik. Disconnected adını verdiğimiz oyundaki oynanabilir karakterin temel amacı, iş arkadaşlarınızla ve yakın çevrenizle ilişkilerinizi sürdürürken siber güvenlikle ilgili doğru eylemler eşliğinde işle ilgili bir projeyi tamamlamaktı. Uzun lafın kısası güvenli bir şekilde davranırken, bunu sosyal çevreniz pahasına yapmamanız gerekiyordu.

Açıkça tanımlanmış bu hedefi aklımızda tuttuğumuz sürece yanlış giden ne olabilirdi ki? Meğer her şey yanlış gidebiliyormuş. İlk kez bir oyun yaparken bunun ne kadar zor olduğunu yaşayarak görmek ilginç bir deneyimdi. Şimdi bunun en zor yönlerinden bahsedelim.

Jason Schreier’in Blood, Sweat and Pixels (Kan, Ter ve Piksel) kitabıyla karşılaşana kadar neyle mücadele ettiğimizi anlamadık, hatta çoğu zaman kendimizi yetersiz hissettik. Oyun endüstrisinin iç işleyişleri hakkında bilgi veren bu kitap ister Diablo gibi satış rekorları kıran bir oyun olsun, ister küçük bir bağımsız oyun olsun karşılaştığımız her sorunun oyun geliştirme sürecinde çok karşılaşılan tipik sorunlar olduğunu gösterdi. O nedenle burada yer alan deneyimlerimizin oyun endüstrisi haricinde, kendi oyunlarını geliştirmek isteyen şirketler için de ilginç ve faydalı olacağını umuyoruz. Hatta oyun geliştirme sürecini biraz daha az bunaltıcı hale getirmeye bile yardımcı olabilir.

Hadi başlayalım.

Yapıyoruz, Derliyoruz, Çalışmıyor!

Her şeyden önce oyun geliştirme bir sanat. Başlangıçta bütçeniz ne kadar büyük olursa olsun, ne kadar çok kaynağa sahip olursanız olun, bu tür bir projeye adım attığınızda dünyanın en iyi oyununu yaratma fikriyle işe başlıyorsunuz. Ama bu düşünce sizi maalesef tuzağa çekiyor. Disconnected üzerinde çalışmaya başladığımızda 40 dakikalık, heyecan verici bir siberpunk macerası yapmayı planlamıştık. Ama bir yandan da oyunu olabildiğince alengirli yapmak istiyorduk.

Olay öyle bir yere gitti ki, geliştirme sürecinde ortaya çıkan tüm fikirler ve ek unsurlarla birlikte oyun süresi on saate çıkmıştı ve henüz bitirmeye yaklaşmamıştık bile. Bu durum geliştirmeyle dair sorunlarla birleşince ne olduğunu anlamadan bir yılı geride bıraktık.

Biz Buraya Nasıl Geldik?

Oyun, oyuncunun nihai sonuç üzerinde özerkliği veya kontrolü olmadığı sürece ilginç olmaz. Bu nedenle oyuncuların eylemlerinin senaryoyu etkilediğini ve farklı sonuçlara yol açabileceğini görmelerini istiyorduk. Bu düşünceyle hikayenin dört farklı sonu olmasına karar verdik. Ana karakterin çevresiyle iyi ilişkilerini sürdürürken şirketini kurtarmayı başardığı en iyi sondan, karakterin tüm cephelerde mutlak başarısızlıkla karşılaştığı en kötüsüne kadar.

Geliştirme sürecini daha da zorlaştıran bir diğer husus, günlük hayatımızda kullandığımız dijital araçları taklit etmek için bir dizi yerleşik etkileşimli öğeyi uygulama kararı almamızdı. Bu tür öğeler arasında karakterlerin olay örgüsü boyunca ilgili siber güvenlik kurallarını uygularken, aynı zamanda vakaları çözmeye yardımcı olmak için kullanabileceği tarayıcılar, mobil uygulamalar ve mesajlaşma yazılımları yer alıyordu. Örneğin oyunda karakterin bir şifre oluşturması, girmesi ve hatırlaması gereken bir şifre tanıma modülü yer alıyor. Bu şifreyi unutursa teknik desteğe gitmesi gerekiyor ve bu da oyuncuya zaman kaybettiriyor.

Bu oldukça basit eylemi oyuna eklemek bile geliştirme aşamasında tamamen ayrı bir alt sistem kurgulamayı gerektiriyordu.

Mesajlaşma yazılımı, e-posta ve görev takipçisi. Oyundaki karakterlerin olduğu kadar çağdaş insanın da bunlara ihtiyacı var.

Geliştiricimiz bu öğeleri ayrı ayrı oluşturduğunda her şey harika çalışıyordu. Ancak bir araya getirildiklerinde etkileşimli modüller arasında çakışma oluyordu. Hatalar yüzünden oyunu oynamak imkansız hale geliyordu. Mesela yerleşik uygulama düğmelerine bastıktan sonra oyun çöküyordu. Geliştirici eski hatalarla baş edemezken biz yenilerini bulmaya devam ettik. Belli bir noktada geliştirici bizden yavaşlamamızı istedi ve bir süre sonra e-postalarımıza yanıt vermeyi bıraktı.

Başta bunu anlayışla karşıladık. Ancak oyunun bir diğer bozuk sürümü ve yine bir bahaneyle karşılaşınca projenin kontrolden çıktığını hissetmeye başladık. Bunu fark edip oyunu kurtarmanın yollarını düşünmeye başladığımızda, geliştirici ekip taahhütlerini yerine getiremeyeceğini ve projeyi bırakacağını söyledi. Bu, oyunun yayınlanmasından sadece birkaç ay önce, son aşamada olan bir şeydi.

Nasıl oldu da başımıza gelecekleri fark edemedik?

Bunun sebebini anlamak için endüstrinin genelinden bahsetmemiz gerekiyor. Deneyimlerimize göre neredeyse tüm oyun geliştirici şirketler, en azından Doğu Avrupa’dakiler eşit olmayan bir şekilde ikiye ayrılıyor. Daha küçük olanlar çok yetenekli profesyoneller tarafından temsil edilirken büyük olanlar deneyimsiz amatörlerden oluşuyor. Deneyimli olanlar iş ve bütçe beklentilerini karşılamadığı için bağımsız bir oyun üzerinde çalışmak istemiyor. Amatörler de seçenek değil, çünkü projenizi çok tecrübesiz birinin elinde riske atmak istemiyorsunuz.

O zaman yapmanız gereken oyununuzu idare edebilecek kadar yetkin, ama aynı zamanda küçük projeler üzerinde çalışmakla da ilgilenen bir yüklenici bulmak.

İlk yüklenicimiz mükemmel bir seçenek gibi görünüyordu. Oyun endüstrisinin parlak isimleri tarafından kurulan küçük, yeni bir şirket. Bize tamamlanmış projelerden oluşan geniş bir portföy sunamamış olsalar da, arkasında yer alan isimler ve aldığımız tavsiyeler bu ekibin gelecek vaat ettiğini, onlara güvenebileceğimizi hissettiriyordu. Biz de güvendik ve projeyi amaç ve hedeflerimiz doğrultusunda geliştirmeleri için ellerine bıraktık. Başlangıçta ekip iyi performans gösterdi ve birlikte çalışmaktan keyif alıyorduk. Hatta bazılarımız, bir yükleniciyle iletişimin bu kadar pürüzsüz olamayacağına ve bunun bir aldatmaca olabileceğine dair şakalar yapıyordu. Kaspersky oyun geliştirmede uzman bir şirket olmadığı için, ilk oynanabilir sürümler gelene kadar işin teknik kısmının doğru gidip gitmediğini kontrol edemedik.

İlk geliştirici işi bıraktıktan sonra başka bir geliştirici bulmak için yeni bir ihale başlattık. Bu da yukarıda bahsettiğimiz sektör sınıflandırması nedeniyle biraz zor oldu. Potansiyel tedarikçilerden yeterince rekabetçi bir teklif almayı zar zor başardık. Böylece sanal gerçeklik projemizde de birlikte çalıştığımız bir şirket olan Coderaptor ile yeni bir sözleşme imzaladık. Bu ekibin kanıtlanmış bir uzmanlık geçmişi vardı. Yine de başka birinin kodunu yeniden yapmak, sıfırdan bir oyun geliştirmekten çok daha karmaşık bir süre. Özellikle kod sistematize edilmemişse ve eski bir yazılım üzerinde yazılmışsa. Evet, bu da ilk geliştiricimize dair yaşadığımız bir diğer sürprizdi bizim için.

Oyunun temelini oluşturmak için Unity oyun motorunu tercih ettik

Articy, etkileşimli bir hikaye anlatımı kurgulamamıza yardımcı oldu

Coderaptor ekibi sadece oyunun geliştirme sürecini tamamlamakla kalmadı, aynı zamanda tüm oyun kodunun gövdesini yeniden yapılandırmak zorunda kaldı. Bu süreci kolaylaştırmak ve hızlandırmak için modüllerin neredeyse yarısını terk etmek ve oyunu önemli ölçüde kısaltmak zorunda kaldık (başlangıçta oyun son halinden altı kat daha uzundu). Bütün bunlar, oyunu planlanan çıkış tarihinden neredeyse bir yıl sonra piyasaya sürmemize neden oldu.

Öff, Çok Sıkıcı!

Siber güvenliğin temellerini öğreten ilgi çekici bir deneyim kurgulamak için bir oyun projesine başladığınızda, ortaya çıkan ürün sahada çalışan meslektaşlarınızın bile ilgisini çekemiyorsa ortada bir sorun var demektir. Ekibimiz Disconnected’ın ilk derlenmiş sürümünü oynamaya çalıştığında, bir şeylerin yanlış gittiği açıktı.

Yeni geliştirici ana teknik sorunları çözmemize yardımcı olduktan sonra oyunu diğer kişilere göstermeye başladık. Hikayeyi veya oynanabilir bir karakter olarak yapabilecekleri eylemleri anlamadılar. Konu dağınıktı, detaylar işe yaramazdı, bazı önemli bağlantılar eksikti. Bu, kullanıcıları görevlerini tamamlamaktan alıkoyuyordu. Örneğin ana karakter, insanların daha üretken olmasına yardımcı olmak için insan implantları geliştiren bir girişim olan SmartFrames için çalışıyordu. Bu küçük şirket, yenilikçi cihazlarını herkes için erişilebilir kılmak istiyordu. Globis ise girişimi satın almak isteyen büyük bir uluslararası şirketti ve oyuncunun onları durdurması gerekiyordu. Burada durumun çoğu kişi tarafından savaşılması gereken “kötü” bir amaç olarak algılanmayacağını gözden kaçırdık.

Kendi Kendimize Öğrenme Zamanı

Başlangıçta ilk geliştiriciyle çalıştığımızda, ekibinde akıştan sorumlu bir senaryo tasarımcısı vardı. Bununla birlikte karakterlerdeki motivasyon eksikliği ve eylemlerinin arkasındaki mantık dahil olmak üzere hikayedeki kusurlar, oyun kısaldıkça ortaya çıktı. Coderaptor’un yeni ekibi projenin yalnızca teknik kısmından sorumlu olduğundan, olay örgüsünü düzeltmemize yardımcı olacak bir uzman yoktu. Bu aşamada profesyonel bir senarist tutamadık, çünkü bu daha fazla gecikmeye ve bütçe artışına yol açacaktı.

Böylece kendimiz senaryo tasarımcıları olduk. Ekibimiz, her sahneyi ve hikaye akışını yeniden düşünerek olay örgüsünü yeniden tasarladı. Oyun planında neyin yanlış olduğunu ve neyi nasıl iyileştirebileceğimizi daha iyi anlamak için Robert McKee’nin “Öykü” kitabı gibi kaynakları kullanarak hikaye anlatımının ilkelerini inceledik. Aristo’nun “Poetik”i de dahil olmak üzere diğer drama teorilerine ve farklı oyunların hikayelerine baktık. Mesela olay örgüsü ilkeleri Detroit: Become Human oyunundan ilham alındı. Bunları yaparken bir oyun planı yaratmanın çok ilginç bir süreç olduğunu keşfettik. Oyun sadece ekranda beliren resimler ve metinlerden ibaret olsa da, yepyeni bir dünya yaratmanız ve onu yöneten yasaları belirlemeniz gerekiyordu.

Sadece bir ay içinde oyunun her bölümünü dramatik yapıya uygun olarak yeniden yazdık. Konu, oyuncunun hedefleri tamamlamak için çalışmak istemesinin motive edici nedenlerini özetliyordu. Hikaye mantıkla desteklenince oyuncuların ilgisini çekmeye başladı. Meslektaşlarımızdan gelen geri bildirimler, onların da “Disconnected” adını verdiğimiz bu dünyaya daldığını gösterdi. İnsanlar oyunla duygusal bağ kurdular. Diğer olası sonlarda neler olduğunu öğrenmek istediler ve farklı olay örgülerinin nasıl açılacağına dair önerilerimizi istediler.

Konunun yeniden inşası iyi bir hamleydi. Hikayeyi geliştirirken daha fazla siber güvenlik vakası kurgulayarak oyunu müşterilerimiz için daha kullanışlı hale getirdik. Güvenlik eğitiminde uzmanlaşmış bir ekip olarak, siber risk oluşturan gerçek durumların herhangi bir senariste oranla çok daha fazla farkındayız. Bu bilgiyi kullanma fırsatını kaçırmadık.

Ana motivasyona gelince. Son sürümde Globis, implantlara reklam koymak amacıyla girişimi satın almaya çalışıyor. Planları endişe verici ve karşı koymaya değer görünüyor. Biz de kısa bir sahneyle sonun habercisi olarak oyuna başlamaya karar verdik. Bu oyunu baştan ilginç kıldı, oyuncuların hikayede neler olduğuna dair merakını artırdı ve öğrenmek için oynamaya teşvik etti.

Ya Kimse Karakterlerinizle Oynamak İstemezse?

Bizim için bir diğer zor görev, oyuncunun etkileşim kurmak ve oynamak istediği karakterleri yaratmaktı. Bütçemizi tüketmemize ve dahili oyun test ekibimiz olmamasına rağmen, Kaspersky’nin potansiyelinin tamamını kullanmaya karar verdik ve yardım için iş arkadaşlarımıza döndük. Oyun hakkında genel olarak geri bildirim almak için oyunu insan kaynakları, pazarlama, finans dahil olmak üzere farklı departmanlardaki iş arkadaşlarımıza gösterdik. Bu arada profesyonel Safeboard test uzmanları, ürünümüzde hata olup olmadığını kontrol etmeye yardımcı oldu. İlk geri bildirimler, insanların ana kahramanlardan birinin sorunlu olduğunu hissettiklerini gösterdi. Bu da karakterlerimizin mükemmel olmaktan uzak olması demekti.

Bir oyun çoğunlukla diyalogdan oluşuyorsa ve farklı zamanlarda farklı parçalar üzerinde çalışıyorsanız, resmin tamamına dışarıdan bakmak önemlidir. Bunu yaptığımızda, ana kahramanın partnerinin iyi bir insan olarak karşımıza çıkmadığını gördük. Sürekli olarak oynanabilir karaktere görevler veriyordu, kendi başına hiçbir şey yapmıyordu ve çok kolay güceniyordu. İnsanlar davranışlarını bu karakterle ilişkilendirmek istemedi. Bunu düzeltmek için karakteri baştan ele aldık. Aşırı gerilime sebep olan cümleleri düzenledik ve bu karakterin ana kahramana dair bazı isteklerini diğer karakterlere dağıttık.

Özellikle görsel roman tarzında bir oyun ortaya koymaya çalışıyorsanız, yapay ve oyuncuda herhangi bir duygu oluşturmayan karakterlerden uzak durmanız gerekir. Hepimiz romanların karakterleri tarafından yönlendirildiğini biliyoruz. Bu yüzden onların zorlayıcı olması önemlidir. Kahramanlarımızın ilgisini çekmesini sağlamak için her birine bir hayat hikayesi oluşturduk. Oyun boyunca sadece birkaç yorum yapan, küçücük bir role sahip olanlara bile. Bu hikayeler doğrudan oyuna dahil edilmese ve oyuncular bunların çoğu zaman var olduklarını fark etmese bile, bu teknik karmaşık ve ilişkilendirilebilir karakterler yaratmada etkilidir. Her karakterin arkasında bir hikaye olduğunda, oyuncular bunu bir şekilde hisseder ve oyunumuzun kahramanlarıyla etkileşime girmeye daha meyilli olurlar. Bunun nasıl çalıştığını hala tam olarak bilmiyoruz. Sadece işe yaradığını biliyoruz.

Karakterlerin görünümü de sorunlara neden oluyordu. Örneğin bir kadın karakter ve ana kahramanın partneri olan Sasha’ya çok zaman harcadık. Nasıl göründüğünü tanımlamak, karar vermek günler sürdü. Karakter gelişiminin başlangıcında, doğru yüz detaylarının nasıl olacağına ve karakterine hangi kıyafetlerin daha uygun olacağını sanatçılara açıklamak zordu. Bunlar ancak çok sayıda denemenin ardından netleşti.

Bunun pratikte nasıl olduğuna bakalım. Mesela aşağıda ilk varyantlardan biri var. Esrarengiz vadi etkisini duydunuz mu hiç? İnsan benzeri robotların kendileriyle karşılaşan gerçek insanlar üzerinde yarattığı duygusal tepkiye bu isim veriliyor ve bu genellikle bir çeşit “rahatsızlık” olarak ortaya çıkıyor.

Siz oyundaki ana kadın karakter için hangisini seçerdiniz?

Bizim seçimimiz işte bu (Sasha farklı ruh halleriyle resmedilmiş):

İyi haber şu: Ana karakterlerden birinin stiline ve görünümüne karar verdikten sonra, diğerleri üzerinde çalışmak çok daha hızlı bir süreç. Sanatçılar tüm karakterlerin görsellerini genel tasarım konseptine uyacak şekilde hizalayarak, referans için onaylanmış karaktere dayalı kahramanlar çizmeye devam ederler. Bununla birlikte bazı önemli unsurlara daha fazla dikkat edilmesi gerekebilir. Bunlara zaman ayırmakta bir sakınca yok. Bizim olgumuzda en çok tartışılan ikinci konu mesela kahramanlardan birinin protez kolunun nasıl görüneceğiydi.

Sonunda Başardık!

Bu hikayenin mutlu bir sonu var. Nihayet ilgi çekici bir senaryo ve ilginç karakterlere sahip bir oyun yaratmayı başardık. Eğlence ile eğitim arasında doğru dengeyi bulduk. Merak ediyorsanız iOS için buradan, Android için buradan indirebilirsiniz.

Son olarak sizinle deneyimlerimizden çıkardığımız bazı dersleri paylaşmak isteriz.

  • Bir oyun geliştirme şirketi değilseniz ve hedeflerinizi yüzde 100 gerçekleştirmek için mutlaka bir oyun yapmanız gerekmiyorsa, oyun yapmayın. Bu tür bir proje çok fazla kaynak, çaba ve çelik gibi sinir sahibi olmayı gerektiriyor. Gerçekten ihtiyacınız olmadığı sürece başarılı olmanız çok zor.
  • İlk tavsiye sizi korkutmadıysa ve bir kez başladıysanız o zaman vazgeçmeyin. Bir oyunun geliştirilmesi diğer projelerden farklıdır. Deneyimli bir yönetici olsanız bile, bir oyun üzerinde çalışmaya başladığınızda proje için yol haritası oluşturmalı, beklenmedik gecikmeleri ve uzun sürecek zorlukları göz önünde bulundurmalısınız. Oyununuzun son halinden asla tam olarak memnun kalmayacaksınız, ama çok da sorun değil.
  • İşi basit tutun. Bazen en basit oyun öğeleri, bir dizi karmaşık öğeden daha iyi çalışır. Bu oyunun hem teknik hem de anlatım bölümleri için geçerlidir. Sorun şu ki, küçük bir mobil oyun yapayım derken bile Mass Effect gibi yola girmekten kendinizi alamayacaksınız. Ancak oyun, sıkı oyuncu olmayanları hedefliyorsa basit mekanikler yeterlidir. Aksi takdirde oyun mantığını ortalama bir kullanıcı için fazla karışık hale gelir. En iyi yaklaşım önce basit bir şey yaratmak, ardından onu aşamalı olarak daha karmaşık hale getirmektir.
  • Yüklenicilerle çalışırken dikkatli olun. Oyun geliştirme endüstrisi risklerle doludur ve bunları en aza indirmek için geliştiricinize güvenmeniz gerekir. Bir yüklenici, tamamlanmış projelerden örnekler ve önceki müşterilerinin iletişim bilgilerini sağlayabilmelidir. Yükleniciyle yapılan sözleşme, hizmetlerini küçük kilometre taşlarına bölmeli ve bir şeyler ters giderse her kilometre taşında sözleşmeyi feshetme seçeneğini içermelidir.
  • Her şeyi sorgulayın. Güvenilir bir geliştiriciyle çalışıyor olsanız bile, oyunun yaratım sürecinin her yönüyle planlandığı gibi gittiğinden emin olmalısınız. Projenin son aşamalarında çözülemeyen sorunlarla karşılaşmak istemiyorsanız, tüm geliştirme süreci boyunca neler olduğunu anlamanız gerekir.
  • Dışarıdan görüş alın ve hedef kitlenizi unutmayın. İlk test sürümünü alır almaz meslektaşlarınıza ve arkadaşlarınıza gösterin, onlardan geri bildirimlerini paylaşmalarını isteyin. Bu sadece yaratıcılarına ve geliştiricilerine değil, herkese hitap eden bir oyun geliştirmek için çok önemlidir.
  • En iyi uygulamaları inceleyin. Hangi oyunların hedeflerinizi ve oyununuzla ilgili isteklerinizi en iyi şekilde yansıttığını belirleyin. Ardından süreçler hakkında mümkün olduğunca fazla bilgi bulmaya çalışın. Bu oyunların hangi mantıkla çalıştığını ortaya çıkarın. Ek olarak, oyun geliştirmenin ana yönleri hakkında önemli bilgiler içeren okunması gereken bazı kitaplara göz atabilirsiniz. Bunlara yukarıda değinmiştik.
  • İyi bir ekip kurun. İyi ekip kurmak başarının önemli bir bileşenidir ve bizim örneğimiz bunun bir kanıtı. Ne zaman bir sorun çıksa çabalarımızı birleştirdik. Oyun geliştirme uzmanı olmamamıza rağmen, eksiklerimizi ekip çalışması ve aldığımız destekle kapattık.

Sizin de bu konuda söyleyecekleriniz mi var?