Oyun Motoru Nedir? Ne İşe Yarar?

Geçen gün eve geldim. Baktım mahallemizin ihtiyar heyeti bize gelmiş. Bir soru sormak için uğramışlar. Dedim, ihtiyar heyeti amcalar siz ne zahmet ettiniz, ben gelirdim konseyinize dedim. Yok cenk dediler, hemen seninle görüşmeliyiz yoksa birbirimizi öldürecez, aramızda husumet oluştu. Dedim “ne iş” dedim, sakin olun 2 dedim. Konu nedir diye de ekledim.

Ebu Ziya dede dedi ki “Cenk bir oyun motoru nedir?” Önce şaşırdım, sonra bir top bulup 15 kere sol dizimde sektirdim ve onlara aradıkları cevabı verdim. Teşekkür ettiler, evlerine dağıldılar. Delikanlı çocuklar bu ihtiyar heyeti, ara sıra böyle gaza geliyorlar ama olsun. Sonra bunlar gidince, dedim bari ara sıra arkadaşlardan da duyduğum bu sorunun yanıtını bloglarıma koyayım da kitleler merak içinde önce kendilerini sonra birbirlerini daha sonra da kerevizlerini yemesinler ! Dikkat ol başlıyorum.

Oyunlar bilgisayar programlarıdır. Ve özellikle son 15-20 senede muazzam komplike bir hal almışlardır. Dolayısı ile artık bir oyunu yapmak için direk olarak o oyunu yapmak imkansızlaşmış ve o oyunu yapmak için ilk önce başka programlar yapmak gerekmektedir. Oyun motoru da bu programlar arasındaki en önemli öğedir. Oyun motorunu bir oyunun kalbi olarak nitelendirebiliriz. Oyun, bu motorun üzerine yapılan süslemeler, eklenen hikaye, ses,müzik, harita ve  kaplamalardır diye özetliyebiliriz aslında. Bir oyun motorunun olmazsa olmazları arasında oyun haritasını, modelleri, ve diğer grafik öğeleri oyuncuya göstermek, collision detection (çarpışma saptaması: birisine ateş ettin, vurdun mu vuramadın mı, vurduysan neresinden vurdun, ne kadar sağlık kaybetti vs.), ses ve müzik dosyalarını doğru zamanda çalmak gibi şeyler sayılabilir. Son 7-8 senedir, olmazsa olmazların içine fizik motoru da eklenmiştir.Fizik motoru direk oyun motoruna dahil olabileceği gibi, 3. parti bir yazılım da olabilir.

Oyunların çoğu artık 3 boyutludur. Dolayısı ile bir oyun motorunun ilk görevi bu 3 boyutlu dünyayı, sizin baktığınız açıdan nasıl göründüğünü monitöre çizmektir. Ve bunu en azından saniyede 30 kere yapmalıdırlar ki görüntü aksın ve o dünyada hareket ettiğimiz hissi doğsun. Siz aslında oyunlarda bir kamerayı hareket ettirmektesinizdir. Örneğin FPS oyuunlarnda, ileri tuşuna basınca kamera ileri gider, siz zıplama tuşuna basınca kamera önce yukarı doğru, daha sonra da orjinal pozisyonuna doğru hareket eder. Biz bunları gözümüzden görüyormuş gibi algılarız, ve kamera hareketlerine göre 3 boyutlu haritanın sizin 2 boyutlu ekranınızda nasıl çizilmesi gerektiğini, saniye 30+ defa hesaplayan ve ekrana çizen oyun motorudur. Daha sonra sol meeaaauz tuşuna basınca silahınız ateş eder, bu noktada oyun motoru, silahınızın türü(pompalı dağınık, sniper tek ve tam hedefe), sizin duruşunuz (koşarken dağınık, yere yatmışken hedefe), silahın mermisinin izleyeceği yol (bu eski oyunlarda dümdüz iken yeni modern oyunlarda gerçek silahlarda olduğu gibi eğik-atış vari bir trajectory çizer) gibi değişkenleri kaale alıp, sizin modelinizden çıkan kurşunun, vektör hesaplamalar vasıtası ile, düşman hitbox’ına vurup vuramadığını hesaplar. Hitbox denilen şey oyuncu modellerinin görünmez, ama hasar alma sistemini yöneten, genelde kutulardan oluşmuş birşey olup, birisini neresinden vurduysanız ona göre durumlar tetikleyen bir sistemdir. Örneğin birisini kafasından vurduğunuzda genellikle çok daha fazla hasar vermek gibi.

Bazen bir odaya gireriz ve korku müziği çalmaya başlar, bazen bir boss öldürürüz ve kendimizi kahraman gibi hissetmemizi sağlayan gaz müzikler çalınır. Bunlar hep çeşitli durumlarda tetiklenen ve doğru zamanda çalmayı bekleyen ses dosyalarıdır. Bir odaya girdiğimizde, kontrol ettiğimiz karakter haritanın belli x,y,z koordinatlarını geçer, ve bu da belli bir wav dosyasının çalmasını tetikler. Daha da basit örneği sol meaaauz’a basınca çıkan silah sesidir.

Tüm bu grafik & audio işlerini oyun motoru hesaplar, yönetir ve ekrana çizer, sesleri çalar. Yani yukarıda dediğimiz gibi bir oyun motoru, o oyunun kalbidir. Aynı motor kullanılarak birbirinden çok farklı görünen, farklı türlerde oyunlar yapılabilir. Son zamanlarda hatta oyun motorları televizyon ve reklam endüstrilerinde de kullanılmaktadır. Ayrıca mechanima adı verilen, animasyon filmler de oyun motorları kullanılarak yapılmaktadır.

Dolayısı ile bir oyun yapmak için artık ilk adım olan motor, lisanslama sistemi ile satılmakta ve farklı oyunların yapımlarında kullanılmaktadır. Örneğin id software tarafından yapılmış olan idtech 3 motoru ile, quake 3, Call of Dutyi Medal of Honor, Return to Castle Wolfenstein gibi bir sürü başarılı oyun yapılmıştır. Kolayca anlaşılabilir ki, kendisini kanıtlamış, teknolojik olarak yeni bir motoru kendi oyunlarında kullanmak isteyenler milyon dolarları geçen paracıkları ödemek durumundadırlar. Bunun alternatifi olan “kendi motorunu kendin yap” ise genellikle daha kötü sonuçlar verir ve çoğu kez oyun yapımcıları bu yolu deneyip aylarca uğraştıktan sonra, bakarlar ki olmuyor, hazır ve günün iyi motorlarından birini lisanslayarak kullanırlar.

Tabi en yeni motorlar ticari amaçlarla kullanılırken lisanslamak için milyonlarca dolar ödenirken, eski oyun motorlarını internetlerden bedavaya, ya da çok ucuza bulmak mümkündür. En son Unreal 3 motorunu Epic Games, bedavaya dağıttığını, isteyenin alıp kullanabileğini açıklamış olup, bu motor ile başarılı bir oyun yaparsanız sizden elde edilen gelirin %25’ini istemektedirler.

Bir motoru ele geçirmiş bir developer’ın yapması gereken şey artık, oyunun konusunu yazmak, hangi durumlar da nelerin olacağına karar verip senaryoyu oyuna eklemek, kullanılacak harita, oyuncu modeli, silahlar vs vs gibi şeyleri yapmak ve bunları oyun motoru ile birleştirmektir. Haritaları, modelleri yapmak için genellikle SDK (Software Development Kit) adı verilen program paketleri içinden çıkan editörler kullanılır. Örneğin idtech motoru için Radiant, yada Unreal Motoru için Unreal Editor gibi.

Bir oyun motoru için başarması belki de en zor şey o motorun hissidir. Bu konuyu sona bıraktım çünkü açıklaması da biraz garip ve zor. Motorun hissinden kast ettiğim şeyi anlayabilmek için belli miktar farklı oyun motorları ile yapılmış oyunları oynamış olmanız gerekli, yoksa anlatmak imkansız. Motorun hissi en basit haliyle, sizin oyunda hareket ettiğiniz zaman, size yaptığınız hareketleri nasıl yaptığınızla ilgili verdiği histir. İleri doğru yürüdünüz, ve sonra sola dönüp zıpladınız diyelim. Bazı motorlarda bir kesiklik hissedilir, ya da zıplama hissi zıplama gibi gelmez, yapaydır, birşeyler tıkırdamaktadır. Bana en rahat hissettiren motor quake 3 motoru olarak da bilinen idtech 3 motorudur. Yanlış hatırlamıyorsam 1999 yılında oraya çıkmış bu motor, bir oyun motoru için inanılmaz yaşlıdır aslında. Ama hala idtech3 motoru gibi evimde hissettiren bir motorla karşılaşmadım daha. Herhangi bir idtech3 oyunu oynarken, koşmak, eğilmek, dönmek, zıplamak çok doğal ve rahat gelir bana. Ama örneğin Source öncesi Half Life motoru (adını bilemedim şimdi) o kadar rahatsız gelirdiki bana, koşmak zıplamak zul gelirdi adeta.

Herneyse 3-5 link vererek de konumuza bir son verelim.

wikipedia game engine


unreal motoru alternatif kullanımlar


unreal development kit

wiki idtech3 motoru sayfası

Reklamlar

Etiketler:,

About cenkozmercan

I do the things that I like to do and if 1 is good, 10 is a whole lot better.

14 responses to “Oyun Motoru Nedir? Ne İşe Yarar?”

  1. gereksiz says :

    güzel bir açıklama olmuş. Teşekkürler basit ve sade bir dinle anlatmışsın bunu herkes anlar. Hiç kimseninde gözünü korkutmamışsın:D bazı yazarlar ver işi çok büyütüyorlar benim 1 arkadaşım öyleleri yüzünden programlamadan vazgeçti :D neyse emek harcadığın için çok teşekkürler :D sizden muhtemelen oyunlarla ilgili çok daha fazla şey öğrenecemğim(oyun programcısı olmaya meraklıyım gerçi programlamaya 1 yıl önce merak saldım ve 1 yıldır çalışıyorum yaşım daha 13 ama olsun ne kadar erken başlarsam o kadar iyi şimdilik C# üzerinde çalışıyorum) :D bide bir şey soracam oyun programlamada genellikle C++ mı tercih ediliyor? peki ya niye C# degilde C++??

    • cenkozmercan says :

      oyun programlamacılığı hakkında çok fazla atıp tutacak bilgiye sahip değilim açıkçası. c++’ın tercih edilme sebebi object oriented olmasından diye tahmin ediyorum. ama sadece c++ yetmiyor. directX, openGL gibi api’leri de iyice öğrenmek gerekiyor.

      Açıkçası tek bir kişinin oturup sıfırdan bir 3D oyun motoru yazması epey zor. bunun yerine open source olan motorları kurcalayıp, hazır olay şeylerden bir mod yapmak başlangıç için çok daha kolay. Mesela counter strike half life için yapılmış bir mod ve başarılı olunca valve tarafından yapan adam işe alınıp counter strike ayrıca bir oyun olarak piyasaya sürüldü.

      Yaşın daha gençmiş, o yüzden önünde sevdiğin bir şeyi öğrenmek için uzun yıllar var. Sadece motivasyonunu kaybetme ve ufak ufak biryerlerden başlamanın, çok büyük bir projeye sıfırdan başlamaktan daha kolay ve sonuçlarını göreceğin için motive edici olduğunu unutma. kolay gelsin :)

      • Şeref says :

        Aslına bakılırsa c# da nesne yönelimli(Object Oriented) bir programlama dilidir. Oyunlar Yüksek performansla çalışması gereken bilgisayar programlarıdır. c++ da nesne yönelimli programlama dilleri arasında en performanslı çalışan dildir. Bu yüzden büyük çaplı oyunlarda genelde c++ kullanılır. Yani c++’ ın tercih edilmesinin sebebi nesne yönelimli olmasının yanında performanstır.

        Eklemek istedim, iyi çalışmalar…

  2. Mehmet says :

    Bende Daha 13 Yaşındayım C# C++ Kodlama çeşidi ama Hangisinin Ne Tür Özellikleri olduğunu bilmiyorum Microsoft’un Visual Basic Programıyla Windows için ne kadar çok program yazılmış ve Microsoft Büyümüş Şimdi hala Windows Üstün ama Ben Şöyle bir dedikodu duydum Microsoft Windows Çekirdğini kendisi yapmamış Linux’tan Çalıntı yapmış duydum doğrumu bilmiyorum. Neyse…

    Bende Visual Basic’le uğraşmıyorum çünkü Photoshop gibi bir sürü Kısayol tuşları vardır kesin ve Öğrenilecek çok ayrıntılar var hem sadece C++ C# Yok HTML (Web Sayfası kodlamasıda var) Şu programlarla web sitesi yapılıyor Joomla,WordPress,VBulletin Bu Sitede Aşağıdakigi Heralde WordPress ile Dizayn edilmiş.
    Oyun Modifiye Etmek için ilk önce dosyalarına gideceksin
    örnek: Bana Göre en kolay modifiye edilen ve Bence Üzerine Çok güzel oyun yapılabilcegi Düşündüğüm ID Tech 3 Motoru Quake 3 Oyunu varsa Oyunun Dosyasına gideceğiz Sonra baseq3 adlı dosyayı açacağız ve Orda Textures(Harita Yüzeindeki TGA Resimler yada BMP Resimler Models oyun içindeki 3D Modeller örn:Silahlar,Players,Pickups Sounds oyun içi sesler Silah sesleri oyuncu sesleri ve Harita müziği gibi. işte bunları Resim Düzenleme programları gibi programlarla Texture’ları Düzenleye biliriz sesleri WAV Dosyalarını başka bir oyundan alabiliriz.
    Günümüzde Call of Duty Modern Warfare 2 gibi oyunlar ID Tech 3 Motorunu Çook Ama Çook değiştirmişler ki Şimdi Infinity Ward IW Engine olarak biliniyor sanırım.

    Size Aşağıda Ne Tür Kodlamalar olduğunu beliticem:
    VB Scripts C# C++
    Java (J2ME=Cep Telefonları için Küçük boyutlu Yazma dili JavaScript= Web sayfaları için asıl kodlardan biri çok işe yarar Yorum kutusunun köşesinde Alanı büyültme işareti bile JavaScript yapıyor.
    Linux Kodlama : .TAR(Linux Tabanlı işletim sistemleri genellikle Bunu Kurulum dosyası yada uygulama olarak görür Mac OS X Hariç. GZ=Buda linux için kurulum Türklerin TÜBİTAK’ın yapmış oldugu PARDUS’Ta Linux Çekirdeği üzerine yazılmıştır ama Slax’tan farkı yok bence.
    Bildğim bu kadar Emeğe Saygı Kimse Bilmişlik Taslamasın Çünkü hayat Bilimle Yaşanır Herkes bilgisini paylaşsın ne Olursa Olsun Ben Senden daha çok biliyorum Yok O senden az biliyor gibi Yavşaklıklar yapılmasın Lütfen Yaş Falan Farketmez Ayrıca Konu Süper Olmuş Çoook Teşekkürler.
    Bence Bilginin Sonu Yok!

  3. Mehmet says :

    Evet Blog’un güzel olmuş. Ben Burayı Çok Ziyaret ettim.

  4. Mehmet says :

    Word Press ile BLOG Yapıldığını bilmiyordum doğrusu.

  5. Anonim says :

    Böyle Oyun yada Program yazmak Programla Yazılmıyor öyle o işin Kolay Tarafı aslında Daha Visual Basic Programının Nasıl Yazıldıgını ögrenmek Çook Eskiden Kodları Kendin Yazardın Tabiikide 1 Kisi değil o Zamandan Bu Zamana Kadar Herşey Kolaylaştı aslında Şimdide zor tarafı var Script Yazmak Matematik işlemlerine benzer mesele HTML Kodları Matematik Problemlerine benziyor örn: Soldaki Kod Başı Sağdaki Kodu Soldaki Kodun Bittigini Gösteriyor. Bundanda Ötesi var o da HEX Kodu 00 01 00 11 01 00 11 0
    Gibi Milyarlarca Kodlar Script’teki Yazıları olusturuyor HEX’te 0=Deger 1=Boş gibi tam bilmiyorum HEX’in de Ötesi var Donanım Nötron,Proton,Elektronların Yolunu belirleyen Donanımdır CPU Ona Göre İşlem yapar CPU Matematiksel İşlemler yaparak Donanım>HEX>Script>Program İşler CPU Saat Tepki Frekansı Nekadar Yüksekse O kadar Hızlı yapar fakat Voltajı Yüksektir CPU’nun Normal Frekansının yada Voltajının Kendisinden Yükseğine Çıkartılmasına Overclock denir Overclock Soğutma Olmazsa CPU Isı Direnci Normal Değerlerden Yüksek Olursa Allah Rahmet eylesin… :D Olur yani İlk önce Evinizdeki Sigortalar atar Kısa devre olursa yada Kasadan Dumanlar Çıkar haha Hiçbir Soğutma olmasaydı ve CPU Normal Değerlerinde Çalışsaydı %100 Kullanımda bile Yanmaya Dayanıklıdır Fakat Oldugundan Yükseğe Çıkarsa Anında Şortu Çeker
    Direncinden Yüksek Olursa Tabiikide İyi bir Soğutma Olursa Olanından Yüksek Değerde Kullanabilirsiniz fakat Fan Kullanıyorsanın Fanın Ömrünü Azaltır.
    Eğer Çok Yüksek Değer Yaparsanız Fan Soğutmaya Gücü Yetmez ve CPU Yine Ruhuna Fatiha olur :D… NEYSE KONUYU NEREDEN NEREYE TAŞIDIK
    DAHA BU MAKINANIN EN ÖNEMLİ PARÇASIYDI FAKAT DAHA BİRSÜRÜ PARÇA VAR GPU,SOUND,RAM,BIOS,CMOS,FIREWIRE vs.
    Yani Oyun Moturunu Yapmak Çook Uzun Sürer Bunun İçin Ekip Çalışması Lazim ben bu Tür Şeyleri Sadece biliyorum Uygulamıyorum Kısacası YAPAMAM ÇÜNKÜ C++ C# GİBİ ŞEYLERİ HİÇ DENEMEDİM BİLMİYORUM HTML KODU İSE ONUDA UGRASMIYORUM DREAMWEAVER VAR ZATEN BANA NE? BUNU YAPMASINI BİLEN YAZILIM VARKEN BEN TUTUPTA NİYE TEKER TEKER YAZAYIM Kİ? ÇOK ZOR ZATEN KENDİN BİR SCRİPT YAPSAN ONUDA ŞİRKETLER YAPAR ADINI KOYAMAYABİLİRSİN. Sen Hiç Böyle Bir Script Soucre Gördün mü= AlexScript=|set=2 Aslında olurda nereden başlayacaksın yukarıdakı Alex Scripti’de Kafadan salladım Zaten HTML Koduna benziyor Ben Birde JavaScript’e bakmak istedim Önümde Rastegele Yazılmış alfabe geldi ‘!+’^&+%(&%)GKSD½${#q’^%^’ Hiç birşey anlasılmıyor demekki Netscapenin çıkardıgı script gittikçe Gelişmis okadar Gelismiki Basit bir Kodken Simdi Çok Karışık Günümüzde HTML5 Çoğu Zaman Javascript kullanıyor Rakibi Flash Player HTML5 Yakında Javascripti Animasyonları geliştirerek Flash player gibi olacak zaten Flash Playerin Kullanılma Sebebi Webde Video İzleme olsa gerek Onun Yerine Web Browserlara Eklenti gelse Web Browser Videoları Oynatsa Zaten varda Ayrı pencere Açıyor videolarda ve Sayfada Durmuyor Kendine ait sekme açıyor ayrı izleniyor…

    NEYSE YORUMUMA CEVAPLAR GELİRSE SEVİNİRİM…
    BEN SADECE BİLİYORUM YAPMASINI BİLMİYORUM…

  6. @dministr@tor - @dmin says :

    Hmm Teşekkürler :) Evlat 0.3 Olması Lazım Kaç Yaşındaysa Ona Gören Ebeveyn daha Yeni olduğu için BETA Fakat versiyonu yeni
    :D İÇİŞÇŞÜ,ÜÜŞİÇİŞÇ.İŞÇÖİŞÖ = Bu Harfleri UNICODE Hiç Tanımıyor.

  7. kenan says :

    valla tebrik ederim çok derin bilgiler vermişsiniz hepiniz. ayrıca on üç yaşındaki kardeşlerimiz daha o yaşta gönül vermişler bu işlere bunada çok sevindim. ben fizik motoru hakkında bilgi edinmek istiyorum ama çok bişey bulamadım. fizik motorunun oyunlara kattığı nedir? oyun motorunun dışında ekstra bi unsur olduğunu biliyorum, görevleri hakkında bilgi verirseniz çok sevinirim. şimdiden teşekkürler.

    • cenkozmercan says :

      fizik motoru en basit haliyle oyun dünyası içinde objelerin birbirleri ile etkileşime girdiklerinde nasıl reaksiyon göstereceklerini hesaplayan bir programdır. yani diyelim oyunda karakterimiz ile yürüyoruz ve bir masaya çarptık ve masa ileri hareket etti ve üstündeki şişeler sallandılar ve bazıları devrilip yuvarlanmaya başladılar…Ya da bir cama ateş ettik ve cam parçaları gerçekçi bir şekilde kırılp yere döküldüler.

      Tabi günümüz oyunlarının hepsinde olduğu için bu tür uygulamalar artık bizi ve özellikle 10 sene öncesinin oyunlarını hiç oynamamış genç nesili şaşırtmıyor. Tabi ki cama ateş edince cam kırılacak değil mi? Ne kadar normal. Tabi eski oyunlarda fizik motoru olmadığı için zaten haritadaki şeylerle etkileşime girmek diye birşey yoktu. Mesela HalfLife 2’deki gravity gun ile yerden herhangi birşey alıp atmak gibi. Ya da bir varile çarpıp onu devirmek…Sadece ufak tefek şeyler yapılabiliyordu harita ile etkileşim adına, ki en büyük örneği cam kırmaktır sanırım. Ama onun da bugünkü oyunlardan farkı şuydu. Günümüz oyunlarında cam fizik motoru ile yönetiliyorsa, farklı yerine ateş edince farklı şekilde kırılır ve farklı şekilde tuz buz olup yere dağılır. Ama eskiden camın kırılması ile ilgili bir animasyon olurdu ve sen camı nasıl kırarsan kır, neresine ateş edesen et, hep o aynı animasyon tetiklenirdi ve biz de onu görürdük. Ama artık böyle şeyleri önceden hazılanmış tek animasyonlar yerine, gerçek zamanda, yani oyunu oynarken, fizik motoru hesaplıyor ve hangi parçanın nasıl düşeceğini, düşerken başka bir parça ile çarpışırsa buna nasıl tepki vereceğini oyun motoruna anlatıyor.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: