Konu Başlıkları Gizle
- 1 Giriş: Oyun Yapmak Sadece Kod Yazmaktan İbaret Değil
- 2 Unity - Endüstri Standardı ve Çok Yönlülük
- 3 Unreal Engine - Grafik Canavarı ve AAA Gücü
-
4
Godot - Açık Kaynak ve Hafiflik Şampiyonu
- 4.1 GDScript - Python'un Kardeşi
- 4.2 2D İçin Mükemmel
- 4.3 Hafiflik
- 4.4 Node Sistemi
- 4.5 Topluluk
- 4.6 3D Desteği (Gelişiyor)
- 4.7 Kime Öneririm?
- 5 Motor Seçimi: Karar Senin
- 6 "Hangi Dili Öğrenmeliyim?" Sorusu Yanlıştır
- 7 Peki Motor Değiştirirsem?
- 8 Dil Öğrenme Sırası
- 9 Olmazsa Olmaz Temel Bilgiler
-
10
Yol Haritası (Adım Adım)
- 10.1 Aşama 0: Hazırlık ve Araçlar (1 Hafta)
- 10.2 Aşama 1: Pong veya Flappy Bird Klonu (1-2 Hafta)
- 10.3 Aşama 2: 2D Platform Oyunu (2-4 Hafta)
- 10.4 Aşama 3: Basit 3D Oyun - Endless Runner (2-3 Hafta)
- 10.5 Aşama 4: Küçük Ama Komple Oyun (1-2 Ay)
- 10.6 Aşama 5: Game Jam'lere Katıl
- 10.7 Aşama 6: Orta Seviye Proje (3-6 Ay)
-
11
Son kelam
- 11.1 Motivasyon ve Gerçekçi Beklentiler
- 11.2 İlk Oyunun Berbat Olacak
- 11.3 Para Kazanmak Zor
- 11.4 Tükenmişlik (Burnout)
- 11.5 Sosyal Hayat ve İş Dengesi
- 11.6 Tavsiyeler
- 11.7 Vazgeçme.
- 12 KAYNAK LİSTESİ (ÖNEMLİ)
Selamlar,
Ya bu yazıyı yazma sebebim artık canıma tak etmesi... son zamanlarda sürekli; "15 yaşındayım, GTA gibi oyun yapıcam?" ya da "Arkadaşlarla MMORPG işine giriyoruz, 6 aya biter mi?" tarzı konular.
Bir dönem merak salıp uğraştığım, birkaç proje yapıp sonuç alamadığım için size acı bir gerçeği söylemem lazım ama bunu sizi kırmak için değil, yol göstermek için anlatıcam. Bu rehberi baştan sona bi okuyun, oyun geliştirme denen devasa okyanusun ne olduğunu ve cidden nereden başlamanız gerektiğini şak diye anlayacaksınız.
Bakın GTA 5'i 1000'den fazla kişi yaptı. Adamların bütçesi 265 milyon dolardı (yapım + reklam). 5 senede bitti. Bi MMORPG için sunucu altyapısı, database yönetimi, network programlama, güvenlik, hile koruması, canlı destek ekibi falan lazım. Yani tek başına GTA veya WoW tarzı bişey yapman fiziksel olarak imkansız.
"Ama Minecraft'ı Notch tek başına yaptı" diyenler çıkacak şimdi. Evet yaptı ama o zaman Minecraft bugünkü Minecraft değildi ki. Grafikler basit, mekanikler basit, multiplayer bile yoktu ilk başta. Şimdiki Minecraft'ı Microsoft'un yüzlerce kişilik ordusu geliştiriyo.
İlk oyununuz Pong olmalı arkadaşlar, Cyberpunk değil. Bu gerçeği kabul etmezseniz aylarca boş hayal kurar, bişi üretemezsiniz. Forumda gördüğüm 10 kişiden 9'u "büyük proje" diye gaza gelip hiçbir şeyi bitiremiyor.
"Oyun motorundan motor mu?" demeyin sakın. Oyun motoru, senin tekerleği yeniden icat etmeni engelleyen araçtır. Fizik motoru, render sistemi, ses sistemi hepsi hazır gelir. Sen sadece oyunun mantığını kurarsın.
"Ben motorsuz sıfırdan yazarım" diyorsan, buyur kardeşim C++ ile OpenGL veya DirectX'e dal. Ama bi üçgen çizmek için 200 satır kod yazarsın. Bi karakteri yürütmek için haftalarca uğraşırsın. Motor kullanmak aptallık değil, akıllıca bi harekettir.
C# öğrenmenin güzel yanı şu: Sadece oyun geliştirmede değil, normal yazılım geliştirmede de kullanılıyor. Web backend (ASP.NET), masaüstü uygulamalar falan... C# bilince iş bulman çok kolaylaşır. İki taşla bir kuş yani.
Unity'nin C# altyapısı Mono ve IL2CPP üzerine kurulu. Mono ile hızlı geliştiriyon, IL2CPP ile performansı köklüyon. Bu detaylar başlangıçta çok lazım değil ama ileride işine yarar.
"Ben her şeyi kendim yapmak istiyorum" deme. İlk 5 projende bunu yapamazsın zaten. Hazır asset kullanarak mekaniklere odaklanırsın, grafiğe değil. Hollow Knight, Cuphead, Among Us, Rust, Escape from Tarkov, Subnautica, Cities: Skylines... Hepsi Unity ile yapıldı. Kaliteyi gördün mü?
-Grafik kalitesi Unreal Engine kadar iyi değil (gerçi HDRP ile baya toparladılar ama bi Unreal değil).
-Lisans sistemi bazen kafa karıştırıyor. Yıllık gelirin 100k doların altındaysa ücretsiz (Personal), üstüne çıkınca Plus veya Pro alman lazım. Geçenlerde saçma sapan değişiklikler yapıp milleti çıldırttılar ama geri adım attılar neyse ki.
-Performans optimizasyonunu iyi bilmezsen oyun kasabilir. Ama bu her motorda var.
Unreal'in C++ yapısı biraz farklı, kendi makro sistemleri falan var. Standart C++'dan biraz değişik. Önce C++ öğrenip sonra Unreal'e geçmek daha mantıklı olabilir.
Performans kritik projelerde inanılmaz kontrol sağlıyor. Her byte'ı optimize edebilirsin ama bu güç sorumluluk getirir. Bellek sızıntısı (memory leak) yaratabilirsin, debug süreci uzayabilir.
"Karakter zıplasın" diyorsun -> Input Action kutusunu çekiyorsun -> Add Impulse kutusuna bağlıyorsun -> Bum, karakter zıplıyor. Kod yazmadan.
Prototip yapma hızı inanılmaz. Bi mekaniği test etmek 10 dakika sürüyor.
Ama Blueprint'in de limitleri var. Çok karmaşık sistemlerde "makarna" (spaghetti) gibi oluyor, okunması imkansız hale geliyor. Performans olarak C++ kadar hızlı değil. Genelde hibrit çalışılır: Ağır işler C++, oyun mekanikleri Blueprint.
Nanite: Milyonlarca poligonlu modelleri optimize edip çiziyor. Film kalitesinde assetler oyunda çalışıyor.
Lumen: Gerçek zamanlı ışıklandırma. Işıklar dinamik değişiyor, eskisi gibi saatlerce ışık haritası (bake) beklemek yok.
MetaHuman: Dakikalar içinde fotorealistik insan karakteri yapıyorsun. Eskiden aylar sürerdi bu.
Tabii bunları çalıştıracak baba bi bilgisayar lazım.
Gördün mü ne kadar temiz? C++ ile kıyasla; header dosyası yok, pointer yok... Başlangıç için lokum gibi.
Godot C# da destekliyor aslında ama topluluk genelde GDScript kullanıyor.

Gereksiz hiçbir şey yok içinde. Eski bi laptopla bile oyun geliştirebilirsin bunda. Unreal'in açılmadığı bilgisayarda Godot yağ gibi akar.
Forumda sürekli görüyorum: "Oyun için C++ mı Python mu?" Yanlış soru abicim. Doğru soru: "Hangi motoru kullanıcam?"
Unity kullanacaksan -> C# öğreneceksin.
Unreal kullanacaksan -> C++ öğreneceksin (veya Blueprint).
Godot kullanacaksan -> GDScript öğreneceksin.
"Önce C++ öğreneyim, sonra Unreal'e geçerim" dersen yol çok uzar. Motoru seç, onun dilini öğren. Motoru öğrenirken dili de öğreniyorsun zaten.
OOP (Nesne Yönelimli Programlama), Fizik, Collision (Çarpışma), Döngüler... Hepsi aynı.
Unity'de transform.position dersin, Unreal'de GetActorLocation() dersin. Aynı işi yapar. O yüzden ilk seçime çok takılma, birinde iyi olursan diğerini öğrenmek çocuk oyuncağı.
Vektör Matematiği - Oyunun Dili
Oyun geliştirmede her şey vektör. Pozisyon, hız, yön... 2D'de Vector2 (x,y), 3D'de Vector3 (x,y,z).
Vektör toplama: İki vektörü toplayıp yeni konum bulursun.
position += velocity * Time.deltaTime; (Bu satır karakteri yürütür işte)
Distance (Mesafe): İki nokta arası mesafe. Düşman sana yakın mı?
float distance = Vector3.Distance(player.position, enemy.position);
Bunların formülünü ezberleme, motorun içinde hazır fonksiyon var zaten. Mantığını bil yeter. Khan Academy'den "Linear Algebra"ya bi göz atın derim.
Atan2 fonksiyonu çok kullanılır açı bulmak için. Dairesel hareket yapacaksan Sin/Cos şart. Yine formül ezberleme, ne işe yaradığını bil yeter.
Oyunda zıplama yapacaksan yerçekimi lazım.
Collision (Çarpışma): Fizik motorunun en önemli olayı. İki obje çarpışınca ne olacak? OnCollisionEnter gibi eventlerle yönetiyorsun.
Rigidbody vs Kinematic farkını iyi öğrenin. Rigidbody fiziğe tabidir, düşer şaşar. Kinematic senin kontrolündedir.
Bak kardeşim, sen game developer olacaksın, 3D artist değil (en azından şimdilik). İlk 5-10 projende kesinlikle hazır assetler kullan.
Unity Asset Store: "Free" filtresini seç, indir kullan.
Kenney Assets: Bu adam bi harika dostum. Her şey bedava, çok kaliteli.
Mixamo: Adobe'nin sitesi. Karakter ve animasyon dolu, bedava.
OpenGameArt: Topluluk malı, tepe tepe kullan.
"Ama ben özgün oyun yapıcam" deme şimdi. İlk projelerini zaten kimse oynamayacak, kendimizi kandırmayalım. Onlar öğrenme projesi. Mekanik öğren, kod öğren. Grafik en son iş.
Önerim: İlk 3 oyununu bitir, sonra Blender'a başla. İkisini aynı anda öğrenmeye çalışırsan beyin yanar, ikisinde de yarım kalırsın.
Freesound.org (efektler), YouTube Audio Library (müzikler).
Kendi sesini yapmak istersen Audacity (ses düzenleme) ve BFXR (8-bit ses yapma) işini görür.
Git nedir? Kodunun her halini kaydeden sistem. Hata mı yaptın? Geri dön. Dosyan mı bozuldu? Geri getir.
GitHub kullan. Projeni oraya at. Hem yedeğin olur (Google Drive ile yedekleme olmaz, Git başkadır), hem de portfolyon olur. İş başvurularında GitHub profiline bakarlar.
YouTube'a "Git ve GitHub kullanımı" yaz, 30 dakikada öğrenirsin.
Oyun geliştirme maraton koşusu gibidir, 100 metre deparı değil. Sırayla gideceksin.
Motorun kendi basit tutorial'larını yap. Arayüzü öğren. Hangi tuş nerede, sahneye küp nasıl koyulur falan... Bunu atlama.
Neden? Çünkü mekanik çok basit ama oyun döngüsü tam. Giriş var, oyun var, skor var, oyun bitti ekranı var.
Burada input almayı (tuşa basınca karakter gitsin), çarpışmayı (top değdi mi?), skoru ve sahne yönetimini öğreniyorsun.
YouTube'da "Unity Pong Tutorial" yaz, izleyerek yap. Ama kopyala-yapıştır yapma, mantığını anla.
Önemli: Grafikler çöp olsun, ses olmasın önemli değil. OYUNU BİTİR. Yarım bırakma.
Zıpla, koş, düşmanı ez, altın topla.
Burada öğreneceklerin: Karakter kontrolü (zıplama hissi önemli), animasyon sistemi (koşma, zıplama animasyonları), kamera takibi, basit düşman yapay zekası (sağa sola gitsin), level tasarımı (tilemap kullanımı).
Brackeys veya Code Monkey kanallarına bak, harika serileri var.
Bu projeyi en fazla 1 ayda bitir. Daha uzuyorsa çok özellik ekliyorsun demektir, yapma. Sade olsun, bitmiş olsun.
Neden? Çünkü tek yöne gidiyor, kontrolü kolay.
Burada 3D koordinat sistemini (Vector3), 3D fiziği, prosedürel yol üretimini (yolun sürekli önüne eklenmesi) öğrenirsin.
Kötü fikirler: MMORPG, GTA klonu, Battle Royale.
İyi fikirler: Tower Defense, basit bulmaca oyunu, kuş bakışı shooter.
Bunu yap ve Itch.io'ya yükle. İnsanlar oynasın, yorum yapsın. İlk gerçek oyunun bu senin. CV'ne yazarsın "yayınlanmış oyunum var" diye.
Ludum Dare var, Global Game Jam var. Katıl bunlara.
Sana hız kazandırır. 48 saatte oyun bitirmek zorundasın, o yüzden gereksiz detaylarla uğraşamazsın. Önceliklendirmeyi öğrenirsin.
Ayrıca çevre yaparsın, milletle tanışırsın.
Bunu Steam'e koymayı deneyebilirsin (100 dolar giriş ücreti var). Belki harçlığını çıkarır. Amaç zengin olmak değil, süreci öğrenmek.
Başarılı olanlar (Stardew Valley, Undertale falan) istisna, kural değil. Sen hobi olarak başla, tutkuyla yap. Para gelirse ne ala.
Küçük başla, büyük düşün. Her gün az da olsa kod yaz. 30 dakika bile olsa yaz.
Buraya kadar sabırla okuduğunuz için teşekkürler. Umarım bu rehber kafanızdaki sis bulutunu biraz dağıtmıştır. Herkese iyi sosyaller!
Son not: İlk oyununuzu bitirince paylaşın, hep beraber oynayalım, yorumlayalım.
Ya bu yazıyı yazma sebebim artık canıma tak etmesi... son zamanlarda sürekli; "15 yaşındayım, GTA gibi oyun yapıcam?" ya da "Arkadaşlarla MMORPG işine giriyoruz, 6 aya biter mi?" tarzı konular.
Bir dönem merak salıp uğraştığım, birkaç proje yapıp sonuç alamadığım için size acı bir gerçeği söylemem lazım ama bunu sizi kırmak için değil, yol göstermek için anlatıcam. Bu rehberi baştan sona bi okuyun, oyun geliştirme denen devasa okyanusun ne olduğunu ve cidden nereden başlamanız gerektiğini şak diye anlayacaksınız.
Giriş: Oyun Yapmak Sadece Kod Yazmaktan İbaret Değil
Şimdi piyasada şöyle garip bi algı var, herkes sanıyor ki oyun yapmak sadece kod yazmak. "Ben programlama öğrenirim, oturur GTA'yı yazarım" kafası bu. yok öyle bi dünya. İşler hiç öyle yürümüyor. Oyun geliştirme dediğin şey sanat. Bak bi oyun için neler neler gerekiyor, sayayım sana:Programlama (Code)
Oyunun beyni burası. Karakterin yürümesi, düşmanların yapay zekası, fizik hesaplamaları, menü sistemleri falan... Hepsi kod. Ama bu işin sadece iskeleti.Grafik ve Sanat (Art)
3D modelleme, kaplamalar (texture), animasyonlar, arayüz (UI/UX) tasarımları, konsept çizimler, patlama efektleri (VFX), shader programlama... Bi karakterin sadece modelini yapmak bile saatler belkide günler sürüyor usta. Sonra buna iskelet giydircen, hareket ettircen, boyıcan... GTA'daki tek bir arabanın modelini yapmak bile adamın günlerini alır.Ses Tasarımı (Audio)
Müzik besteleme, efektler, seslendirmeler, ortam sesleri... Oyunun atmosferinin yarısı sesten gelir bana sorarsanız. Sessiz bi korku oyunu düşünün? Tırt olur. Adım sesi, kapı gıcırtısı, rüzgar sesi... Hepsini biri yapıyor bunların.Oyun Tasarımı (Game Design)
Level tasarımı, mekanikler, oyunun zorluk dengesi, ekonomi sistemi (özellikle RPG yapacaksan), tutorial tasarımı... "Bu oyun eğlenceli mi abi?" sorusunun cevabı burada gizli. Kodun mükemmel olsun, tasarım kötüyse oyun sıkıcı olur, oynanmaz.Proje Yönetimi
Zaman planlaması, görev dağılımı, versiyon kontrolü, hata takibi... Özellikle ekip işinde hayat kurtarır bu.Bakın GTA 5'i 1000'den fazla kişi yaptı. Adamların bütçesi 265 milyon dolardı (yapım + reklam). 5 senede bitti. Bi MMORPG için sunucu altyapısı, database yönetimi, network programlama, güvenlik, hile koruması, canlı destek ekibi falan lazım. Yani tek başına GTA veya WoW tarzı bişey yapman fiziksel olarak imkansız.
"Ama Minecraft'ı Notch tek başına yaptı" diyenler çıkacak şimdi. Evet yaptı ama o zaman Minecraft bugünkü Minecraft değildi ki. Grafikler basit, mekanikler basit, multiplayer bile yoktu ilk başta. Şimdiki Minecraft'ı Microsoft'un yüzlerce kişilik ordusu geliştiriyo.
İlk oyununuz Pong olmalı arkadaşlar, Cyberpunk değil. Bu gerçeği kabul etmezseniz aylarca boş hayal kurar, bişi üretemezsiniz. Forumda gördüğüm 10 kişiden 9'u "büyük proje" diye gaza gelip hiçbir şeyi bitiremiyor.
Motor ve Dil Seçimi (Kutsal Üçlü)
Geldik en cafcaflı konuya: Hangi oyun motorunu kullanacağız?"Oyun motorundan motor mu?" demeyin sakın. Oyun motoru, senin tekerleği yeniden icat etmeni engelleyen araçtır. Fizik motoru, render sistemi, ses sistemi hepsi hazır gelir. Sen sadece oyunun mantığını kurarsın.
"Ben motorsuz sıfırdan yazarım" diyorsan, buyur kardeşim C++ ile OpenGL veya DirectX'e dal. Ama bi üçgen çizmek için 200 satır kod yazarsın. Bi karakteri yürütmek için haftalarca uğraşırsın. Motor kullanmak aptallık değil, akıllıca bi harekettir.
Unity - Endüstri Standardı ve Çok Yönlülük
Unity şu an dünyada en çok kullanılan motor galiba. Özellikle mobil oyunlar ve indie projeler için tartışmasız lider. Neden bu kadar popüler derseniz:C# Dili ve Gücü
Unity C# kullanıyor. C# modern, nesne yönelimli, bellek yönetimi otomatik (garbage collection var), öğrenmesi nispeten kolay bi dil. Python kadar basit değil ama C++ kadar da kafa yedirtmez. Tam ortası.C# öğrenmenin güzel yanı şu: Sadece oyun geliştirmede değil, normal yazılım geliştirmede de kullanılıyor. Web backend (ASP.NET), masaüstü uygulamalar falan... C# bilince iş bulman çok kolaylaşır. İki taşla bir kuş yani.
Unity'nin C# altyapısı Mono ve IL2CPP üzerine kurulu. Mono ile hızlı geliştiriyon, IL2CPP ile performansı köklüyon. Bu detaylar başlangıçta çok lazım değil ama ileride işine yarar.
Asset Store - Hazır Varlık Cenneti
Unity'nin Asset Store'u inanılmaz zengin. Binlerce ücretsiz ve paralı materyal var. Modeller, animasyonlar, sesler, kod parçaları... Ne ararsan var."Ben her şeyi kendim yapmak istiyorum" deme. İlk 5 projende bunu yapamazsın zaten. Hazır asset kullanarak mekaniklere odaklanırsın, grafiğe değil. Hollow Knight, Cuphead, Among Us, Rust, Escape from Tarkov, Subnautica, Cities: Skylines... Hepsi Unity ile yapıldı. Kaliteyi gördün mü?
Dokümantasyon ve Topluluk
Unity'nin dokümantasyonu mükemmel. Hangi fonksiyon ne işe yarıyor, örnek kodlar falan hepsi var. Takıldın mı yaz Google'a bin tane cevap çıkar. YouTube derya deniz. Türkçe kaynak da bol. Unity Learn diye platformları var, ücretsiz kurs dolu.Platform Desteği
Unity ile yapıp 25'ten fazla platforma çıktı alabilirsin. Windows, Mac, iOS, Android, PlayStation, Xbox, WebGL... Hepsine tek kodla çıkabiliyosun. Bu çok büyük avantaj.Dezavantajları Yok mu?
Her şey güllük gülistanlık değil tabi. Unity'nin de eksileri var:-Grafik kalitesi Unreal Engine kadar iyi değil (gerçi HDRP ile baya toparladılar ama bi Unreal değil).
-Lisans sistemi bazen kafa karıştırıyor. Yıllık gelirin 100k doların altındaysa ücretsiz (Personal), üstüne çıkınca Plus veya Pro alman lazım. Geçenlerde saçma sapan değişiklikler yapıp milleti çıldırttılar ama geri adım attılar neyse ki.
-Performans optimizasyonunu iyi bilmezsen oyun kasabilir. Ama bu her motorda var.
Kime Öneririm?
Yeni başlayanlara, mobil oyun yapacaklara, 2D düşünenlere (2D desteği harika), indie geliştiricilere.Unreal Engine - Grafik Canavarı ve AAA Gücü
Epic Games'in motoru. Fortnite bununla yapıldı. Grafik kalitesinde tartışmasız lider. AAA oyunların çoğu burada yapılıyor. The Last of Us, Gears of War, Batman Arkham serisi, Final Fantasy VII Remake, Street Fighter 6, Tekken 8, Hogwarts Legacy... Liste uzar gider.C++ - Güçlü Ama Zorlu
Unreal Engine C++ kullanıyor. C++ low-level (düşük seviyeli) bi dil. Bellek yönetimi manuel, pointer'lar var, header dosyaları var... Öğrenmesi biraz terletir. Ama şu da var: C++ bilince programlamanın temellerini, makinenin nasıl çalıştığını harbi anlarsın.Unreal'in C++ yapısı biraz farklı, kendi makro sistemleri falan var. Standart C++'dan biraz değişik. Önce C++ öğrenip sonra Unreal'e geçmek daha mantıklı olabilir.
Performans kritik projelerde inanılmaz kontrol sağlıyor. Her byte'ı optimize edebilirsin ama bu güç sorumluluk getirir. Bellek sızıntısı (memory leak) yaratabilirsin, debug süreci uzayabilir.
Blueprint - Görsel Kodlama Sistemi (Game Changer)
Unreal'in en büyük artısı bu Blueprint sistemi. Görsel kodlama yani. Kod yazmadan, kutucukları sürükle bırak mantığıyla oyun yapabiliyorsun. Node'ları bağlıyorsun, mantığı kuruyorsun."Karakter zıplasın" diyorsun -> Input Action kutusunu çekiyorsun -> Add Impulse kutusuna bağlıyorsun -> Bum, karakter zıplıyor. Kod yazmadan.
Prototip yapma hızı inanılmaz. Bi mekaniği test etmek 10 dakika sürüyor.
Ama Blueprint'in de limitleri var. Çok karmaşık sistemlerde "makarna" (spaghetti) gibi oluyor, okunması imkansız hale geliyor. Performans olarak C++ kadar hızlı değil. Genelde hibrit çalışılır: Ağır işler C++, oyun mekanikleri Blueprint.
Grafik Gücü - Nanite, Lumen, MetaHuman
Unreal Engine 5 ile gelen özellikler çığır açıcı arkadaşlar:Nanite: Milyonlarca poligonlu modelleri optimize edip çiziyor. Film kalitesinde assetler oyunda çalışıyor.
Lumen: Gerçek zamanlı ışıklandırma. Işıklar dinamik değişiyor, eskisi gibi saatlerce ışık haritası (bake) beklemek yok.
MetaHuman: Dakikalar içinde fotorealistik insan karakteri yapıyorsun. Eskiden aylar sürerdi bu.
Tabii bunları çalıştıracak baba bi bilgisayar lazım.
Sistem Gereksinimleri
Unreal ağır bi motor. Editörü açmak bile 5-6 GB RAM yiyor. Proje büyüdükçe 16 GB RAM bile yetmiyor bazen. GPU (ekran kartı) çok önemli. Orta-üst segment bi PC şart.Lisans ve Para Mevzusu
Bildiğim kadarıyla hala Unreal Engine ücretsiz. Oyunun 1 milyon dolar ciro yapana kadar beş kuruş ödemiyorsun. Sonra %5 pay alıyorlar. Gayet adil bence.Kime Öneririm?
Grafik takıntısı olanlara, 3D ve AAA hedefleyenlere, C++ öğrenmek isteyenlere, Blueprint ile hızlı iş yapmak isteyenlere.Godot - Açık Kaynak ve Hafiflik Şampiyonu
Godot son yıllarda acayip yükseliyor. Özellikle Unity'nin lisans krizinden sonra millet buraya aktı. Tamamen ücretsiz ve açık kaynak. Lisans ücreti yok, royalty yok, hiçbir şey yok. İstersen motorun kodunu açıp değiştirebilirsin.GDScript - Python'un Kardeşi
Godot, GDScript adında kendi dilini kullanıyor. Python'a çok benziyor, syntax neredeyse aynı. Python biliyorsan GDScript'i 1 günde, bilmiyorsan da çok kısa sürede sökersin. Girintiler (indentation) önemli, yazımı basit.
Kod:
extends Node2D
var speed = 200
func _ready():
print("Oyun başladı usta!")
func _process(delta):
position.x += speed * delta
Godot C# da destekliyor aslında ama topluluk genelde GDScript kullanıyor.
2D İçin Mükemmel
Godot'nun 2D motoru "native 2D". Yani Unity'deki gibi 3D dünyada 2D taklidi yapmıyor, harbi 2D. Bu da performans avantajı sağlıyor ve çalışması daha kolay. Pixel art oyunlar, platform oyunları için birebir.Hafiflik
Godot'nun kurulum dosyası ne kadar biliyor musunuz? 40-50 MB falan. Şaka yapmıyorum. Unity 2-3 GB, Unreal 30 GB indiriyor. Godot 50 MBGereksiz hiçbir şey yok içinde. Eski bi laptopla bile oyun geliştirebilirsin bunda. Unreal'in açılmadığı bilgisayarda Godot yağ gibi akar.
Node Sistemi
Godot'nun yapısı node (düğüm) sistemi üzerine kurulu. Her şey bir node. Karakter node, kamera node, ışık node... Bunları birleştirip sahne yapıyorsun. Mantığı çok modüler ve anlaşılır.Topluluk
Topluluğu çok yardımsever ama kaynak sayısı Unity/Unreal kadar devasa değil henüz. İngilizce şart, Türkçe kaynak az.3D Desteği (Gelişiyor)
3D tarafı Unity/Unreal kadar güçlü değildi ama Godot 4 ile baya toparladılar. Vulkan desteği falan geldi. Orta seviye 3D oyunlar yapılır ama AAA beklemeyin şimdilik.Kime Öneririm?
Yeni başlayanlara (en kolayı bu), 2D yapacaklara, bilgisayarı kötü olanlara, açık kaynak sevenlere.Motor Seçimi: Karar Senin
Hangisini seçecen? Şöyle özetleyim:- Unity: Genel öğrenmek, iş bulmak, mobil oyun yapmak, geniş topluluk istiyorsan.
- Unreal: Grafik benim her şeyim diyorsan, AAA hedefliyorsan.
- Godot: 2D yapıcam, hafif olsun, özgür olsun diyorsan.
"Hangi Dili Öğrenmeliyim?" Sorusu Yanlıştır
Bakın burası çok önemki: Dili motora göre seçiyorsun, motoru dile göre değil.Forumda sürekli görüyorum: "Oyun için C++ mı Python mu?" Yanlış soru abicim. Doğru soru: "Hangi motoru kullanıcam?"
Unity kullanacaksan -> C# öğreneceksin.
Unreal kullanacaksan -> C++ öğreneceksin (veya Blueprint).
Godot kullanacaksan -> GDScript öğreneceksin.
"Önce C++ öğreneyim, sonra Unreal'e geçerim" dersen yol çok uzar. Motoru seç, onun dilini öğren. Motoru öğrenirken dili de öğreniyorsun zaten.
Peki Motor Değiştirirsem?
Diyelim Unity öğrendin, 2 yıl sonra Unreal'e geçtin. Dil değişiyor (C# -> C++) ama mantık aynı kalıyor:OOP (Nesne Yönelimli Programlama), Fizik, Collision (Çarpışma), Döngüler... Hepsi aynı.
Unity'de transform.position dersin, Unreal'de GetActorLocation() dersin. Aynı işi yapar. O yüzden ilk seçime çok takılma, birinde iyi olursan diğerini öğrenmek çocuk oyuncağı.
Dil Öğrenme Sırası
Hiç kodlama bilmiyorsan:- Temel Kavramlar: Değişkenler, döngüler, if-else, fonksiyonlar... Bunlar her dilde aynı. Python ile öğrenebilirsin, basittir.
- OOP (Nesne Yönelimli Programlama): Class, object, inheritance... Oyun geliştirmede her şey OOP üzerine kurulu.
- Motor: Artık motor tutorial'larına başla. Zaten yaparken dili pekiştirirsin."Dili tamamen söküp öyle motora geçeyim" deme, paralel götür. Yoksa sıkılırsın.
Olmazsa Olmaz Temel Bilgiler
"Matematiksiz oyun yapılır mı?" sorusunun cevabı: Yapılır ama yarım yamalak olur. Üniversite matı lazım değil ama şunları bilmen şart:Vektör Matematiği - Oyunun Dili
Oyun geliştirmede her şey vektör. Pozisyon, hız, yön... 2D'de Vector2 (x,y), 3D'de Vector3 (x,y,z).
Vektör toplama: İki vektörü toplayıp yeni konum bulursun.
position += velocity * Time.deltaTime; (Bu satır karakteri yürütür işte)
Distance (Mesafe): İki nokta arası mesafe. Düşman sana yakın mı?
float distance = Vector3.Distance(player.position, enemy.position);
Bunların formülünü ezberleme, motorun içinde hazır fonksiyon var zaten. Mantığını bil yeter. Khan Academy'den "Linear Algebra"ya bi göz atın derim.
Trigonometri - Açı ve Dönüşler
Sin, Cos, Tan... Özellikle karakterin fareye bakması için falan lazım.Atan2 fonksiyonu çok kullanılır açı bulmak için. Dairesel hareket yapacaksan Sin/Cos şart. Yine formül ezberleme, ne işe yaradığını bil yeter.
Fizik - Gerçekçilik İçin
Hız, ivme, kuvvet... Newton abimizin yasaları.Oyunda zıplama yapacaksan yerçekimi lazım.
Collision (Çarpışma): Fizik motorunun en önemli olayı. İki obje çarpışınca ne olacak? OnCollisionEnter gibi eventlerle yönetiyorsun.
Rigidbody vs Kinematic farkını iyi öğrenin. Rigidbody fiziğe tabidir, düşer şaşar. Kinematic senin kontrolündedir.
Asset Kullanımı vs Kendi Varlıklarını Yapmak
İşte burası zurnanın zırt dediği yer. Çoğu yeni arkadaşın hatası: "Her şeyi ben yapıcam" sendromu.Bak kardeşim, sen game developer olacaksın, 3D artist değil (en azından şimdilik). İlk 5-10 projende kesinlikle hazır assetler kullan.
Unity Asset Store: "Free" filtresini seç, indir kullan.
Kenney Assets: Bu adam bi harika dostum. Her şey bedava, çok kaliteli.
Mixamo: Adobe'nin sitesi. Karakter ve animasyon dolu, bedava.
OpenGameArt: Topluluk malı, tepe tepe kullan.
"Ama ben özgün oyun yapıcam" deme şimdi. İlk projelerini zaten kimse oynamayacak, kendimizi kandırmayalım. Onlar öğrenme projesi. Mekanik öğren, kod öğren. Grafik en son iş.
Blender - 3D Modelleme
İlla ben kendi modelimi yapıcam diyorsan Blender öğren. Bedava ve profesyonel. Ama şunu bil: Blender öğrenmek de en az oyun motoru öğrenmek kadar zaman alır. Modellemesi var, kaplaması var, riglemesi var...Önerim: İlk 3 oyununu bitir, sonra Blender'a başla. İkisini aynı anda öğrenmeye çalışırsan beyin yanar, ikisinde de yarım kalırsın.
Ses Tasarımı
Ses oyunun yarısıdır dedik. Sessiz oyun oynanmaz. İlk projelerde bedava kütüphaneleri kullan:Freesound.org (efektler), YouTube Audio Library (müzikler).
Kendi sesini yapmak istersen Audacity (ses düzenleme) ve BFXR (8-bit ses yapma) işini görür.
Git ve Version Control
Bunu kesin öğrenin. Bak kesin diyorum. Yoksa çok başınızı duvarlara vurursunuz.Git nedir? Kodunun her halini kaydeden sistem. Hata mı yaptın? Geri dön. Dosyan mı bozuldu? Geri getir.
GitHub kullan. Projeni oraya at. Hem yedeğin olur (Google Drive ile yedekleme olmaz, Git başkadır), hem de portfolyon olur. İş başvurularında GitHub profiline bakarlar.
YouTube'a "Git ve GitHub kullanımı" yaz, 30 dakikada öğrenirsin.
Yol Haritası (Adım Adım)
Evet geldik en önemli kısma. Herkes direkt "Open World RPG yapıcam" diye atlıyor. Sonra 3 ay uğraşıp bırakıyor. Neden? Çünkü plan yok, hedef çok büyük.Oyun geliştirme maraton koşusu gibidir, 100 metre deparı değil. Sırayla gideceksin.
Aşama 0: Hazırlık ve Araçlar (1 Hafta)
Motoru indir kur. Yanına bi de kod yazmak için IDE kur (Visual Studio veya VS Code).Motorun kendi basit tutorial'larını yap. Arayüzü öğren. Hangi tuş nerede, sahneye küp nasıl koyulur falan... Bunu atlama.
Aşama 1: Pong veya Flappy Bird Klonu (1-2 Hafta)
İlk oyunun Pong veya Flappy Bird olmalı. Gülme, ciddiyim.Neden? Çünkü mekanik çok basit ama oyun döngüsü tam. Giriş var, oyun var, skor var, oyun bitti ekranı var.
Burada input almayı (tuşa basınca karakter gitsin), çarpışmayı (top değdi mi?), skoru ve sahne yönetimini öğreniyorsun.
YouTube'da "Unity Pong Tutorial" yaz, izleyerek yap. Ama kopyala-yapıştır yapma, mantığını anla.
Önemli: Grafikler çöp olsun, ses olmasın önemli değil. OYUNU BİTİR. Yarım bırakma.
Aşama 2: 2D Platform Oyunu (2-4 Hafta)
Pong bitti mi? Helal. Şimdi Mario tarzı bi şeye geçelim.Zıpla, koş, düşmanı ez, altın topla.
Burada öğreneceklerin: Karakter kontrolü (zıplama hissi önemli), animasyon sistemi (koşma, zıplama animasyonları), kamera takibi, basit düşman yapay zekası (sağa sola gitsin), level tasarımı (tilemap kullanımı).
Brackeys veya Code Monkey kanallarına bak, harika serileri var.
Bu projeyi en fazla 1 ayda bitir. Daha uzuyorsa çok özellik ekliyorsun demektir, yapma. Sade olsun, bitmiş olsun.
Aşama 3: Basit 3D Oyun - Endless Runner (2-3 Hafta)
2D tamam, şimdi 3D'ye geçiş. Ama hemen açık dünya değil. Subway Surfers veya Temple Run tarzı, sonsuza koşan bi oyun.Neden? Çünkü tek yöne gidiyor, kontrolü kolay.
Burada 3D koordinat sistemini (Vector3), 3D fiziği, prosedürel yol üretimini (yolun sürekli önüne eklenmesi) öğrenirsin.
Aşama 4: Küçük Ama Komple Oyun (1-2 Ay)
Artık temel mekanikleri biliyorsun. Kendi fikrini yapmaya hazırsın. Ama yine KÜÇÜK düşün.Kötü fikirler: MMORPG, GTA klonu, Battle Royale.
İyi fikirler: Tower Defense, basit bulmaca oyunu, kuş bakışı shooter.
Bunu yap ve Itch.io'ya yükle. İnsanlar oynasın, yorum yapsın. İlk gerçek oyunun bu senin. CV'ne yazarsın "yayınlanmış oyunum var" diye.
Aşama 5: Game Jam'lere Katıl
Game Jam nedir? Belirli sürede (48 saat, 1 hafta vs.) oyun yapma etkinliği.Ludum Dare var, Global Game Jam var. Katıl bunlara.
Sana hız kazandırır. 48 saatte oyun bitirmek zorundasın, o yüzden gereksiz detaylarla uğraşamazsın. Önceliklendirmeyi öğrenirsin.
Ayrıca çevre yaparsın, milletle tanışırsın.
Aşama 6: Orta Seviye Proje (3-6 Ay)
Artık piştin. Biraz daha büyük bi şeye girebilirsin. Hollow Knight gibi ama daha küçüğü. Stardew Valley gibi ama çok daha basiti.Bunu Steam'e koymayı deneyebilirsin (100 dolar giriş ücreti var). Belki harçlığını çıkarır. Amaç zengin olmak değil, süreci öğrenmek.
Son kelam
Motivasyon ve Gerçekçi Beklentiler
Buraya kadar okuduysan ciddisin demektir. Ama sana toz pembe tablo çizmeyeyim. Oyun geliştirmek zordur. Çok zordur.İlk Oyunun Berbat Olacak
Kabullen bunu. İlk oyunun b0k gibi olacak. Kodun makarna (spaghetti) gibi olacak, grafikler uyumsuz olacak. Normal bu. Picasso'nun ilk resmi de şaheser değildi. Yap, bitir, geç. Mükemmeliyetçi olma.Para Kazanmak Zor
"Oyun yapıp zengin olurum" hayaliyle girdiysen geçmiş olsun. İndie oyun pazarı çok kalabalık. Steam'e günde 40 oyun çıkıyor. Çoğu satmıyor bile.Başarılı olanlar (Stardew Valley, Undertale falan) istisna, kural değil. Sen hobi olarak başla, tutkuyla yap. Para gelirse ne ala.
Tükenmişlik (Burnout)
Günde 15 saat çalışırsan 2 haftada yanarsın. Günde 2-3 saat çalış, düzenli çalış. Sosyal hayatını bitirme. Spor yap, dışarı çık.Sosyal Hayat ve İş Dengesi
Full-time indie dev olmak lüks bir şey. Önce bir iş bul (yazılım, web vs.), maaşını al, akşamları oyun yap. İlk oyunun tutarsa o zaman işi bırakırsın. Yoksa aç kalırsın maazallah.Tavsiyeler
Tutorial Hell denen illete düşmeyin. Yani sürekli video izleyip hiçbişi yapmamak... Bir video izle, kapat, kendin yapmaya çalış. Hata yap, boz, düzelt. Öğrenme böyle olur.Küçük başla, büyük düşün. Her gün az da olsa kod yaz. 30 dakika bile olsa yaz.
Vazgeçme.
En önemlisi bu. Zorlanacaksın, bazen günlerce bir hatayı (bug) çözemeyeceksin, bilgisayarı kırmak isteyeceksin.Buraya kadar sabırla okuduğunuz için teşekkürler. Umarım bu rehber kafanızdaki sis bulutunu biraz dağıtmıştır. Herkese iyi sosyaller!
Son not: İlk oyununuzu bitirince paylaşın, hep beraber oynayalım, yorumlayalım.
KAYNAK LİSTESİ (ÖNEMLİ)
Türkçe Kaynaklar
Oyun Geliştirmeye Nereden Başlamalı? – Bilal Emre Gürkan
Can Durmuş (Unity Tutorialları)
Sadece Kod (C# Temelleri)
Oyun ve Uygulama Akademisi (Unity Kursları)
Git 101 (Versiyon Kontrolü)
Git Basit Rehberi
İngilizce Video Kaynakları (YouTube)
Sebastian Lague – Introduction to Game Development
Extra Credits – Making Your First Game
Riot Games – So You Wanna Make Games
Freya Holmer – Math for Game Devs
Web Siteleri ve Rehberler
GameDevBeginner (Pratik Unity Rehberleri)
Game Developer Roadmap
Gamedeveloper.com (Makaleler)
Refactoring Guru (Design Patterns)
The Book of Shaders
Easings.net (Animasyon Eğrileri)
Akademik Makaleler (Alıntı İçin)
A Survey of Game Engines (2018)
Game Development Roadmaps (2020, GDC)
Indie başarı faktörleri üzerine sunum.
Vector Mathematics for Game Programmers (2001)
Vektör matematiği üzerine klasik çalışma.
Interdisciplinary Nature of Game Development (2021)
Oyun geliştirme ekip yapıları ve disiplin dağılımı verileri.
Ücretsiz Asset ve Araç Siteleri
Kenney Assets (2D/3D/UI/Ses – CC0)
https://kenney.nl�
Mixamo (Animasyonlu Karakterler)
https://mixamo.com�
OpenGameArt (Ücretsiz Assetler)
https://opengameart.org�
Freesound.org (Ses Efektleri)
https://freesound.org�
Kitap Önerileri
The Art of Game Design – Jesse Schell
C# Player's Guide – RB Whitaker
Game Programming Patterns – Robert Nystrom
(Ücretsiz online sürüm mevcut
Oyun Geliştirmeye Nereden Başlamalı? – Bilal Emre Gürkan
Can Durmuş (Unity Tutorialları)
Sadece Kod (C# Temelleri)
Oyun ve Uygulama Akademisi (Unity Kursları)
Git 101 (Versiyon Kontrolü)
Git Basit Rehberi
Sebastian Lague – Introduction to Game Development
Extra Credits – Making Your First Game
Riot Games – So You Wanna Make Games
Freya Holmer – Math for Game Devs
GameDevBeginner (Pratik Unity Rehberleri)
Game Developer Roadmap
Gamedeveloper.com (Makaleler)
Refactoring Guru (Design Patterns)
The Book of Shaders
Easings.net (Animasyon Eğrileri)
A Survey of Game Engines (2018)
Game Development Roadmaps (2020, GDC)
Indie başarı faktörleri üzerine sunum.
Vector Mathematics for Game Programmers (2001)
Vektör matematiği üzerine klasik çalışma.
Interdisciplinary Nature of Game Development (2021)
Oyun geliştirme ekip yapıları ve disiplin dağılımı verileri.
Kenney Assets (2D/3D/UI/Ses – CC0)
https://kenney.nl�
Mixamo (Animasyonlu Karakterler)
https://mixamo.com�
OpenGameArt (Ücretsiz Assetler)
https://opengameart.org�
Freesound.org (Ses Efektleri)
https://freesound.org�
The Art of Game Design – Jesse Schell
C# Player's Guide – RB Whitaker
Game Programming Patterns – Robert Nystrom
(Ücretsiz online sürüm mevcut
Son düzenleyen: Moderatör: