Hakkında Künye

Oyun Motorları

/image/58/

Merhaba sevgili e-bergi okurları. Her sene olduğu gibi, bu sene sonunda da oyun sektörü hareketli günler yaşıyor. Assassin’s Creed’ler, Call of Duty Advanced Warfare, Dragon Age Inquisition, Evil Within, Civilization Beyond Earth, WoW, Far Cry 4 derken her yanımız AAA oyun doldu. Peki bu firmalar her sene bir tane (hatta artık ikişer tane yapmaya başladılar) Assassin’s Creed, her sene bir tane Call of Duty çıkarmayı nasıl başarıyorlar? Basit oran orantı mantığıyla 1000 kişinin 2 yılda yaptığı işi 2000 kişi 1 yılda mı yapıyor? (Aslında soru biraz hileli oldu, çoğu firmanın bir oyunu tamamlaması yaklaşık 2 yılı buluyor, yani eş zamanlı olarak 2 sene sonraki oyun da geliştiriliyor. Ama konumuz o değil) Bu ay sizlere oyun yapım sürecini hızlandıran en önemli uygulamalardan, oyun motorlarından bahsedeceğim. Yukarıdaki oyunları oynamaya ara verip yazıyı okumaya karar verdiğinize göre, başlayalım.

Öncelikle, oyun motoru nedir bundan bahsedelim. Oyun motorları, basit tanımıyla oyun yapmanızı sağlayan, içinde bir oyun için gerekli olan fizik, ses, görsel, kod eklentilerini bulunduran; arayüzü sayesinde harcayacağınız süreyi büyük ölçüde kısaltan uygulamalardır. Büyük oyun şirketlerinin çoğu yaptıkları oyunlarda kendi oyun motorlarını kullanır, ve bu motorları yapacakları oyunlara göre optimize eder. Hatta, bu şirketlerde “engine programmer”, yani oyun motoru programlayıcısı dediğimiz iş kolları bulunur. Bu programcıların işi tamamen oyun motorunu geliştirmek, yapılmakta oyun için gerekli eklentileri oyun motoru üzerinden eklenebilir hale getirmektir. Bu oyun motoru sayesinde oyun tasarımcıları ve level tasarımcıları istedikleri oyunu geliştirebilir. Yani kısaca, oyun motorları oyun geliştirme uygulamalarıdır.

Oyun motorlarında, bir oyunu oyun yapan bütün özelliklerin; rendering, scripting, 3D & 2D grafik ekleme, input (girdi) algılama, temas algılama (collision detection), fizik, ses, animasyon uygulama ve geliştirme araçları bulunur. Bu özelliklerden hangilerine ağırlık verdiğine göre o motorun gücü ve hangi oyunlar için kullanılabileceği belirlenir. Oyun motorlarının işlevini daha iyi anlamak için bu özelliklere ve oyun motorlarındaki uygulanma şekillerine yakından bakalım.

Input (Girdi):

Oyunları oyun yapan şeylerden biri etkileşimli olmalarıdır. Bu etkileşimi klavye-fare ikilisiyle veya oyun kumandalarımızla (gamepad veya joystick) sağlarız. Oyun motorları da bu etkileşimi ne şekilde oyuna ekleyebileceğimize karar verebileceğimiz yerdir. Mobil oyunlar için de temasın, basılı tutmanın veya sürüklemenin algılanmasını yine oyun motorları sağlar. Tabii ki input sistemleri oyundan oyuna farklılık gösterir. Mesela FPS oyunları geliştirmek için geliştirilmiş bir oyun motorunda farenin sol tuşu default olarak ateş etmeye yarayacaktır veya bunun için hazır script zaten motorun içinde dahildir. Tabii ki oyun motorlarındaki input sistemleri değiştirilebilir veya motorun kendisini geliştirerek geliştirilebilir.

Grafikler:

Grafikler ve bu grafikleri render’lamak oyun motorlarının en önemli işlerinden biridir. Özellikle 3 boyutlu oyunlar için, Blender, Maya veya 3DSMax ile yapılan 3 boyutlu bir modeli oyuna aktarmak bir oyun motoru olmadan oldukça zahmetli bir iştir. Fakat oyun motorları sayesinde bu işlem son derece kolaylaştırılır. Oyun motorlarının grafik konusunda sağladığı bir kolaylık da optimizasyondur. Yüksek poligonlu modelleri dahi bilgisayarlarımızda kolaylıkla çalıştırabilmemize, ideal ayarlarda hem görsel kaliteyi hem de performansı korumaya yararlar. CryEngine gibi bazı oyun motorları da özellikle görsel gücü ile ön plana çıkmaktadır.

Fizik:

Oyun motorlarının en büyük kolaylıklarından biri de kendi içlerinde gelen fizik motorlarıdır. Bir oyundaki fizik kurallarının etkisini görebilmek için binlerce satır kod yazmak gerekir. Ama oyun motorlarında bu optimizasyon otomatik ve değiştirilebilir bir şekilde gelir. Günümüzde oyun motorlarının fizik gücü ve dışarıdan desteği oldukça gelişmiştir. Özellikle PhysX ve Havok fizik motorları sayesinde oldukça gerçekci fizik modellemeleri ve animasyonlar görmemiz mümkündür.

GUI (Graphical User Interface / Görsel Kullanıcı Arayüzü):

Bir oyun motorunun olmazsa olmazlarından biri de GUI özelliğidir. GUI bir oyundaki etkileşimli veya etkileşimsiz kullanıcının oyunu anlaması ve oynanışını kolaşlaştırmak için eklenen her türlü yazı, buton veya kutucuktur. Ana menüler, pause menüler, inventory’ler, altyazılar GUI’lere örnek olarak verilebilir. Oyun motorları bu GUI’leri eklemeye ve düzenlemeye de izin verir.

Listeyi script’lerle, animasyonlarla, yapay zeka eklentileri ile uzatabiliriz. Ama oyun motorlarının en temel özellikleri ve getirdiği kolaylıklar yukarıdaki gibidir. Bu özelliklerin hangisinin ön planda olduğuna veya hangi tür oyun yapmak istediğine göre oyun motorunun şekillendiğini söylemiştik. Bu özelliklere göre şekillenen yüzlerce yayınlanmış oyun motoru var. Bunların bazıları ücretli, bazılarıysa ücretsiz kullanıma açık motorlar. Şimdi piyasadaki bazı oyun motorlarına ve özelliklerine bir göz atalım.

/image/56/

Unreal Engine:

Belki de en çok duyduğumuz oyun motoru Unreal Engine’dir. Piyasadaki çoğu FPS’nin yapımında rol oynayan UE, 1998’de Epic Games tarafından geliştirildi. Tabii o yıllardaki haliyle kalmadı, yaklaşık 3 yılda bir yeni bir sürüm çıkardı. En son 2012 yılında Unreal Engine 4 çıkartıldı ve şuan 4.6 sürümünü kullanıyoruz. UE özellikle FPS oyunlarının yapımında kullanılmak için tasarlansa da Third Person (Üçünçü şahıs bakış açılı?), strateji oyunları, dövüş oyunları, yarış oyunları… neredeyse her türde ve farklı özelliklere sahip oyunlar tasarlanmış. Aynı zamanda cross-platform (aynı anda bir çok platforma oyun geliştirebilme özelliği) olması da UE’nin tercih edilebilirliğini artırıyor. Programlama dili olarak C++ kullansa da bir çok kütüphaneyi ve script dillerini destekliyor. Yılların eskitemediği motoru EA, Ubisoft, Activision gibi büyük şirketler de Epic Games’den haklarını satın alarak kullanabiliyor. Motorun sürekli güncellenmesi ve geliştirilmesi büyük şirketlerin bile UE’yi tercih etmesini sağlıyor. Bu yılın ilk çeyreğinde Epic Games herkesin aylık ücret karşılığında Unreal Engine kullanmasını sağlayacak bir paket yayınladı. Yani artık UE ile oyun yapmanız için binlerce dolar ödeyip haklarını satın almanız gerekmiyor, aylık 20 dolar civarı bir ücret ödeyerek en güçlü oyun motorlarından birini kullanabiliyorsunuz. Aboneliğin şartlarını resmi sitesinden ayrıntılı bir şekilde öğrenebilirsiniz. Unreal Engine’in çoğu özelliğini kullanan, bir alt modeli diyebileceğimiz Unreal Development Kit ücretsiz olarak dağıtılıyor. Ayrıca UE öğrencilere ücretsiz olarak dağıtılmakta. Siz yeter ki oyun yapın, motor bizden diyor adamlar, daha ne olsun?

Bu oyun motoru ile yapılan bazı oyunlar: Unreal Tournament, Gears of War, X-Com Enemy Unknown, Borderlands, Mirror’s Edge, Mass Effect, Bioshock, Dishonored…

CryENGINE:

CryENGINE, çoğumuzun Türk şirketi diye övünebileceği, Cevat Yerli , Avni Yerli , Faruk Yerli kardeşlerin kurduğu Crytek’in el emeği oyun motorudur. İlk oyunları Far Cry ile büyük sükse uyandıran, ve asıl bombayı Crysis’in ilk oyunu ile patlatan motor şuan piyasadaki en güçlü grafik gücüne sahip motorlardan biridir. CryENGINE’in güzel yanı bu yüksek grafik kalitesini sağlarken dışarıdan bir fizik motoru veya kütüphane ihtiyacı duymamasıdır. Her şeyi kendi içine dahil olan motorun dezavantajı ise kendisi ile yapılan oyunların yüksek sistem ihtiyacıdır. CryENGINE 4 ile bu optimizasyon sorunlarını en aza indirmiş olsalar da, hala piyasadaki en “sistem canavarı” motorlardan biridir. Unreal Engine gibi, CryENGINE de bu yılın ilk çeyreğinde halka açılmış, aylık ücret karşılığında kullanılabilir hale gelmiştir. CryENGINE ile yapılan oyunlar genel olarak FPS olsa da, yine istisnalar görülmektedir.

Bu oyun motoru ile yapılan (ve yapılmakta olan) bazı oyunlar: Far Cry, Crysis serisi, Ryze, Evolve, Aion, State of Decay

/image/57/

Frostbite:

Yine adını çok duyduğumuz, fakat içeriği hakkında çok az bilgiye sahip olduğumuz oyun motorlarından biri: Frostbite Engine. Frostbite Engine, EA Games (aslında DICE) tarafından geliştirilen ve hemen hemen tüm EA oyunlarının yapımında rol oynayan bir oyun motoru. DICE, bu motor ile ilk olarak Battlefield: Bad Company oyununu geliştirdi. Bu oyun motorunun gücü gerçekci HDR ses özelliği ve yüksek performanslı ağ bağlantısında yatıyor. Battlefield oyunlarındaki 64 kişilik haritalara ilk zamanlar ne kadar şaşırdığımızı hatırlayın? Crossplatform özelliği de EA Games gibi bir şirket için olmazsa olmaz bir özellik tabii. Şuanda motorun son sürümü Frostbite 3 kullanılmakta. Ne yazık ki bu motor hakkında ayrıntılı bilgi yok ve bireysel kullanımlara açık değil.

Bu oyun motoru ile yapılan (ve yapılmakta olan) oyunlar: Battlefield Serisi, Need for Speed Run, Dragon Age: Inquisition, Medal of Honor: Warfighter, Shadow Realms

Anvil Engine:

EA Games’in Frostbite’ı gibi, Anvil Engine de Ubisoft’un kendine özel oyun motoru. 2006 yılına kadar Jade Engine’i kullanan Ubisoft, Assassin’s Creed’in ilk oyunu ile yeni motorlarına kavuştu. Defalarca kez isim değişikliğine giden oyun motoru (vakti zamanında Scimitar diye de anılmış) şuan AnvilNext adıyla geçiyor. Anvil Engine de bireysel kullanıma açık bir motor olmadığından hakkında çok fazla bir bilgi yok. Fakat yapılan oyunlardan yola çıkarak çevre ile etkileşimi hızlı ve akıcı bir şekilde gerçekleştirmesiyle, aynı anda yüksek çözünürlüklü NPC’leri ve çevre modellerini görüntüleyebilmesiyle ve yüksek NPC yapay zekası (AI) özelliğiyle ile ön plana çıktığını söyleyebiliriz.

Bu oyun motoru ile yapılan (ve yapılmakta olan) oyunlar: Assassin’s Creed’in alayı, Prince of Persia, Rainbow Six: Siege

Source:

Source Valve’ın, 2005 yılında Half Life 2 için geliştirilen ve adından çok bahsettiren oyun motoru. O zamanlarda çevre etkileşimiyle ve gerçeğe yakın fizik motoruyla çok konuşulmuştu. Özellikle 2006 yılında çıkan Dark Messiah: Might and Magic oyunu, benim için hala “neden böyle bir oyun daha yapılmıyor?” dedirten yapımlar arasındadır. Valve’ın oyun yapan bir şirketten çok oyun satan bir şirket olmasıyla Source motorunu da ortalarda çok görmez olduk. Valve imzalı her oyunda, ve oyunlara yapılan her modda Source’un izine rastlayabiliriz. Source C++ kullanmaktadır. Cross-platform’a izin vermektedir. Yine, öncelikli olarak FPS oyunlar geliştirilmek için kullanılan motor, diğer oyun türlerinin geliştirilmesine de imkan tanımaktadır. Bu motorun gücü ise gelişmiş fizik motoru ve hızlı network yapısındadır. Source aynı zamanda ekstra içeriklerin online oynanabilmesine de izin veren bir yapıya sahiptir. Yani internette indirdiğiniz bir CS haritasında online oynayabilmenizi sağlamaktadır. Source’un güzel yanlarından biri de Machinima’ya, yani oyunlardan yapılan filmlere, uygun yapısıdır. Özellikle GMod ile ön plana çıkan bu özellik, Source Filmmaker ile daha da desteklenmektedir.

Bu oyun motoru ile yapılan (ve yapılmakta olan) oyunlar: Counter Strike Source, Half Life 2, Portal serisi, Dark Messiah: Might and Magic, Stanley Parable

Quake Engine:

Source’dan bahsedip de Quake Engine’den bahsetmemek ayıp olurdu. Bu ayki sayımızda biyografisini de bulabileceğiniz John Mustafa Carmack tarafından 1995’de geliştirilen oyun motoru, belki de yukarıda saydığım tüm oyun motorlarının doğuşuna öncülük etmektedir. Quake Engine’in doğuşu ve çalışma prensibi başlı başına başka bir yazının konusu olabilir. Kısaca bahsetmek gerekirse, zamanının en gelişmiş oyun motoru olan Quake Engine, 3 boyutlu hareketli ve hareketsiz objeleri oyuna aktarmakta oldukça başarılıydı. 1995-2000 yılları arası düşünüldüğü 3 boyut kavramı Quake engine ile doğdu diyebiliriz. Özellikle Half Life’ın çıkışı ile oyun dünyası bambaşka bir çağa girdi. id Software ve John Carmack reisin Quake Engine’i open source (yani açık kaynaklı kodlu / özgür yazılım) yapmasıyla bir çok oyun motoru ve Quake-vari oyun türemeye başladı. Paul Graham’ın Hackers and Painters kitabında yazdığına göre, bu durum oyun sektörünün çok hızlı bir şekilde yükselmesine neden olurken, bir yandan da sürekli birbiri ile benzer tadı veren FPS’ler oynamamıza neden oldu. Yine de hepsini büyük bir iştahla oynadığımızı hatırlıyor, ve büyük üstat John Mustafa Carmack’ı bir kez daha selamlıyoruz (öve öve bitiremedik)

Bu oyun motoru ile yaplan oyunlar: Quake, Quake Arena, Half Life

/image/59/

Unity 3D:

Son zamanlarda Unity’nin adını duymayan kalmamıştır sanırım. Indie, yani bağımsız oyunların yükselmesiyle birlikte ücretsiz dağıtılan, kullanıcı dostu Unity’nin de yükselişi başladı. C# ve Javascript gibi yüksek seviyeli programlama dillerini desteklemesi, kolay ve kullanışlı arayüzü, çabuk öğrenme eğrisi ile Unity bağımsız yapımcıların ve küçük çaplı şirketlerin ilk tercihi konumunda. Yukarıda saydığım oyun motorları kadar güçlü olmasa da, aynı zamanda onlar kadar karışık da değil. Tabii bu güçlü olmama durumu Unity’i küçümsemenize yol açmanız. Blizzard gibi bir şirketin bile Hearthstone’u geliştirirken tercihini Unity’den yana kullandı. Cross-platform özelliği ile PS4’den Android’e aklınıza gelen her platforma oyun geliştirebilirsiniz. Bugün Google Play’de ve App Store’da gördüğünüz çoğu oyun Unity ile geliştirilmekte. Geçtiğimiz sene geliştirilen 2D desteği ile, ve geçen ay geliştirilen UI (user interface, yani kullanıcı arayüzü) ile Unity her geçen gün gücüne güç katıyor. Şuan Unity 4.6’yı kullanırken, duyurulan ve hala geliştirilmekte olan Unity 5’i sabırsızlıkla bekliyoruz.

Bu oyun motoru ile yapılan (ve yapılmakta olan) oyunlar: Çoğu mobil oyun, Gone Home, Among the Sleep, Slender, Hearthstone, Wasteland 2

Daha sayamadığım yüzlerce 3D/2D oyun motoru bulunmakta. Rockstar Games’in kullandığı RAGE, Dead Space’in motoru olarak da bilinen Dead Engine, Bethesda oyunlarının yapıldığı motor Gamebryo, 2D motorlar Game-maker, RPGMaker ve dahası… Piyasada kullanıma açık veya kapalı sayısız oyun motoru bulunmakta. Ve oyun geliştirmeye başlarken akla gelen ilk soru bu:

Hangi Oyun Motorunu Kullanmalıyım?

Hangi oyun motorunu kullanacağınız, ne büyüklükte bir oluşum olduğunuza ve yapmak istediğiniz oyuna göre şekillenmekte. Her oyun motorunun kullanımını ve gerekirse o motorun kullandığı programlama dilini öğrenmek bolca zaman istemekte. Başlangıç seviyesinde ve bağımsız yapımlarda Unity ilk tercih olurken, PyGame, GameMaker, RPGMaker gibi ücretsiz oyun motorları/kütüphaneler de ilk oyunlarınız için idealdir. Biraz daha tecrübeli ve yeni bir şeyler denemek isteyen arkadaşlara Unreal Engine’i tavsiye ederim.

Akıllara gelen bir diğer soru da “kendi oyun motoru mu yapmalı mıyım?” olacaktır. Eğer oyun yapımına yeni başlıyorsa, piyasada yüzlerce oyun motoru olduğunu göz önünde bulundurursanız, ve amacınız sadece oyun yapmaksa öncelikle size uygun oyun motorunu seçmek daha mantıklı olabilir. Çünkü oyun motoru yapmak bir oyun yapmaktan çok daha zahmetli ve uğraştırıcı bir iştir. Bilgisayarın katmanlı yapısını göz önünde bulundurursak, eğer oyun motoru yapmaya çalışırsanız oyun yapmanın bir alt katmanına, oyun yapma programı yapmaya girişmiş olursunuz. Bir çok geliştiricinin dediği gibi, “oyun motoru değil, oyun yapın”. Tabii buna rağmen kendi oyun motorunu yapan geliştiriciler bulunmakta. Eğer para ve zaman kaygınız yoksa, bir oyun çıkarmak sizin için işten çok zevkse, oyun motoruna kadar her şeyi ile size ait bir oyun çıkarmanın zevki bambaşka olacaktır.

Oyun motorları giderek daha da güçlenmeye ve gelişmeye devame diyor. Hatta oyun motorları ile sadece oyunlar değil, animasyon filmleri, reklamlar, uygulamalar da yapılıyor. Gelecekte oyun teknolojilerinin de gelişmesiyle daha yeni ve daha güçlü motorlar göreceğimiz kesin.

Yazımın sonuna gelirken, oyun motorları hakkında anlatamadığım sonsuz detay olduğunun farkındayım. Bu yazıya “oyun motorlarına genel bakış” çerçevesinde yaklaşın, ve eğer ayrıntılı bir şekilde incelememi istediğiniz bir yer varsa bana ulaşabilirsiniz.

Kaynakça:

Enes Uğur Şekerci
- 3 -