Bu yazıda sizlere, oyun programlamaya başlamadan önce bilmeniz gereken bazı temel unsurlardan bahsedeceğim. Bu unsurları 3 ana başlık altında ele alacağız.
- Geliştireceğiniz oyunları kime yönelik geliştirmeniz gerektiğini belirlemek için oyuncu profillerine bakacağız,
- Geliştireceğiniz oyunların nasıl olması gerektiğini belirlemek için oyun türlerini kısaca örnekleyeceğiz,
- İlerde bir oyun geliştirme ekibi içinde yer alırsanız ekip arkadaşlarınızın kimlerden oluşacağına bakacağız.
Analiz bir konuyu (maddi veya düşünsel) temel parçalarına ayırarak, daha sonra parçaları ve aralarındaki ilişkileri tanımlayarak sonuca gitme yoludur.
Kaynak : http://tr.wikipedia.org/wiki/Analiz
Oyun geliştirme işi bir çok farklı adımdan oluşuyor olsada özünde bir yazılım geliştirme sürecidir. Her yazılım geliştirme çalışmasına da başlamadan önce yapılması gereken bazı işler vardır. Bunların en önemlisi de iyi bir analiz çalışmasıdır. Analiz çalışmaları uygulama geliştirme aşaması için hayati derecede önem taşır. Bu aşama 5-6 aylık geliştirme süreci olan herhangi bir proje için çok büyük bir olumsuz etki yaratmayabilir belki fakat oyun geliştirme süreci gibi uzun soluklu projelerde, eksik yapılmış bir analiz çok daha büyük negatif etkiler yaratabilir. Bu bağlamda yukarda bahsettiğimiz unsurlara daha yakından bakalım...
Farklı yazılım geliştirme süreçlerinde ( extreme programming, waterfall, scrum, vs.) farklı analiz süreçleri vardır. Biz bu yazıda analiz sürecine sadece genel bir bakış yapıyor olacağız.
Hedef Kitle Seçimi
Doğru hedef kitleyi belirlemek oyunun geleceği açısından son derece hayati bir önem taşır. Bunun nedeni; geliştireceğiniz uygulamanın bir işin olmasına, bir ticari amacın gerçekleşmesine veya bu tarz bir şeye hizmet etmeyecek olmasıdır (crm, erp, muhasebe programları gibi). Yani ortada sizin anlaştıgınız, henüz sizin projenizi bekleyen bir müşteri yok. Bir başka deyişle siz müşterinizin herhangi bir ticari ihtiyacını kapatmak için yazılım geliştirmeyeceksiniz. Evet yine bir ihtiyacı karşılayacaksınız ama bu ihtiyaç tamamen insan doğasından kaynaklanan bir ihtiyaç olacak...
Dijital oyun oynamak aynı zamanda bir takım görevleri yerine getirmek demekti. Haz, bu görevlerin yerine getirilmesi sırasında gerçekleşen olaylardan ve iletişimden kaynaklanmaktaydı. Bu hazzı incelemek bizi homo ludens kavramına götürdü. Bu arada Karl Marx' ın Kapital' de Nicholas Barbon' dan (1969) aktardığı; "Meta, her şeyden önce, bizim dışımızda bir nesnedir ve taşıdığı özellikleriyle, şu ya da bu türden insan gereksinimlerini gideren birşeydir. Bu gereksinimlerin niteliği, örneğin ister mideden, ister hayalden çıkmış olsun birşey değiştirmez (istek gereksinim demektir; o ruhun iştahıdır ve tıpkı vücüdun açlığı gibi doğaldır. ... Şeylerin çok büyük bir kısmı, ruhun gereksinimlerini karşıladığı için değerlidir...(2004: 47)"
Kaynak : Kültür Endüstrisi Ürünü Olarak Dijital Oyun
Eskiden oyunlar daha çok küçüklere hitap etsede günümüzde yaş farketmeksinizin bir çok insan bilgisayar oyunu oynuyor. Yinede ortada insanların yaş farklarından doğan farklı seçimleri vardır. Mesela Super Mario oyununu ele alalım. Bu oyunu her ne kadar bir çoğumuz hala eğlenerek oynasada oyunun asıl hedef kitlesi çocuklardır desek yanlış olmaz sanırım. Buradan her oyunun belli bir yaşa göre seçilmiş hedef kitlesi olmalıdır gibi bir çıkarım yapmakta çok doğru olmaz tabiki. Yinede hedef kitle olarak geniş bir yaş aralığı seçecekseniz ona göre bir analiz yapıp çalışmanıza da bu yönde yol vermeniz gerektiğini de unutmamanız gerekiyor. Şimdi geliştireceğiniz oyunları oynayacak oyuncu profillerine kısaca bir bakalım.
Araştırmalara göre bilgisayar oyuncuları 6 profile ayrılıyor.
- Heavy Gamers (Ağır oyuncular)
- Console Gamers (Konsol oyuncuları, PlayStation, XBOX, WII)
- Mass Market Gamers (Sadece çok etkileyici oyunları tercih edenler)
- Prefer Portable Gamers (Taşınabilir cihazlarda oyun oynamayı tercih edenler)
- Secondary Gamers (İkincil oyuncular, oyun almazlar sadece çevresindekilerden buldukları herhangi bir oyunu alıp türüne bakmaksızın oynarlar)
- Infrequent Gamers (Nadir oyuncular, ara sıra oyun oynayanlar)
1. Infrequent Gamers :
Bu tarz oyuncular gelişigüzel oyun oynarlar. Diğer bir deyişle canları istedikleri zaman oyun oynarlar. Bu nedenle oyunlardan mümkün olan olan maksimum eğlenceyi, mümkün olan minimum zamanda elde etmek isterler. Dolayısıyla bu tarz oyuncular için oyunun çok basit olması gerekir. Ayrıca oyunun derin bir hikayesi de olmaması gerekir. Hatta oyunun bir hikayesi olmasa bile olur. Oyun bölümlerinin de kısa olması gerekir. Yani bir bölüm saatlerce sürmemelidir. Bunun yanında oyuncuya başarma hissinin yansıtılması çok önemlidir. Çünkü dediğimiz gibi oyuncu en kısa zamanda en fazla eğlenceyi elde etmek ister. Başarma hissine etki eden en basit unsur ise; oyuncunun, oyun oynamak ile geçirdiği sürenin dışında, bu sürenin çeşitli ödüller ile desteklenmesidir. Çok basit bir örnek vermek gerekirse; Super Mario oyununda 100 altın topladıktan sonra ekstradan 1 can verilmesi gibi.
Bunların dışında oyunda üst düzey 3D efektlerin veya çok etkileyici ses efektlerinin olması da çok önemli değildir. Şunu asla unutmamak gerekir, geliştirdiğiniz şey sadece bir bilgisayar oyunu ve sadece oyuncuyu eğlendirmeyi hedefliyor. Böyle bir hedefe saf 2D görüntüler ile de ulaşabilmeniz mümkündür. Örnek vermek gerekirse; Diablo, Super Mario veya World Of Goo gibi oyunlar 2D grafikler ile çok büyük başarılar elde etmiştir.
2. Heavy Gamers
Büyük prodüksiyona sahip oyunların hedef kitlesidir diyebiliriz. Bu tarz oyunculara "hardcore gamers" derler. Oyunları çok ciddi bir şekilde ele alırlar. Hatta bunu yaşam tarzı olarak görenler bile vardır. (Warcraft çıkmadan bir gün önce mağazaların önünde sabahlayanları görmüştük haberlerde) Bu tarz oyuncular için oyunun son derece gerçekçi olması gerekir. Bunun dışında bu oyuncuların oyundan etkilenmesi ve oyunu benimsemesi için oyunun bir hikayesi olması gerekir. Hikayenin gerçekçi olması çok önemli değildir. Fakat hikaye kendi içinde mutlaka gerçekçi olmalıdır. Mesela Yüzüklerin Efendisi son derece gerçek dışıdır fakat kendi evreni içinde her karakterin kendine özgü bir davranışı ve dünyanın da kendine özgü bir yapısı vardır. Ayrıca dikkatinizi bir noktaya çekmekte fayda var, eskiden filmlerin oyunları yapılırdı ama bu durum günümüzde tersine dönmüştür ve artık oyunlarında filmleri yapılmaktadır. Bu da oyun sektörünün ne kadar geliştiğinin en güzel örneklerinden biridir. Tomb Raider, Max Payne, Resident Evil ilk aklıma gelen filmleri yapılan oyunlardır. Bu ufak nottan sonra bu tarz oyuncuların istekleri asla kutu kutu düşmanlar, düz mavi zemin üzerinde yuvarlak yuvarlak bulutlardan oluşan 2D bir dünya değildir. Tam aksine bekledikleri şey son derece derin detaylarla donatılmş ve o dünyanın içinde olduklarını onlara hissettirebilecek son derece gerçekçi 3D grafiklere sahip bir oyundur. Ayrıca bu görsellik yine çok gerçekçi ses efektleri ve o anki oyun içinde gerçekleşen duruma özel müziklere sahip olmalıdır. Oyunun başında çalan eğlenceli müziğin karakteriniz öldükten sonra da çalması oyunu kırmak için yeterli bir sebeptir. Bu tarz oyuncuların bir beklentisi de uzun oyun zamanıdır. Bir bölümü geçmek için günlerce uğraşabilirler. Bundan sıkıldıklarını sanmayın aksine zevk alırlar. Ama bu çabalarını mutlaka bir şekilde ödüllendirmeniz gerektiğinide asla unutmayın. Bu ödülleri de adil ve mantıklı dağıtmanız gerekiyor tabiki. Mesela karakteriniz sıradan bir düşmanı öldürünce 100 puan kazanıyorsa, bir bölüm sonu canavarını öldürünce çok daha büyük puan veya ödüller kazanmalıdır.
Oyun Türü Seçimi
Yukarıda "oyunun tek bir hedefi vardır ve oda eğlendirmektir" demiştik. Şimdi de "her insan farklı şekilde eğlenir" diyeceğimiz noktaya geliyoruz. Oyun geliştirmeye başlamadan önce vermeniz gereken bir karar da oyunun türüdür. Bazı oyun türlerine örnek vermek gerekirse;
- Strategy : Red Alert, WarCraft, StarCraft
- Shooter (kendi içinde 4 'e ayrılır)
- Shoot'em up : DuckHunt, Virtu Cop
- LightGun Shoter : Shot'em up' ın tabanca ile oynananı
- Firs Person Shooter(FPS) : DOOM, Quake, Half-Life, CounterStrike
- Third Person Shooter : MaxPayne, GTA 3 ve sonrası
- Shoot'em up : DuckHunt, Virtu Cop
- Tactical Shooter : TomClany's RainbowSix, GhostRecon, OperationFlashpoint
- Role-Playing Game (RPG) : Diablo, NeverWinterNights
- Adventure : Alone In The Dark, Monkey Island
- Action : Unreal Tournament
- Sports : FIFA, NBA serileri
- Racing : NeedForSpeed Serisi, GranTourismo Serisi
- Fighting : StreetFighter
Oyun Geliştirme Ekibini Tanımak
Geliştirdiğimiz uygulama bir oyun olduğu için takım içinde oyunun türüne en uygun, kendi alanında uzmanlaşmış bir çok farklı karakter olmalıdır. Şimdi gelin bu karakterleri kısaca tanıyalım.
Project Manager (Proje Yöneticisi)
Her profosyonel yazılım geliştirme sürecinde oldugu gibi oyun geliştirme süreci içinde takımı motive edecek, koordinasyonu sağlayacak, kaynak yönetimini yapacak kısaca takımı yönetecek bir proje yöneticisi şarttır.
Script Writers (Senarist)
Eğer oyununuz bir hikayeye sahipse doğal olarak bir senaryosu da olmalıdır. Senaryo içinde karakterler arasında çeşitli diyaloglar geçer. Kimi zaman bu diyaloglara oyuncu da müdahale edebilir ve bunun sonucunda oyun farklı bir şekilde yol alabilir. İşte senaristler oyunun hikayesini belirleyen ve hikayenin ön plana çıktığı, özellikle adventure tarzı oyunlardaki en önemli karakterlerden biridir. Bir futbol oyununda senariste gerek yoktur belki ama bir RPG'de mutlaka olması gerekir.
Bunun dışında Age Of Empires gibi oyunlarda, takım içinde tarih bilgisi çok yüksek, oyunun geçtiği çağlardaki dönemleri çok iyi bilen mimarlar, sanat yönetmenleri gibi hikayeye ortak olacak bir çok karakterde takım içinde bulunabilir.
Level Designers (Bölüm Tasarımcıları)
Hikayenin akışına göre veya bölümün hedeflerine yönelik, o bölümde kullanılacak araçların tanımlanması, o bölümde yapılacak işlerin belirlenmesi gibi kararları verirler. Kısaca bölümün hedefine en uygun oyun akışını düzenlerler. Mesela, bölüm sonunda bir canavarı öldürmeniz gerekiyordur fakat elinizdeki silahla onu öldürmeniz imkansızdır, haritada biraz gezersiniz ve oyunda kenarda köşede kalmış bir karakteri öldürünce onun silahını alıp, o silahla çok rahat bir şekilde canavarı öldürebilirsiniz. İşte bu gibi kararların hepsini (tabi hikaye dışına taşmadan) Level Designer'lar verir.
Bir oyunun yapısı hızlı işliyorsa çok uzun bölümler genelde oyuncuyu sıkar. Her şey çok hızlı ilerliyordur, oyun çok eğlencelidir ve oyuncu hemen bölüm sonuna gelimek ister. Örneğin Super Mario oyununda bölümler asla çok fazla uzun değildir. Bu noktada Level Designer' ın önemi çok daha net bir şekilde görülmektedir. Çünkü verdikleri kararlar direk oynanabilirliğe etki etmektedir.
Artist
Oyun menülerinin tasarımı, 3D karakerler için dokuların hazırlanması gibi görsel sanatların işlendiği aşamalarda görev alırlar.
Modelers (Modelleyiciler)
Çeşitli 2D veya 3D tasarım programları ile oyun içindeki karakterleri, binaları, köprüleri kısaca nesneleri modelleyen kişilerdir. Bir oyun için görsel zenginlik çok önemlidir. Bu bağlamda modelleyicinin ortaya koyduğu modeller çok önemlidir. Siz bir uçuş similasyonu için çok iyi bir fizik motoru yazmış olabilirsiniz ama modelleyiciniz, bir boeing 737'yi kutu gibi modeller ise oyununuzun pek tutmayacağını rahatlıkla söyleyebilirim.
Animators (Animatörler)
Bölümlerin başında, sonunda veya hikayenin gidişatına göre herhangi bir anda ortaya çıkan izlenmek için yapılmış animasyonları hazırlayan kişilerdir. Animasyonlar hikayenin anlaşılmasını destekleyen oyuncuyu oyuna bağlayan önemli öğelerden biridir. Siz oyunun menülerine hikayenin okunabileceği bir menü koyup, düz yazı şeklinde hikayeyi oyuncuya sunabilirsiniz. Fakat bu kadar uzun yazıyı herkes okumak istemez. Dolayısıyla burada hikayeyi özetleyen kısa animasyonlara ihtiyaç duyarsınız. Bunu da animatörler yapar. Hikayenin pekiştirilmesi ve daha net anlaşılması için çok önemlidirler.
Musicians (Müzisyenler)
Müzikler için, oyuncuyu oyuna çeken, grafikten sonraki en önemli etkendir diyebiliriz. Gerçekçi ve doğru zamanda oluşan ses efektleri, duruma uygun fon müziği oyunun çok daha iyi olmasını sağlar. Bu müzikleri ve ses efektlerini de müzisyenler hazırlar. Oyunun tarzına uygun müzik seçilmeside ayrı bir özen ister. Örneğin; DOOM oyunundaki ateş edince çıkan sesi asla Super Mario 'da aramazsınız.
Programmers (Programcılar)
Ortada bu kadar fazla dinamik öğe varken, bunların koordine bir şekilde nerde ve ne zaman işleyeceğini belirleyen kişiler programcılardır. Bir karakterin can sayısından tutunda, bir strateji oyunundaki kaynak yönetimine kadar arka plandaki tüm mantıksal işlemleri programlayan kişilerdir.
Testers (Testçiler)
Her yazılım çalışması sona erdikten sonra ortaya çıkan ürünün mutlaka testi yapılır. Oyun geliştirmede de durum farklı değildir. Oyunun her anının tek tek testleri yapılmalıdır. Gözden kaçan hatalar oyun çıkar çıkmaz ardından bir patch yayınlamanıza neden olur. Bu da ekstra maliyet demektir. Ayrıca bazı durumlarda oyununuz oyuncuların gözünden de düşebilir. Bu yüzden test aşaması en az analiz aşaması kadar detaylı yapılmalıdır. Bu aşamada oyundaki hatalar tespit edilir ve düzeltilir. Tüm hatalar düzeltildikten sonra oyun piyasaya sürülür. Ne var ki her yazılım çalışmasında oldugu gibi buglar mutlaka olacaktır, bunları kapamak için yamalar yayınlanır. Bu süreçte de testlere devam edilir. Test yapan kişilerin testi iyi yapması da bu noktada önemlidir.
Takım arkadaşlarımızı da tanıdıktan sonra bu kavramlar hakkında son birşey söylemek gerekiyor. Bu işe yeni başlayan veya amatör hislerle bu işle ilgilenmek isteyen kişiler için bu bilgiler hiç bir anlam ifade etmeyebilir. Fakat şahsen bir işin en temelinden öğrenilmesi gerektiğine inanıyorum. Profosyonel bir oyun geliştirme süreci içinde bulunmadığınız sürece bu karakterle karşılaşmayacaksınız belki ama bu işin dünyada profosyonel olarak bu tür kişilerle, bu şekilde yapıldığını bilmek önemlidir. Bu karakterler ve kavramlar oyun geliştirme olgusu içindeki en temel ortak öğelerdir. Oyunun türüne göre takım içinde yeni ve farklı özelliklere sahip karakterler de olabilir tabiki.
Kaynak : Beginning XNA 2.0 Game Programming
Mehmet Aydın Ünlü
0 yorum:
Yorum Gönder