Başlangıç Rehberi
Demek sen de oyun oynamaktan hoşlanıyorsun. Hatta hoşlanmaktan da öte, o kadar çok seviyorsun ki oyunları pasif bir şekilde oynamak artık sana yetmiyor. Kendi dünyalarını yaratarak deneyimlediğin tecrübeleri ve heyecanları başkalarına yaşatmak, hislerini başkaları ile paylaşmak istiyorsun. Bu nedenle sen de oyun geliştiricisi olmak istiyorsun. Daha yolun başındaysan, nereden başlayacağını ve ne beklemen gerektiğini bilmiyorsan doğru yerdesin!
Devam etmeden önce belirtmek istiyorum ki bu yazının amacı gaza getirmek, “Aslansın sen! Yaparsın! Rockstar da kim? Yeterince çalışırsan CD Projekt Red önünde diz çöküp tövbe edecek!” mesajını vermek değil. Aksine, bu işin ne kadar zor ve zahmetli olduğunu, öğrenmenin ne kadar uzun sürebileceğini anlatmaya çalışacağım.
Eğer oyun geliştirmenin bütün gün oyun oynamak gibi olduğunu düşünüyorsan ve bu yüzden oyun yapmak istiyorsan yazıyı hemen burada okumayı bırakabilirsin. Oyun geliştirmenin oyun oynamak ile uzaktan dahi pek bir alakası yok. Birini sevmen kesinlikle diğerini seveceğin anlamına gelmiyor.
Benzer şekilde eğer fikir adamı olmak ve insanlara ne yapacaklarını veya nasıl bir oyun yapmaları gerektiğini anlatmak istiyorsan da okumayı bırakıp kendine başka bir meslek edinmelisin.
Motivasyon
Bu işe başlayan veya başlamak isteyen hemen hemen herkes gibi senin de favori oyunun vardır. Muhtemelen oynarken gaza gelip benzer bir oyun yapmak istemişsindir. Hatta aklında nasıl daha iyi yapabileceğine dair birçok fikir de vardır.
- “X oyunu çok güzel ama bir de uzayda geçse, uzay savaşları olsa tam süper olacak!”
- “Y oyunu gerçek mekanlarda geçse peynir ekmek gibi satar!”
- “Z oyununa X oyununundaki özellikleri eklersek, bir de İstanbul’u gerçek hali ile modelledik mi tamamdır!”
İyi haber hemen hemen herkes buna benzer bir heves ile oyun geliştiricisi olmaya karar vermiştir. Kötü haber ise oyun tasarımı böyle bir şey değil ve senin bu konu hakkında en ufak bir fikrin bile yok. Ömrün boyunca yemek yemiş olman seni aşçı yapmaz. Oyun tasarımı nedir, grafikerden farkı var mıdır konularına yazının ilerisinde değineceğim.
Beklentilerin gerçeklikten ayrıldığı bir başka konu hayal edilen oyunların ölçeği. Herkes işe başlarken bir GTA, bir Skyrim ya da o anda en sevdiği büyük AAA oyun neyse onu yapacağını hayal eder. Hem de ilk projesi olarak böyle büyük bir oyun seçer. Bunu yanında gerçekçi varsayımlarda bulunup “Onlar 5 yılda yaptı, biz çok çalışıp 10 yılda yaparız o zaman.” derler. Programlamanın zorluklarını bir kenara bırakarak bu önermenin gerçekçiliğini ufak bir hesap ile değerlendirelim.
Günümüzde ortalama bir AAA ekibini ve projesini ele alalım. Proje üzerinde aktif çalışan insan sayısı sürekli değişse de ortalama 75 kişi diyelim (GTA veya Witcher 3 gibi yüzlerce kişinin çalıştığı uçuk projelerden bahsetmiyorum). Projeyi sıfırdan geliştirmek üç yıl sürsün (ki bu da oldukça iyimser bir tahmin). 75 x 3 = 225 yıl demek. Yani bir kişi yapmaya kalksa 225 yıl sürecek. Diyelim ki ekibinizde beş kişi var. 225 / 5 = 45 yıl.
Bu gerçeklikten uzak çok düz bir hesap idi. O takımdaki geliştiricilerin iş tecrübeleri 3 – 20 yıl arasında değişiyor. Büyük bir kısmının iş tecrübesi 10 yıldan fazladır. Ve özelleştikleri alanlar birbirinden çok farklıdır.
Yani bu işi öğrenmeden, yeterince tecrübe edinmeden büyük ölçekli bir oyun geliştirmeye çalışmak henüz çivi ve çekicin ne olduğunu öğrenmeden gökdelen inşa etmeye çalışmaya benziyor. Önce elindeki alet edevatların ne işe yaradığını öğren. Daha sonra bir raf çak. Bir kuş evi, bir kulübe yapmayı öğren. Gökdeleni çok daha sonra düşünürsün.
Takım çalışması demişken, öğrenmeye başlarken kafanı böyle şeylere hiç yorma. Önce kendi kendine ufak birkaç oyun geliştir. Belki bir iki game jam’e katıl (genelde 48 saat civarı süren oyun geliştirme maratonu). Daha sonra benzer ölçekteki projeleri bir ya da iki kişi ile geliştirmeye ve game jam’lerde takım oluşturmaya başlarsın.
Bunu, oyun geliştirme ile alakalı her şeyi öğrenmen gerektiği için söylemiyorum tabi ki. Hiç kimse her konuda iyi olamaz ve her şeyi öğrenemez. Bunu söylememin sebebi takım çalışması koordinasyon, planlama, bilgi ve tecrübe gerektiriyor. Bu aşamada hiçbirisine sahip değilsin.
Oyun geliştirme ile ilgili alanların her birisi hakkında bilgi sahibi olmak önemli elbette. Nedeni her şeyi tek başına yapabiliyor olmak değil, takım içi iletişimi sağlayabilmek.
Henüz işe yeni başlayan ya da başlayacak heyecanlı gençlerin hayalinde o muhteşem oyunu yapıp zengin olmak var. Bu hepimizin hayali tabi ki. Ama bu konuda da çok kötü haberlerim var. Oyun sektöründe verilen emeğinin karşısında kazanılan para, diğer sektörlere göre çok çok düşük. Büyük şirkette çalışırsan fazla mesai yapman beklendiği gibi, görece düşük maaş ile çalışman bekleniyor. Fazla mesaiden kastım iki gün 8 saat yerine 10 saat çalışmak değil. Bazı durumlarda aylarca (nadir de olsa yıllarca) izin yapmadan günde 10-12 saat çalışman beklenebilir. Maaş ile çalışıyorsan fazla mesai ücreti veya izin de bekleme. Hatta oyun çıktıktan sonra kovulma ihtimalini de göz önünde bulundurursan iyi olur.
Ama senin amacın zaten AAA bir firmada çalışmak değil. Sen kendi başına bir oyun çıkarıp zengin olmayı, ya da en azından rahat bir hayat sürecek kadar para kazanmayı planlıyorsun. Burada da durum çok farklı değil ne yazık ki. Bir oyun çıkarıp zengin olmak sayısal loto tutturmak gibi bir şey. Daha doğrusu aylarını, hatta yıllarını tek bir sayısal kuponu uğuruna, gece gündüz çalışarak harcamak gibi bir şey. Bu esnada şansını artırmak için yapılabilecek birçok şey var elbette. Çok iyi bir oyun yapmanın yanı sıra, pazarlama (marketing) diye çok önemli bir alan var. Ama bu başka bir yazının konusu.
Zengin olma hayalleri ile bu işi yapmak isteyenlere genelde şu tavsiyeyi veriyorum: Öncelikle kendine, oyun yapmayı ne derece istediğini ve ne kadar sevdiğini sor. Oyun yaparak para kazanmayı bir kenara bırak, bunun için para ödemeyi göze alıyor musun? Cevabın evet ise kendin için doğru alanı seçmiş olabilirsin 🙂
Buraya kadar yazdıklarım çok karamsar görünebilir. Ancak ne yazık ki gerçeklikten uzak değil. Tabi bütün bunlar oyunlardan asla para kazanamayacaksın, ömrünü adasan oyun geliştiremeyeceksin demek değil. Demek istediğim bu çok fazla emek ve sabır isteyen bir iş olmasına rağmen karşılığını hiçbir zaman görememe olasılığın var. Ve bu oldukça büyük bir olasılık.
Eğer buraya kadar okumuş ve hala vazgeçmediysen iki ihtimal var: yazdıklarımı ciddiye almadın ve bana inanmadın ya da bütün bu zorluklar seni yıldırmadı ve ne olursa olsun oyun geliştirmek istiyorsun. Her iki durumda da nereden başlayacağını öğrenmek istiyorsun. Madem öyle yazının ikinci kısmına geçelim!
Güzel ama İngliççe
Günümüz dünyasında ne olursa olsun seni her zaman bir adım öne çıkaracak, her zaman işine yarayacak ve ufkunu genişletecek bir şey var: İngilizce. Bu durum teknoloji dünyası için beş kat daha geçerli. Hatta teknoloji dünyası için İngilizce bilmek seni bir adım ileriye taşımayacak. Sadece başlangıç noktasına yakınlaştıracak.
Buna itiraz edecek birçok idealist insan vardır. O nedenle Türkçe bir kenara bırakıp, teknoloji ve bilim dünyasında neden ikinci bir dile yer yok kısaca açıklayım.
Diyelim ki son derece gelişmiş ve karmaşık yeni bir yazılım ürettin. Ya da yazılımına yeni bir özellik ekledin. Tüketicilerin (oyun dünyasından bahsediyorsan oyun geliştiricilerin) bu özellikten faydalanabilmesi için öncelikle onu öğrenmesi gerekiyor. Hemen bir rehber hazırladın. Yazılımı kullanacak geliştiriciler seninle aynı dili konuşuyorsa ne ala. Konuşmuyorsa rehberin onların diline çevrilmesi gerekiyor. Doğal olarak çevirecek insanın da konu hakkında yeterince teknik bilgiye sahip olması gerekiyor. Konu hakkında bu kadar bilgili birisinin çok büyük bir ihtimalle rehber çevirmekten daha önemli işleri vardır. Yeni geliştirilen bu muhteşem özelliği kullanarak muhteşem bir oyun geliştirmek gibi. Yani bu işi bedavaya yapmayacaktır. O halde çeviri için senin para ödemen gerekiyor. Bu durumda sen ürününü daha da çok geliştirmek için ayırdığın bütçeyi çeviriye harcamak zorunda kalıyorsun. Çevirecek insan da ürününü kullanarak ortaya güzel işler çıkarmak yerine çeviri ile uğraşmak zorunda. Çeviriyi bekleyen insanlar da doğal olarak o özellikten çıktığı gibi faydalanamayacak, rekabetin gerisinde kalacak.
Gördüğün gibi bu durum herkes için net kayıp anlamına geliyor. “İngilizce öğrenin, İngilizce evrensel bir dil.” önermesi ideolojik bir önerme değil. Tamamen pratik önerme. Üstelik yarın öbür gün oyun geliştirmekten vazgeçerseniz dahi İngilizce bilmek her zaman çok işinize yarayacak. Kaldı ki dünyadan haberdar olmak, hatta internette dönen güncel şakaları anlamak için bile öğrenmeye değer bir dil olduğunu düşünüyorum.
Oyun tasarımcısı derken? Grafiker mi yani?
Dili öğrendin, yani en can sıkıcı engeli aştın diyelim. Sonraki adım ne olmalı? Tabi ki özelleşmek istediğin alanı seçmelisin. Oyun geliştirme dünyasında birbirinden farklı birçok alan mevcut. Her bir alanın da birçok alt alanı var. İyi bir araştırma yapıp en çok ilgini çeken alana yönelmelisin. “Programcılar daha çok para alıyormuş, grafikerlikte iş yok” gibi bir düşüncen varsa yazının ilk yarısını okumamışsındır demek ki. Amacın para kazanmaksa kendine başka bir alan bulman gerekiyor. Çok daha az emek ile çok daha fazla para kazanmak mümkün çünkü.
Oyun dünyasındaki birçok alanı kısaca anlatan Kapı Problemi isimli çok güzel bir makale var. Araştırmaya oradan başlayabilirsin. Tabi o makalede sözü geçen birçok alan çok özelleşmiş. Temel olarak birkaç kategoriye ayırmak gerekirse bunu programlama, görsel, ses, ve oyun tasarımı şeklinde yapabilirim. Projeler ve takımlar büyüdükçe bu alanlar özelleşiyor ve ortaya grafik programcısı, arayüz programcısı, ses tasarımcısı, bestekarı, dövüş tasarımcısı, bölüm tasarımcısı şeklinde kendi içlerinde ayrılmaya başlıyor.
Şahsen programcı olduğum için en çok bu alanda bilgi sahibiyim. Diğer alanlarda benzer şekilde ilerlenebildiğini tahmin ediyorum. Ancak konu hakkında en azından beş yıl profesyonel tecrübesi olan birileri ile konuşursan sana daha iyi yol göstereceklerdir. Tabi eğer tek başına oyun geliştirmek istersen bir şekilde programlama ile haşır neşir olman gerekiyor.
Youtube + Udemy + Arama motoru (biraz da sosyal medya)
Eğer programlama öğrenmek istiyorsan iyi birkaç kurs ve güzel bir topluluk bulman gerekiyor. Ancak bu yolculuk boyunca en yakın dostun favori arama motorun olacak. Programlamaya başlayalı bir ay da olsa, on yıl da olsa karşına her zaman yeni problemler çıkacak ve her zaman arama motoruna ve programlama forumlarına işin düşecek.
Günümüz şartlarında oyun geliştirmeyi öğrenmek için izlenecek en makul yol bir oyun motorunu seçip öğrenmek. Her oyun motorunun güçlü ve zayıf olduğu yanları vardır. Hiçbir motor diğerinden iyi veya kötü değildir. Her birisi birer araçtır. Nasıl ki çivi çakmak için çekiç, kazı yapmak için kürek seçiyorsak oyun motorlarını da benzer şekilde seçebiliriz. Bu konu hakkında kendi araştırmanı yapmanı öneririm. Mesela sadece kendin için oyun yapacaksan, işe girmeyi düşünmüyorsan ve iki boyutlu oyular senin için yeterli ise Game Maker veya Construct gibi motorlar fazlası ile yeterli olabilir. Üç boyutlu projeler için Unity, Unreal ve Godot gibi motorlar var. İş bulmak için (özellikle Türkiye’de) Unity çok iyi bir seçim olur.
Şahsen hemen hemen her durumda giriş seviyesi için Unity’yi tavsiye edebilirim. Hem çok güçlü bir motor hem de yeni başlayanlar için görece basit. Unreal kadar ağır değil ve programlama dili olarak C++ yerine çok daha kolay ve oldukça yaygın olan C#’ı kullanıyor. Şu anda her seviye için en çok kaynak Unity için var.
Motor seçimini yaptıktan sonra sıra kurs seçimine geliyor. Mümkün olduğu kadar güncel bir kurs bulup bitir. Takip ederken kodları kopyala-yapıştır yapmak yerine kendi değişken isimlerini kullan, her bir satırın ne işe yaradığını anlayarak yaz. Kurs bittikten sonra yaptığın oyunu tekrardan, mümkün olduğu kadar az bakarak yapmaya çalış. Biraz da kendinden bir şeyler kat. Yeni bir mekanik ekle ya da var olan bir mekaniği değiştir.
İnternet ortamında “Arkadaşlar, GTA5 gibi bir oyun yapıyorum. Arabaya binme kodu olan var mı?” gibi sorularla sık sık karşılaşıyorum. Programlama böyle bir şey değil ve bu şekilde öğrenilmez. Bu şekilde herhangi bir oyun da yapılamaz zaten. En azından bir iki ayını programlamanın temellerini, dilin kurallarını ve prensiplerini öğrenmek için ayırman gerekecektir. Ondan sonra gerçekten bir şeyler öğrenmek için hazır olabilirsin.
İlk kurs bittikten sonra birkaç tane kursu daha bitir. Temel konseptleri iyice anla. Bu esnada anlamadığın bir şey olursa önce arama motoruna yazmayı dene. Yarım saatlik bir araştırma sonucunda tatmin edici bir cevaba ulaşamazsan oyun geliştirme ile ilgili bir Discord sunucusuna üye ol ve daha tecrübeli insanlara sor. Veya Facebook gruplarında sor. Ama ne olur sormadan önce internette aramayı ihmal etme. Senin gibi yeni başlayan milyonlarca insan var. Aralarından mutlaka birisi senin ile aynı sorunu yaşamıştır. Aynı konu kafasına takılmıştır. Sorunun cevabı %99 internette vardır. Discord ve Facebook gruplarındaki insanların vakti seninkinden daha az değerli değil. Onları arama motoru gibi kullanmanın lüzumu yok.
Kursların üzerinde bu kadar durmamın sebebi yeni başlayanlarda çok sık gördüğüm bir hatadan kaynaklanıyor. Unity’yi indirir indirmez her şeyi kendi başlarına çözeceklerine inanan oldukça büyük bir kitle var. Oyun geliştirmek epey karmaşık bir işlem ve Unity bir Paint değil. Bu işi iyi öğrenmek yıllar sürüyor. An itibari ile sekiz yıldır profesyonel olarak çalışıyorum ve hala daha yolun başındaymışım gibi hissediyorum. Hala öğrenmem gereken o kadar çok şey var ki anlatmam mümkün değil.
Yeni başlayanların düştüğü tuzağa düşüp birkaç ayda (hatta birkaç yılda) her şeyi öğrenebileceğini düşünme. Mutlaka Dunning-Kruger etkisinin ne olduğunu öğren ve her zaman aklının bir kenarında bulundur.
İnsanlar, yetersiz oldukları konularda yetersizliklerini fark edemeyecekleri gibi, sanki konuyla ilgili her şeyi biliyormuşçasına aşırı öz güven kazanırlar.
Dunning – Kruger etkisi, Vikipedi
Ölçek ve Prototip
Birkaç kurs bitirdin, Unity’nin ve programlamanın temellerini öğrendin ve artık kendini oyun geliştirmeye hazır hissediyorsun! Evet, artık başlamaya hazırsın. Ancak hala büyük bir oyun projesi üzerinde çalışmaya hazır değilsin. Büyük derken AAA veya AA ayarındaki oyunlardan bahsetmiyorum. Ori and the Blind Forest gibi oyunlardan da bahsetmiyorum. Hatta Thomas Was Alone gibi bir oyundan da bahsetmiyorum. Flappy Bird ölçeğindeki oyunlardan bahsediyorum.
Thomas Was Alone benzeri bir oyunda ne var ki diye düşünüyor olabilirsin. Ancak şimdiye kadar baştan sona kadar bitirip yayınladığın bir oyun olmadığı için bunun ne kadar çok iş olduğunun farkında değilsin.
Özellikle yeni başlarken ölçeği mümkün olduğu kadar küçük tutmakta fayda var. İlk oyunun planlarken tahmini bitirme süren iki haftayı geçmesin. Daha erken bitirebilirsen ne güzel, ancak çok büyük bir ihtimalle tahmin ettiğinden çok daha fazla vaktini alacak. Bunda şaşırılacak bir şey yok. AAA stüdyolarının bile planları tutmayabiliyor ve oyunlar erteleniyor. Oyununun ölçeğini belirleyebilmek ve geliştirme esnasında yeni özellikler ekleyerek projeyi büyütmemek edinmesi oldukça zor, ve önemli bir beceri. Bu yüzden yeni başlayanlara 2x tekniğini öneriyorum.
Bu şekilde ufak ufak oyunlar ve prototipler sayesinde hem bir proje üzerinde aylarını kaybetmeyecek hem de çok daha hızlı gelişeceksin. Zaman içinde sen de kendi yeteneklerinin ve bilgilerinin sınırlarını daha iyi öğreneceksin, ve yavaş yavaş daha büyük projeler üzerinde çalışmaya başlayacaksın.
Son olarak Dunning-Krugger etkisi üzerinde biraz daha durmak istiyorum. Muhtemelen bu işlerle bir yıl kadar uğraşıp 15-20 tane ufak oyun veya prototip geliştirdikten sonra kendini öğrenmen gereken her şeyi öğrenmiş gibi hissedeceksin. Ancak o zaman da daha yolun en başında olacaksın. İş ilanlarına “En az iki yıl tecrübe” maddesi laf olsun diye eklenmiyor.
Umarım oyun geliştirme işinin ne kadar zor ve sabır isteyen bir iş olduğunu anlatabilmişimdir. Aslında hayır, anlatamadığıma eminim. Bunu ancak deneyimleyerek, oyun yaparak anlayabilirsin. Bütün bunlara karşın hala yılmamışsan, hatta daha çok heyecanlanmışsan bir ihtimal kendin için doğru mesleği seçmiş olabilirsin!
Filed under: Oyun Dünyası,Programlama,Unity - @ June 5, 2020 6:47 pm
Tags: Oyun Tasarımı, Oyun Geliştirme, Rehber, Başlangıç, Oyun Nasıl Yapılır