Geçenlerde reddit’te şu gönderiye denk geldim. Asıl başlık “Eski bir geliştirici olarak, oyuncular keşke bilseydi dediğim şeyler var. İşte bazıları…” minvalinde bir şey. Eski bir endüstri çalışanı tarafından işin iç işleyişi üzerine güzel bir bakış açısı getirilmiş, ve açıkçası kendi tecrübemin bu kadar iyi bir bakış açısı getirecek kadar anlatmama yeteceğini sanmıyorum, o yüzden bu kategorideki birkaç yazım gibi, bu da genel olarak bir çeviri olarak başlayıp yine kendi gözlem ve düşüncelerim ile harmanlanacaktır.
Oyun Motorları Yardımcı Olur, ama Tüm Oyunlar Sıfırdan Yazılır
Unreal ve Unity gibi oyun motorları iş yükünü oldukça düşürüyor, bu doğru; ama bununla birlikte kodunuza bir seviye karmaşıklık daha ekliyor, ve asla özelleştiremeyeceğiniz ve değiştiremeyeceğiniz duvarlar da örüyor. Neden Unreal 3 motoru ile yapılan tüm oyunlar birbirine bu kadar çok benziyor, hiç düşündünüz mü? Çünkü bazı temel işlevlerde değişiklik yapmak, geliştirme ekibi açısından astarı yüzünden pahalıya gelen bir iş. (Yanisi: Birisinin Unreal motorunun kodunu okuması, anlaması, ve var olan hiçbir şeyi bozmadan genişletebilmesi gerekiyordu, ki adam/ay tarzında bir takvim ile hakikaten mesele.)
Kod ve assetler projeler arasında taşınabilir, ve hatta ara ara ekipler arasında da paylaşılabilir. Yine de, çoğunlukla işler yetişsin diye sabaha karşı saat 2’de çarpık çurpuk yazılan kodun üzerinden o kadar vakit geçmiştir ki, kimse kodun ne işe yaradığını veya neden öyle yazıldığını hatırlamaz. Ya kod sıfırdan yazılıp tekerlek yeniden keşfedilecektir, ya da hiç değiştirmeden kullanıp büyük bir hataya yol açmaması için dua edilecektir.
Bu tarz durumların sadece dandik geliştiricilerin başına geldiğini mi sanıyorsunuz? Hiç de bile. Bir geliştirme ekibi birebir aynı kişileri ihtiva etmediği, aşırı derecede zeki olmadığı (biliyorum, bazılarınız aşırı derecede zeki olduğunu iddia ediyor 🤦), ve hiçbiri geliştirme sürecine ara vermediği sürece hiç kimse diğer herkesin yaptığı işi hatırlamayacak, ve yeni oyuna eklemek için aynı şeyleri tekrar tekrar öğrenecektir.
Daha İyi Grafikler = Daha Yüksek Bütçe
İstisnasız tüm oyuncuların Unreal 4’ün yeni ekran görüntülerini gördüğünde ağzı sulanıyor. ‘Çok gerçekçi‘ diyorlar. Unreal motorunun geliştiricisi Epic Games’in her bir demo için ne kadar büyük bir ekiple ne kadar uzun süre uğraştığını biliyor musunuz? Ve bu demoların aslında sadece konsept içerikli scripted sahneler olduğunu, aslında oynanabilir gerçek birer oyun olmadığını…
Neden bu kadar çok oyunun sanki bitmemiş bir şekilde piyasaya sürüldüğünü hiç merak ettiniz mi? Çünkü oyun stüdyolarının çoğu reklamı yapılan içeriğin kalitesini karşılayacak zamanı ve kaynağı asıl işe ayırmıyor. Geliştirme süreci hayal edebileceğinizden çok daha pahalı ve çok daha fazla zaman götüren bir iş.
Geliştirici için çok genel bir önerme:
“Kodun ilk %90’lık kısmı geliştirme sürecinin ilk %90’lık zamanına denk gelir. Kodun geriye kalan %10’luk kısmı da geliştirme sürecinin geriye kalan %90’lık kısmına tekabül eder.”
Bu önerme sadece oyun geliştiriciler için değil, aşağı yukarı tüm geliştiriciler için geçerli sayılabilir. Büyük projelerde çalışmış herhangi bir geliştiriciye sorabilirsiniz.
Tek Bir Yeni Özelliğin Eklenmesi / Değiştirilmesi Yüzlerce Saat veya Daha Fazla Test Süreci Gerektirir
Büyük AAA stüdyolarının QA ekipleri (Kaliteciler) genellikle geliştirme ekibinden daha büyüktür, hem de açık ara farkla. Bir kod değiştirdiğiniz zaman muhtemel 3 sonuç vardır:
- Oyun çalışmıyor, herkes işi gücü bırakıp problemi aramaya başlar.
- Oyun belli bir yerde çalışmıyor OLABİLİR, yüz kişilik bir ekibin yeni sürümü baştan aşağı en ince noktasına kadar yeniden test etmesi gerekiyor.
- 3. ihtimalin her şeyin sorunsuz çalışmaya devam edeceği olduğunu mu sanıyorsunuz? Rüya görmeye devam edin.
Mesela… Pause (Oyun Durdurma) ekranına yapılan çok küçük bir değişikliğin hiçbir sonucu olmayacağını düşünüyorsunuz… ama oluyor. Oyuncu karakterin üzerinde yapılan değişikliğin oyun sonu boss savaşına etki etmemesi gerektiğini düşünüyorsunuz… ediyor. Bir modellemecinin bir seviyeye eklediği yeni bir modelin oyunu etkilememesi gerektiğini düşünüyorsunuz… etkiliyor. Ana fikri kaptınız mı? En ufak değişikliklerin bile oyun geliştirme sürecini durma noktasına getirdiğini gördüğünüzde oyunun neredeyse bitmiş olduğu gerçeği hiçbir işe yaramıyor.
Oyun Stüdyoları Üniversitedeki Proje Grupları Gibidir
Özellikle mühendislik veya alâkalı bölümleri okuyan arkadaşların bu kısımları çok güzel nostaljilerle hatırlamasını beklemiyorum. Hele hele bir İngilizce dersinde grup projesi yapanınız oldu mu? Grup projelerinin ne kadar harika (!) olduğunu hatırlıyor musnuz? Oyun Geliştirme de aynen böyle. Hatta tamı tamına böyle. Öyle bir gurp projesi düşünün ki 5 ayrı kişi yaratıcı yazma dersinde tek bir Word dokümanını beraber yazıyor. Şimdi de o ekipte 2 kişinin İngilizce bilmediğini düşünün. İşte oyun geliştirme.
Bazen piyasaya çıkan bir oyun kötü yönetim yüzünden kötü olur. Endüstride o kadar çok yetenekli ve istekli insan var ki, şaşarsınız. Kötü yönetim hemen her defasında tüm ekibi dibe sürükleyip ortay kötü bir oyun çıkmasına sebep olur. Dünyanın en iyi mürettebatı, kötü bir kaptan eşliğinde gemiyi batırabilir.
Tüm Oyunlar Herkesin Bildiği Çakallıklar ile Yapılır ve Beklenen Hatalar Vardır
İşlerin çok daha basit olduğu bir zamanı hatırlıyorum, oyun geliştirme kariyerime başlamadan çok önce, geliştiricilerin oyundaki karakterin adımlarını asfaltın içine sokmayı engelleyememesine söyleniyordum, ya da ağaç dallarının hareket etmemesine, falan filan. Karakterlerin yüzündeki, veya saçlarındaki, veya herhangi bir şeydeki gerçekçilikten uzaklığa nasıl küfrettiğimi hatırlıyorum.
Tahmin edin aslında olan ne? Bahsettiğim bu şeylerin hemen hiçbiri programcılar tarafından yaratılmıyor, oyuna yerleştirilmiyor. Bu tarz şeyler ASLA tam anlamıyla gerçekçi olmayacaktır. İstediğiniz kadar geliştirici kadrosunu büyütün, para ve zaman harcayın. Elinizdeki oyunda genellikle çok daha öncelikli problemler mevcut olacak, öyle ki bu tarz konular üzerine çalışmak hemen herkes tarafından para, zaman, ve enerji kaybı olarak görülecek.
Sanatçılar ve tasarımcılar oyun geliştirme sürecinin son zamanlarını genellikle yerdeki çatlakların üzerine halı koymakla ve duvardaki deliklerin üstüne tablolar asmakla geçirir. Buna polishing (cilalama) safhası deniyor. Büyük sanatçılar ve tasarımcılar bazen ortalama bir oyunu alıp efsane hâle getirebilir, ama bu her zaman en sonda yapılır, ve o da yeterince zaman ve para kaldıysa. Bu en son safhada yapılan iş hemen hemen tüm oyuncular tarafından en çok alkışlanan kısımdır, ve projenin en önemsiz ve en kötü planlanan kısmıdır.
Hiçbir Oyun Geliştirme Süreci Asla Erken Bitmez
Hiçbir oyun geliştirme süreci vaktinden önce bitmez. Her şeyi düzeltmek için asla yeterli vakit yoktur. Eğer bir oyun geliştirme ekibine bir oyunu yapmak için 100 yıl verirseniz, o 100 yılın tamamını kullanır ve sonunda da yeteri kadar vakit olmamasından yakınır. Bunun sebepleri şunlar olabilir:
- Geliştiriciler genellikle verilen zaman içerisinde ekibin maksimum çıktı üretebileceği bir zaman çizelgesiyle projeyi yönetirler. Yani zamanı projeye göre söylemek yerine, verilen zamana göre proje yaparlar.
- Hiçbir şey plana göre ilerlemez, yönetim çözülmesi gereken sıkıntılı problemler ile başbaşa kalır, ve ekibi proje içi teslim tarihlerinin ötesine zorlar.
- Projenin kompleksitesi arttıkça, test etme ve hataları düzeltme için ayrılan zaman ve işin zorluğu da orantısız şekilde artar. Sadece değişen özelliği değil, başka bir sürü şeyi de test etmeniz gerekir ki özel durumlar oyunu bozmasın.
- Daha fazla süre verilirse, geliştiriciler daha komplike ve detaylara özenilmiş büyük ve karmaşık sistemler yaratma konusundaki tutkularını açığa vururlar. Kimse çıkıp da “Tamam, bence bu iş oldu.” deyip bir daha geri dönmemezlik yapmaz.
Hiçbir Geliştirici Paranızı Almak için Sizi Dolandırmaz
Oyun Geliştiricileri işlerini sever. Yani ya işlerini sevecekler, ya da kafalarını duvarlara vura vura delirecekler. Hele hele iyi ve başarılı bir geliştirici olmak için gereken eğitim, tecrübe, ve çalışma ile seçebilecekleri daha iyi ödeyen, daha rahat ve daha az stresli olan binlerce başka iş varken. Onlar evrensel olarak başarılı olmak, kitleleri eğlendirmek, ve işleri ile tanınmak ister. Burası öyle salla başı al maaşı yapılabilecek bir ortam değil.
Bu oyunların kötü olmasının sebebi genellikle yatırımcılar, dağıtımcılar, ve patronlardır. Bu insanlar geliştirici değiller, ve geliştirme sürecini de iş yatırımı olarak görürler. Verdikleri kararların arkasında oyuncu kitlesine olan sevgileri değil, alacakları sonuç vardır. Maalesef, oyunun bütçesi ne kadar büyükse, yatırımcı ve dağıtımcılar da o kadar önemli hâle gelir. Tüm olayın yüksek kalite grafiklere bağlanması yüzünden de, oyuncular işin içine daha çok geliştirici olmayan kişinin girmesine sebep oluyor ve eninde sonunda oyunlar kötü birer ürün hâline geliyor.
Dolayısıyla nefretinizi geliştiricilere yöneltmeyin.