Rehber Türkiye'de oyun geliştiricisi olmak


Hocam kisaca kendimden bahsedeyim AÖL okuyorum seneye mezunum 17 yaşındayım. Game dev olmak istiyorum ama açıkta bölümü yok web(2), bilgisayar prog(4?) ya da YBS (4) okusam yine de işe alımlarda alaylıdan farkım olur mu biraz.

Muhtemelen açık okuma diyeceksin fakat mecburum ve zaten elimde iyi kötü bir zanaatım var. Yazılım benim için zorunluluk değil ama olsa harika olur. Yaptığım doğru mudur ne önerirsiniz acaba.
 
Hayır tabi ki yanlış değildir. Hazır kodlar birçok tecrübenin sonucu ortaya çıkmış kodlar genelde. O alanda en iyisini (best practice diye geçer ingilizcede) uygulamak tabi ki en güzeli olur. En optimali nasıl diye bakmak tabi ki gerekir oyununuzun türüne göre. Bu alanda kendiniz de bir şeyler üretebilirsiniz. Gelin size bir örnek vereyim. Benim yaptığım oyunda sahnede dinamik olarak hareket eden tüm engelleri server oluşturuyor ve tüm client'lara oluşturduğunda siz de oluşturun diye emir veriyor (RPC - Remote Procedure Call). Ama tabi ki online oyunların en büyük belası olan gecikme var. Ve bu gecikme değerleri yüksek olduğunda haritalar senkronize olmuyor. Ben de bunu çözmek için zaman tabanlı bir yaklaşım kullandım. Her bir oyuncu server ile arasındaki ortalama zaman farkını biliyor. Ve her bir engelin birim zamanda kat ettiği belli bir mesafe var. O yüzden ben de çeşitli senkronizasyon metotları deneyip istediğim şeyi alamayınca kendi zaman bazlı yaklaşımımı oluşturdum. İnternette server ile arandaki zaman farkı nasıl hesaplanır diye çeşitli metotları araştırdım ve en iyisinin servera düzenli olarak mesaj gönderip alma ile aradaki farkı ölçme olduğunu gördüm.
Ardından her bir objenin birim zamanda aldığı yolu server ile aramdaki zaman farkı ile çarpıp mevcut pozisyona ekledim.
Örneğin server bana 10. saniyede bir objeyi 0,0,0 pozisyonunda oluştur diye emir verdi. Kendisi 10. saniyede bu objeyi oluşturdu ve bu obje saniyede 1 birim sola doğru gidiyor. Bu komut bana 11. saniyede geldi diyelim. Ve ben gidip 0,0,0 pozisyonunda bu objeyi oluşturdum. Ama ne oldu, serverda 11. saniyede -1,0,0 pozisyonunda olan obje bende 0,0,0 pozisyonunda oldu ve senkronizasyon bozuldu. Bunun için aradaki zaman farkını hesapladım. Ve aradaki fark (1 saniye) x birim zamanda alacağım yolu ekledim. Bu sayede ping kaç olursa olsun (anlık devasa dalgalanmalar harici) çok stabil bir obje senkronizasyonum oldu. Örneğin

Sol üstteki 200 pingde, sağ üstteki 400 pingdeki oyuncu, en alttaki de 0 pingdeki server. Sarı olan objeler de benim engellerim.
Şimdi burda server ile aramdaki zaman farkı en iyi nasıl alınır diye kendim sıfırdan bir metot ile uğraşsam hem zaman kaybı hem de doğru olmama ihtimali vardı. Onun yerine halihazırda bilinen doğru yaklaşımları alıp kendi problemime bir çözüm olarak ekledim. Bu şekilde varolan kodları kullanarak kendi oyununuza eklemeler de yapabilirsiniz.
Server için kurs örneği hangi network çözümünü kullanacağınıza göre değişir. Ben Unity'nin kendi frameworkü olan netcode kullandım ve onun için bir kurs aldım. Stabil ve öğrenmesi kolay öneririm. Ama photon, fishnet vs gibi bir sürü farklı çözüm de var. Tamamen tercih size ve yapacağınız oyun türüne kalmış (örneğin netcode aynı anda 10 kişiden daha fazla oyunlarda çok iyi çalışmıyor senkronizasyında zorlanıyor)

Olur yani olmaz diyemem neticede bu alanda bir eğitim sahibi olmak bir artıdır. Sizin için zorunluluk değilse kafanız da rahat olur bence kesinlikle denenebilir. Discorddan mesajınızı şimdi gördüm burdan cevaplamış olayım.
Bahsettiğiniz bölümlere gidince oyun geliştirmekten başka alanlara da yönelebilecek bir bilgi birikiminiz olur denemenize fırsat da verir yani. O yüzden bir zorunluluk değilse rahatça kendinizi geliştirmek için yapıp devam etmeye çalışacaksanız bence olabilir. Tabi sizin okuduğunuz zamana kadar işler ne halde olur kestirmek güç o yüzden %100 bi şey söyleyemiyorum.
 
Son düzenleme:

Hocam merhaba ben de bir şey soracağım, 20 yaşındayım ve 2 yıldır öyle ya da böyle oyun geliştiriyorum, geçen sene 3D Co-op bir korku oyunu geliştirdim ve kendime yeni PC ve ekipmanlar alacak kadar para kazandım, şu anda asimetrik bir korku oyunu geliştiriyorum Dead by Daylight tarzı, ya da SCP secret laboratory diyeyim. Ben bunları UE5 üzerinden yapıyorum ve motora oldukça hakimim, fakat bütün kodlamaları Blueprint sistemi üzerinden yapıyorum, C++ bilgim 0'a yakın. Bu halimle oyunum yüksek satış rakamlarına ulaşsa bile yine de kodlama eksikliğinden dolayı iş bulma şansım yok değil mi? Şu anlık bilgisayar mühendisliği bölümümde gitmediğim bir kaydım var fakat pek iyi bir üniversite değil sadece diploma için gitmiş olurum, ona gitmeli miyim sizce yoksa kendim yazılım öğrenip devam etmem aynı işi görür mü?
 
Nasıl para kazandın?
 
Öncelikle tebrik ederim. Bir oyun yapıp bunu satmak ve bundan para kazanmak gerçekten inanılmaz zor bir iş. İnsanların cebinden para almaya ikna edecek bir ürün ortaya koymanız şahane bir şey. İş bulma şansı yok demem yani sadece blueprint ile oyun geliştiren yerler de var. İş ilanlarında da blueprint developer vs olarak da geçiyor. Ancak %5 bile değildir bunlar. C++ öğrenmesi nispeten zor evet ama siz blueprintte yaptığınız şeyleri koda aktaracağınız için size o kadar da zor gelmeyecektir. Bilgisayar mühendisliği okunabilir diplomayı sadece iş imkanına katkı olarak görmeyin ama kendiniz de öğrenebilirsiniz. Maalesef unreal ve pc oyun piyasasına uzak olduğundan çok da bir bilgim yok yanlış yönlendirmek de istemem.
 
Link atar mısın hocam?

Hocam o oyun benim için kara leke ya hiç atmayayım buraya çok rezalet bir oyundu, sırf Co-op olması ve komik seviyede kötü olduğu için sattı diyebilirim, 2 ayda motoru öğrenirken yapılan oyundan da bu kadar oluyor zaten. Ama şunu belirteyim gelirin %70 civarı Çin ve Rusya'dan geliyor, ben oyuna Çince ve Rusça eklemiştim bu yüzden işe de yarıyor baya.
 
Hocam tekrardan merhaba meraktan C++ başlamıştım ve daha sonrasında UE'ya göz attım ve Unity'i bırakıp buna geçtim. UE'nim türkiye pazarındaki yeri nedir bir bilginiz var mı, ya da yurt dışında iş bulma imkanları.
 

Bu konuyu görüntüleyen kullanıcılar

Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…