NorkQ

Yeni üye
28 Ocak 2019
3
0
0
(34) İstanbul Avrupa
Selamlar, 4 yıldır Unity ve C# ile geliştirme yapıyorum. 4-5 yıl civarı da python ile oyun harici geliştirme yaptım. Birtakım sebeplerden dolayı UE 4'e geçmeye karar verdim. Yeni başlayanlar için çoğunlukla blueprint önerilmiş fakat basit adada hayatta kalma oyunu mekaniklerinden ileri gidemeyeceksem blueprint ile vakit kaybetmek istemiyorum açıkçası. C++ kadar güçlü olmayacağının da farkındayım tabi. C++ ile kendi node'larımızı yazabiliyor muyuz ? Önemli nokta bu benim için. Tabi bu ne kadar mantıklı bir çözüm olur bu konuda yorumlarınızı da almak isterim.
 
Merhabalar.
 Öncelikle kısa soruna cevap vereyim. C++ ile node her çeşit node yapabiliyoruz. Yani cevap evet.
 Uzun mevzuya gelirsek: Bu soruya değişik kişiler için değişik cevaplar verilmesi gerektiğini düşünüyorum. Çünkü elde edilmek istenen sonuca göre bir cevabı olduğunu düşünüyorum. Bu işle ilgilenebilecek belki 10 çeşit insan ve bu 10 çeşit insanın 100 çeşit maksadı olabilir. Ama ben genelleme yaparak bir kaç genel grup için şöyle cevaplayabilirim:
  1: "Biraz oyun geliştirmeye bakınmak istiyorum. Sadece meraklıyım. Bir bakıp çıkabilirim.": Blueprint öğrenmeli C++ öğrenmemeli.
  2: "Oyun programlama dan ileride para kazanmak amacındayım. Oyun programcısı olarak sektörde çalışmak istiyorum" : C++ öğrenilmeli Blueprint yolda yavaş yavaş gelecek ve kendiliğinden öğrenilmiş olacaktır.
  3: "Sadece eğlenmek için Hyper Casual oyunlar ya da küçük cep oyunları geliştirmek istiyorum. Bu sırada para da kazanabilirim.": Sadece Blueprint ile kurtarılabilir. C++ çoğu durumda gerek yok.
  4: "Ciddi ciddi oyun geliştirmeyi öğreneceğim. Uzun vadeli ve kesin karar aldım. Hem de iyi öğrenmek istiyorum." : C++ öğrenmeli Blueprint yolda yavaş yavaş gelecek ve kendiliğinden öğrenilmiş olacaktır.


  Bir kere blueprint nedir onu anlamak lazım. BP node ları altta yatan C++ metotlarının node şeklinde yayınlanmış hali. Sizde istediğiniz kadar yeni node yapabilir hatta biraz ileri serviye de varolun nodeları bile modifiye edebilirsiniz. Dolayısı ile C++ öğrenen birisi için ayrıca BP öğrenmek diye bir şey söz konusu değil. Sadece arayüze alışmak ekstra olabilir oda C++ öğreneceğiniz aylar içerisinde sadece 1 haftadan fazla zaman almayacaktır. Bu arada bütün node lar aslında altta bir C++ fonksiyonudur ama tüm C++ fonksiyonlar BP ye (expose) yayınlanmış değildir. Yani C++ bilen birisi zaten BP biliyordur derim, ancak BP bilen birisi C++ öğrenmek için uzun ekstra bir çaba sarf etmesi gerekmektedir. Ayrıca bazı durumlarda "Bunu sadece C++ ile yapabilirsin" durumları vardır. Bu durumlar öyle çok fazla falan değildir ve Bp de bir dolambaçlı yolla da (bazı durumlarda) aşılabilir.

  Epic oyunlarda C++ ve BP nin bir arada kullanılmasını ve böylece ikisinin kuvvetli taraflarını birleştirmeyi önermektedir. Kuvvetli zayıf taraflarına burada girmeyeceğim. Uzun konu.

  Türkiyeyi bilmiyorum ama yurt dışında programcı olarak eğer sadece BP biliyorum dersen iş bulma ihtimalin sıfır. Yani sonuç olarak amaç hedef eldeki zaman vb. değişkenlere göre yukarıda ki gibi farklı cevaplar verilebilir.
 Saygılar.
 
C++ Avantajları:
Runtime performansı daha hızlı
Veri kontrolünde daha iyi
Network, multiplayer kısım için çok daha kullanışlı, BP'de network biraz daha küçük oyunlar için tasarlanmış
Matematik için C++ daha kolay ve daha anlaşılabilir (göreceli)
C++ kodu text formatında olduğu için Github gibi ortamlarda branch ile çalışması daha kolay

Blueprint Avantajları:
Daha hızlı prototip üretilebiliyor
C++ da kodu yazıp derleyince compile uzun sürebiliyor(ufak bir değişiklik olsa bile), BP'de ise çok daha çabuk compile ediliyor. Bu da daha fazla şeyler denemek için zaman kazandırabiliyor
Oyun akışı bir nevi görselleştiği için akış daha kolay takip edilebiliyor(göreceli), buna BP'deki Delay nodu büyük bir katkı sağlıyor
 
Eğer çok fazla tick kullanan actorler, for-loop döngüleri yani kısaca oyunun tek frame de hesaplamaya çalıştığı çok fazla işlemin varsa C++ kullanmalısın.

Onun haricinde Blueprint için C++ kodlarını sırasıyla çalıştıran bir görsel kodlama sistemi denebilir. Doğru algoritmalar ile kullanıldığında hiçbir sorun yaşamazsın.
 
Unrealde BP çok önemlidir.Eğer sen arayüzlerden hoşlanıyorsan bir şeyleri yaparken karmaşa istemiyorsan BP lazım. Mesela animasyon nodeleri vs bir sürü şey var bunları C++ ile yapmaya çalışırsan kriz geçirirsin.Kodları yazılardan ibaret olduğu için gözlerini sürekli olarak yorar, ayrıca tak çıkar işlemlerini bolca yapman lazım bunun için sürekli yazı yazmak zorunda olmakta insanı yoruyor.Şahsen ben C++ bilseydim de C++ olarak yazmazdım heralde.Sürekli visual studio açık olacak ordan oraya gireceksin çıkacaksın yazı yazacaksın scroll ile kaydırıp fonksiyonların metotların bilmem neyin yerini bulup /* şunlardan koyup açıklama satırı atacaksın vs vs baya sıkıcı bir şey.

Ben programlama dilleri ile uygulamalar yazmayı seviyorum ama oyun yaparken onlarla uğraşmak berbattır bence.Bir insan yaptığı şeyi gözüyle görebilmeli diye düşünüyorum. Bence ileriki nesillerde çoğu şey görsel ve şematik programlama şeklinde olacak.Konfor açısından bu çoğu şey için mümkün olacak diye düşünüyorum. İnsanların bazılarının BP kullanmak istememe nedeni performanstan kaynaklanıyor. Ama donanımlar gittikçe güçleniyor yakın bir gelecekte bunların performans sorunu çıkaracağını sanmıyorum.Şuan bile ahım şahım performans kayıpları olmaz bence. Performans kayıpları BP den dolayı olmuyor , genelde level tasarımlarından dolayı ortaya çıkıyor. Objelerin cartı curtu ışıklandırma foliage falan.
 
Merhabalar. AnimBP hiç bir zaman C++ ile yapılamaz. Animasyon node ları normal BP nodeları da değildir zaten. Onlar 3 ncü bir sınıfa giriyorlar sayılır. 
Aşağıda çalıştığım şirketten atılan diğer programcının BP kodu. Örnek olarak koydum ( Biliyorum biraz uç bir örnek ama gerçek durum bu):



BP kodu da derleme ister. Sadece çok daha hızlı derlenir. Bp kodunda da çalıştırmadan ne yaptığınızı göremezsiniz. C++ ta da çalıştırmadan ne yaptığınızı göremessiniz. İkisinde de derlemeden ne yaptığınızı göremessiniz. Tek fark neye baktığınız ve bunların hızı. BP de ilerlemek çok daha hızlı. Ama temel programlama tekniklerini bilmiyorsanız yukarıda ki gibi bir koda sahip olup uzun vadede duvara toslamanız çok olası. Özellikle de proje küçük değilse.

Bu da aynı şirkette benim yazdığım kod:


C++ kodunu okuyan biraz ingilizce bilen herhangi birisi, hiç C++ bilmese de kabaca neler döndüğünü anlayabilir.
Sonuç olarak söylemek istediğim C++ çok daha anlaşılır ve düzenlidir.
Bana göre ondan da önce BP nin en büyük dezavantajı paylaşılamamasıdır. Yani aynı kod üzerinde aynı anda iki kişi çalışamaz. Git te Perforce ta herzaman sıkıntıdır. Çünkü text değil binary dosyadır ve bunları merge etmenin (kod birleştirmenin) direk bir yolu yoktur. Yani bana sorarsanız en büyük dezavantaj hız demezdim. Paylaşım derdim. Tabii bazı şeyler göreceli de olabilir katılıyorum.
Kolay gelsin.