Unity Nedir ? Unity Oyun Programlama Nasıl Yapılır ?
> Blog > Yazılım > Unity Nedir ? Unity Oyun Programlama Nasıl Yapılır ?
8.09.2021
Unity Nedir ? Unity Oyun Programlama Nasıl Yapılır ?

En basit şekliyle Unity bir oyun motoru ve geliştirme platformudur (IDE - Integrated Development Environment). Demin de bahsettiğimiz üzere eğer oyun geliştirmeye ilginiz varsa Unity'yi öğrenmek öncelikleriniz arasında yer almalıdır.

Unity 'de bir oyunu sıfırdan yapabilmeniz için gerekli tüm bileşenler mevcuttur. Bunlara animasyonlar, oyun için gerekli fizik motorlarını örnek olarak gösterebiliriz.

Unity 'nin en büyük avantajı yıllık belli bir gelire ulaşana kadar (bu yazının yazıldığı zamanda bu 100.000 $ dır) ücretsiz olmasıdır.

Ücretsiz kullanılabiliyor olması sizi Unity hakkında basit veya kısıtlanmış bir platform olduğu düşüncesine itmemelidir. Unity son derece profesyonel bir araçtır ve sektörün en büyükleri tarafından kullanılmaktadır. Mobil oyunların önemli bir kısmı Unity tarafından geliştirilmiştir.

Call Of Duty Mobile, Angry Birds, Temple Run, Super Mario Run, Crossy Road, Hitman Sniper, Hearthstone gibi birçok ünlü oyun Unity ile yapılmıştır.

Unity Kullanmanın Avantajları Nelerdir ?

Unity 'nin en büyük avantajı şüphesiz ücretsiz olmasıdır. Son derece profesyonel bir platformu ücretsiz kullanma, birçok geliştiricinin bu platformu seçme nedenidir.

Oyun geliştiricilerin yaptıkları 2D veya 3D (2 Boyutlu veya 3 Boyutlu) oyunların olmazsa olmazı fizik kurallarıdır. Bir nesnenin başka bir nesne ile çarpışması, yer çekimine uğraması gibi olayların en baştan kodla yazılması son derece zahmetlidir. Unity size bu fizik kurallarını beraberinde getirir ve en önemlisi bunları yazacağınız kodla dilediğiniz gibi değiştirme imkanı sağlar.

Birçok bağımsız oyun geliştirici veya takımı yaptıkları oyunların en az birinin tutması ile iyi gelir elde etmiş sonrasında da kendi oyun şirketlerini kurmuştur. Bu yüzden Unity 'nin önemi bir kez daha anlaşılmaktadır.

Unity yazılım sektöründe en çok kullanılan dillerden biri olan C# ile uyumludur. C# yazılıma yeni başlayanlar için son derece kolaylık sağlayan bir dildir. Ayrıca C ve Java gibi diğer popüler dillerle pek çok ortak noktası vardır.

Oyununuzun bir parçası için ( örneğin karakter, deniz dalgası, ateş ) uğraşmak istemiyor ve hazır yapılmış asset ler (varlıklar) kullanmak istiyorsanız Unity mağzasından (Asset Store) bunları temin edebilirsiniz. Unity Asset Store bu açıdan zengindir ve içinde ücretli veya ücretsiz birçok asset barındırır.

Oyununuza reklam vereceğiniz zaman Unity 'nin kendi reklam birimlerini (Unity Ads) kullanabilirsiniz. Doğal olarak Unity ile yazılmış tüm oyunlarla entegrasyonu kolay ve hızlıdır.

Unity ile yazılmış oyunlar hem Android hem de IOS uyumludur. Cross platform özelliği ile piyasada hakim 2-3 uygulama marketine oyun geliştirebilirsiniz. (PlayStore, AppStore ve AppGallery)

 

Unity 'de mobil oyun geliştirmenin yanında Windows tabanlı oyunlar veya konsol oyunları da (PS ve XBox) geliştirebilir, oyunlarınızı Steam ve benzeri platformalarda da yayınlayabilirsiniz.

Her geçen gün Unity ile geliştirilen oyunların sayısının artması sayesinde Unity Geliştirici Topluluğu (Community of Unity) hızla büyümekte bu da geliştirme yaparken aradığınız bir kodu internette daha hızlı bir şekilde bulmanıza imkan vermektedir.

Unity ile çalışan şirketlerin sayısındaki hızlı yükseliş ile oyun geliştirme alanında iş bulma imkanları her geçen gün artmaktadır.

Bunun dışında Unity sadece bir oyun geliştirme platformu değildir. Unity ile ayrıca güçlü animasyonlarda yapabilirsiniz.

Unity İle Mobil Oyun Nasıl Geliştirilir

Günümüzden oyun yapmak bir hobi haline dönüşmüştür.Genellikle yazılım şirketleri ve mühendislikte okuyan öğrenciler oyun yapımı ile uğraş verirdi.Artık internette oyun yapımı hakkında çok döküman var ve bundan dolayı oyun yapımı artık eskisi gibi zor uraşı veren konu değildir. Ceida Software ailesi olarak bizde sizlere oyun yapmaya nasıl başlanır, kullanılan programlama dilleri ve kütüphaneleri nelerdir, oyun programlamaya ilk adımınız, bir 2D & 3D ekrana nasıl çizdirilir basıl boyutlandırlır, müzik ve ses dosayalarını nasıl projemize ekleyebiliriz, multiplayer ve network giriş, fizik ve matematik kuralları, yapay zekayı oyunumuza nasıl adepte ederiz bunları teker teker uygulamalı olarak sizlere göstereceğiz. İlk başta oyun programlamaya geçmeden önce bu işi sevmelisiniz ve gece gündüz bu işle uraşacaksınız belki, kimi zaman gelecek zorlandığınız içinden çıkamadığınız konular olacak ama yılmayacaksınız hiçbir zaman.

 

Nedir bu oyun programlama sizlere bunu anlatacağım.Simdi bunları teker teker ele alalım.

  • Senaryo
  •  Araçlar
  • Programlama Dili
  • API arayüz yardımcılar
  • Yapay Zeka
  • Yapım zamanı

 

SENARYO

Senaryo sürekli değişen bir yapıdadır ve esnek olaması gerekir.Oyun senaryosu nedir yani bir oyun dizaynı nasıl yapılır ve bunları gösterecem.

Oyun taslağını ele alırsak;

  • Oyunumuzdaki karekterler kimlerdir ve kim nekadar büyüktür?
  • Oyunumuzdaki karekterlerimiz neye benziyorlar. İnsanmı, yaratıkmı, hayvanmı, yoksam bir arabamı, veya bir tank, belki bir uçakda olabilir.
  • Oyunumuzda karekterler, karşı bir karekterle karşılaştığında nasıl bir tepkime verecekler?
  • Oyunumuzdaki karşı karekterler nereye neye göre hareket edecekler?
  • Oyunumuzdaki Alan nekadar büyük olmalıdır?
  • Oyunumuzun Grafikleri 2 boyutlumu yoksam 3 boyutlumu olacak?
  • Oyunumuzda Kotrolü ne ile sağlıyacağız maus, klavye ?
  • Oyunumuzda nasıl leveller olacak?
  • Oyunumuzun pualaması nasıl olacak?
  • Oyunumuzdaki karekterlerin bir hızı varmı ve nekadar olacak?
  • Oyunumuzda nasıl bir yapay zeka kullanacağız?
  • Oyunumuzun ismi ne olacak? Oyununuz bittikten sonrada bir isim verebilirsiniz.

Bunları oyun programlamaya geçmeden önce hayal gücünüzle düşünerek ve gerekirse not alarak çalışın. Bu senaryo’ ya bir örnek verelim. Bir 2 dünya savaş oyunu yaptığımızı düşünelim. Oyunumuzun baş karekteri hangi devletir, hangi silahlarımız, hangi cephanelerimiz, hangi araçlarımız ve nekadar bulunmaktadır.Oyun esnasın kiminle iftifakız kiminle düşmanız ve kime saldırmalıyız.Oyunumuz 2 boyutlumu, yoksam 3 boyutlumu olsun. Oyunun süresi nekadardır. Oyunda kontrollerimizi

 

Oyun Kontrolleri ve Ekran detayları

Bir oyunumuzun ekranda çözünürlüğü nasıl olmalıdır veya oyun esnasında ayarlanmalımı olmalıdır. Oyunumuzun giriş menüleri nelerdir? Oyun sırasında ekran butonları olacakmı? Oyun sırasında hızlı çıkış olacak mı (ESC) tuşu gibi? Oyunumuzda kayıt(save) kısmı olacakmı? Oyunumuz multiplayer olacaksa, başka kişilerle irtibat kurabileceklermi? Bu olayları teker teker ele almamız gerekiyor.

 

ARAÇLAR

  • Oyun yapımı esnasında bir çok araca ihtiyacımız var.
  •  Bunlardan biri photoshop. Texture(DESEN) nesnelerini photosop gibi resim aracı ile yaparız.
  • Oyun modellemelerini yapmak için bir 3D çizim aracına ihtiyacımız vardır.3D max studio, maya, blender, XSI, cinemada4D… bu araclarla oyumuzdaki kerekterler, odalar, duvarlar, nesneler ve oyunda bir çok görsel nesnemizi bu programlar ile yaparız.
  • Oyunumuzda bir muzik ve ses efekleri olacakmı. Bunun için gerekli araçlarımız olması gerekir.

Programlama Dili

Oyunumuzu hangi programlama dili ile yapacağımız çok önemlidir. Bunlardan başlıcaları:

 

  • C/C++
  • C#
  • Visual Basic
  • Delphi / Pascal
  • JAVA

 

Seçeceğimiz dil çok önemlidir. Dilde şu unsurlara dikkat etmemiz gerekir; Güç, Hız, OOP, Kullanabilirlik, Taşınabilirlik ve İngilizce & Türkçe Dökümanlar.

 

Görüyorsunuz ki programlama dilinde C++ bir adım önde.Neden C++ derseniz ki, kütüphaneleri, Türkçe ve İngilizce dökümanları bol miktarda ve güçlü bir programlama dilidir. Büyük firmalar’ da C++ programlama dilini önermektedir. Birde programlama dilinde platformda önemlidir. Uygulamanızı Windows & UNIX ortamlarda yapacaksanız ona göre bir programlama dili ve ona göre de kullnacağınız api’ ler seçmeniz gerekir.Mesala Directx API micsoroftun yapıtığı bir çalışma olup sadece windows ortamında çalışmaktadır.

API ARAYÜZ YARDIMCILAR

API’ nin açılımı “application Program Interface” dir. Önemli noktalardan biridir. Bir çok dalda ve ona bağlı bir çok API bulunmakta.

 

GRAFİK API

Nedir Bu API buradan bakabilirsiniz.Grafik apileri programlama içinde entegrelenmiş bir biçimde kullanılır. Sizin araçlarla yaptığınız modellemeleri veya API üzerinden programlayarak yapacağınız modellemeleri ekran çıktısı verdirmeye yarayan bir kütüphanedir. DirectX ve OpenGL iki çeşit Güçlü API vardır. Directx sadece windows ortamında çalışmakta olup, opengl windows ve unıx işletim sisteminde çalışmaktadır.Benim tercihim directx’ tir. Hem görsel açıtan iyidir, hemde DirectX Audio, DirectInput, DirectPlay… gibi kütüphaneleride içine barındırmaktadır. Directx ile bundan sonraki konuları CeidaSoftware.com Dersler kısımından inceleyebilirsiniz.

 

YAPAY ZEKA

Bir oyun ortamında sizin kontrolünüz dışındaki karekterlerin bir duvara toslaması veya yapılmayacak bi işi yapması ve buna benzer olayları engellemek için yapılan programlamaya yapay zeka denir.Hangi karekterler nasıl tepki vermelidir, hedefleri nasıl olmalıdır, yapacakları işi ne ile sınırlıdır, bunlar oyunumuz için önemli bir kavramdır. Günümüzde Yapay zeka kütühanelerinide çıkardılar artık bunlar nekadar istedeğimizi sağlar bilemeyiz denemek gerekir, internetten araştırabilirsiniz.

 

YAPIM ZAMANI

Günümüzde oyun yapımı: seneryosunu hazırlamak, programlamak, test aşamasından geçirmek ve cdlerinin basılması ortalama 2 yıl ile 4 yıl arası bir vakit alabilir. Hobi olarak uraşacağız bizler derseniz 3 gün ile 1 sene arasında oyununuzu tamamlamak mümkündür.Bir tetris oyunu yaparsanız 3 gününüzü alır. Bir savaş oyunu yaparsınız 1 senenizi alır. Tamamen kişinin senaryosuna bağlıdır.