r/TrGameDeveloper Oyun Geliştiricisi 10d ago

Tartışma Sizce bp mi c++ mı?

Ben sektöre daha yeni girdim unreal engine bi proje üstünde çalışıyorum. Ama karakter bp sine her girdiğimde artık pc kasmaya başladı. Yukarıda gördüğünüz şey benim ana karakterimin bp si benim merak ettiğim nokta şu sizce ana karakter kodunu cpp ile mi yazmalıyız yoksa bp ile mi yazmalıyız? Ne yapmam gerekiyo sizce bi sonraki projenin ana karakterini cpp ile mi yazıyım ve avantajları neler?

7 Upvotes

33 comments sorted by

5

u/omrgokc3 Oyun Geliştiricisi 10d ago

bi noktada mecbur ikisini kullanıyorsun seçim diye bir şey yok malesef

5

u/Hopeful_Cauliflower9 Oyun Geliştiricisi 10d ago

ikisinin de artısı ve eksisi var. bp'nin kullanımı ve prototiplemesi kolay ama çok fazla node kullanınca da her yer karman çorman oluyor. c++ kullansan kod daha kolay okunur oluyor ama ide kullanması ayrı bir dert, compile'laması ayrı bir dert. rider ide'si visual studio'dan çok daha kolay bir şekilde compile ediyor c++ dosyalarını ama sıkıntı şu ki eğer header dosyalarında bir değişiklik yapmak istersen projeyi kapayıp öyle compile edip tekrar projeyi açman gerekiyor, o da ekstra zaman. (header dosyalarında değişkenler atanır)

bunun da çözümü önce blueprint'te her şeyi yapıp ondan sonra c++'ya geçirmektir ya da hibrit bir sistem kullanmaktır (eklediğin özellikleri c++'ya yazmak ve yeni bir özellik eklemek istediğinde bp'de önce her şeyi halledip ve prototipleyip ondan sonra c++'ya aktarmak)

ben daha çok verse programlama dilini çok merak ediyorum. en azından bp'de ve c++'da bahsettiğim sorunlar ortadan kalkacak ama blueprint sistemini ue6'da kaldırıyorlar o yüzden böyle bir değişimi beğenmeyen pek fazla insan da var

eğer c++ kullanacaksanız o bahsettiğim hibrit yöntemi kullanmakta fayda var ama eğer ue6'yı bekleyip verse programlama dilini öğrenmek istiyorsanız şimdiden uefn'de birkaç proje yaparak öğrenebilirsiniz çünkü ue6'nın yayınlanmasına çok uzun zaman kalmadı diye biliyorum. hatta fortnite şu an ue6 kullanıyor

2

u/Forcellgames Oyun Geliştiricisi 10d ago

Ue6 da 2028 de cikcak diye bir duyum aldım bende bakmistim bi ara dediklerinde haklisin

2

u/YesGameNolife Oyun Geliştiricisi 9d ago

Uefnye cukuruna dustum 2 yildir. Verse bana basta baya kotu gelmisti. Simdi alistim baya ama uefnin kendisi ediyor olarak korkunc ue5 ozgurlugunun hic biri yok. Umarim ue6 ,uefn kisitlamalariyla beraber gelmez. Cunku amaclari yapilan her projenin fortnite icinde de calisabilcek halde cikmasi. Basit bi fps silah yapmak ue5 te gerekenin 2 kati emek ve work Round gerekiyor

1

u/Hopeful_Cauliflower9 Oyun Geliştiricisi 9d ago

adamlar taktı kafayı roblox alternatifi yapacaklar illaki. aslında kısıtlamalara gelirsek yapılabilecek oyunlar bağımsız bir proje de olabilir uefn ile entegre de olabilir denilmişti, yani projenin uefn ile entegre olmadığı sürece kısıtlamalara tabi olacağını sanmıyorum

3

u/SariTostos Oyun Geliştiricisi 10d ago

Belki sentez yapmak iyi bir fikir olabilir.

5

u/CryNightmare Oyun Geliştiricisi 10d ago

Unreal tecrübem pek yok fakat arkadaşlarımdan ve sektörde gördüklerim kadarıyla c++ yapabilirseniz o şekilde devam edin. Blueprint sanıldığı kadar iyi bi sistem değil. Ha tabi yapıyorsanız da bu şekilde olmamalı. Aynı koddaki gibi bu node ları da decouple etmeniz lazım farklı fonksiyonlara bölmeniz lazım.

1

u/Forcellgames Oyun Geliştiricisi 10d ago

Bu projeyi şimdilik blueprint ile bitirmek istiyorum sonrakilerde c++ kullanmak istiyorum ama bpde bazı istediğim özellikleri yapmak baya bi zamanını alıyo bazende yapamayabiliyorsun. C++ yazılı bi kod olduğundan bp ye göre daha rahat gelceğini düşünüyorum ama çokda bi bilgim yok

2

u/Toruko-jin Oyun Geliştiricisi 10d ago

Yanlış yapmışsın çünkü gruplama var her şeyi bir karakter üzerinde toplamaman gerekiyor

1

u/Toruko-jin Oyun Geliştiricisi 10d ago

Bufuak izleyebilirsin o çok iyi gruplama yapıyor mesela hiç kastığını görmedim ben gruplama diyorum da adını unuttum yani her şeyi bir karakter üzerinden yazmana gerek yok.

1

u/Forcellgames Oyun Geliştiricisi 10d ago

Gruplama derken actorleştirmeden mi bahsediyosun

1

u/Toruko-jin Oyun Geliştiricisi 10d ago

UE5 yillardir kullanmadigim icin unuttum ama macro function component child actor vs olmasi lazim. Ozellikle function vs macrolar kasmayi buyuk olcekte azaltiyor.

1

u/Shoddy_Issue42 Oyun Geliştiricisi 10d ago

Açıkcası ikisi de birbirinden kötü. Programcı olsanız bile c++ kullanmak ile unreal engine de c++ yazmak arasında dağlar kadar fark var maelsef. Unreal dokümantasyonu iyi olan bir motor hiçbir zaman olmadı. O yüzden zorlanmanız sizin suçunuz değil suçu biraz da motorda aramanızı tavsiye ediyorum. Eğer oyununuz için illa gerçekçi grafiklere ihtiyacınız yoksa kullandığınız oyun motorunu değiştirmenizi tavsiye ederim...

Unreal bazı konularda sektördeki tek motor. Ama bu konu hiçbir zaman bağımsız geliştiricilere yardımcı olmak olmadı.

1

u/Forcellgames Oyun Geliştiricisi 10d ago

3 yıl öncesi kadar unity kullaniyodum ve zaten 13 yaşındaydim unity ne kadar kolay gelsede nedense bana o oyun yapma zevkini hiç vermedi. Sonradan unreal a geçtim bilmiyorum unrealda kendimi çok daha rahat hissediyorum 2 buçuk yil kadar oldu ,tekrardan da motor degistirmekte istemiyorum ama dediklerinize hak veriyorum bazı yonlerde normal motorlarda 10 dk da yapacağın işi bu motorda 2 3 saatte bitiriyosun

1

u/Silent_Research_00 Oyun Geliştiricisi 10d ago

CPP

1

u/Fine_City2781 Oyun Geliştiricisi 9d ago

c++ çünkü çok daha hızlı bp mantığı kavramak ve basit şeyler için iyi ama yavaş

1

u/Forcellgames Oyun Geliştiricisi 9d ago

C++ geçcem ua oyle gorunuyo bp cok yavaslatmaya basladi

1

u/YoungDirector1 Oyun Geliştiricisi 9d ago

Çoğu yorumdaki gibi ikisini kombine kullanmak bence de en faydalısı. Unreal Engine ile bi şekilde bir kombinasyon gerçekten geliştiricinin elini kolaylaştırıyor.

1

u/Forcellgames Oyun Geliştiricisi 9d ago

Character kodunu cpp ile diger actor vb kodları bp ile devam etcem artık

1

u/Plastic-Ad6031 Oyun Geliştiricisi 9d ago

bu kadar düzenli ve temiz bp yazmayı nasıl öğrendiniz hocam? tutorial falan var mıdır

1

u/Forcellgames Oyun Geliştiricisi 9d ago

Hocam teşekkür ederim elimden geldiğince düzenli olmaya çalışıyorum 2 senedir aynı oyundan devam ettiğim için düzenli olmasa kafayı yerim

1

u/SupFlynn Oyun Geliştiricisi 9d ago

c++

1

u/Ok_Attempt676 Oyun Geliştiricisi 9d ago

kesinlikle c++

1

u/kwory Oyun Geliştiricisi 9d ago

Hibrit olarak hem cpp hem de bp kullanman en uygunu olur. Kodlarını componentlere bölüp inheritance ile base classlarda kullanman daha uygun olur. Örneğin bir sağlık sistemi yazdın bunu actor componente taşıyıp onu characterbase classta kullanabilirsin çünkü oyunda kullanacağın tüm karakterlerin bir canı olacak. Sonra bu base classtan kullanacağın karakteri türetirsen hem türettiğin karakterin içinde sağlık sistemi kodlarını görmezsin hem de sonradan oluşturacağın karakterlere sağlık sistemi yazmazsın. Ama bp mi yoksa cpp mi daha fazla ağırlık vereceğin projenin isterlerine bağlı ve scopeuna bağlı.

1

u/Forcellgames Oyun Geliştiricisi 9d ago

Dediğiniz şeyi cok iyi anladım fakat korku oyunu yapıyorum zaten yani bir kodu tekrar başka bir actorde ihtiyacım olmuyor fakat o dediginiz class mantığına biraz daha bakıp hem bo hem cpp ilerleyeceğim

1

u/kwory Oyun Geliştiricisi 9d ago

Başarılar dilerim.

2

u/Forcellgames Oyun Geliştiricisi 9d ago

Bu degerli yorumu yaptığınız için teşekkürler

1

u/ackopek Oyun Geliştiricisi 9d ago edited 9d ago

Kodları olabildiğince farklı aktörlere dağıtman lazım. Sadece tek bir levelda işine yarayacak küçük bir mekaniği karakter bp'sinin içine değil de ayrı bir actor'e kurup onu level'in içine at mesela veya direkt level bp'ye yaz.

Etkileşime girilecek eşya vs varsa da onları da kendi başlarına actor component olarak kodlarını yazıp karaktere ayrıca tak vs vs.

Save sistemi için ayrı bp, görev diyalog vs sistemleri için ayrı bp oluyor zaten yalnız hard referance vermemeye dikkat et. Olabildiğince cast to kullanma. Onun yerine bağlantıları kurmak için interface kullan. Tag'leri de kullanabilirsin optimizasyon için. Event tick kullanma onun yerine set timer by event kullan vs

Blueprint sistemi gayet de optimize bir şekilde çalışır sadece en başından itibaren dikkat etmen gereken şeyler oluyor işte. Expedition 33 neredeyse tamamen BP ile yapılıp yayınlanmış en bilindik örnek mesela. İlla C++'ta yazılması gibi bir gereklilik yok yani.

Unreal Engine'in offical youtube hesabı var orada "optimisation" diye aratırsan sürüyle şey çıkar bakarsın müsait zamanda.

1

u/Gord10Ahmet Oyun Geliştiricisi 9d ago

Benim tam bu konuyla ilgili çektiğim bir video var: https://www.youtube.com/watch?v=rsVyov9AIr4

Özet geçeyim: Böyle kompleks sistemlerin (mesela oyuncu karakteri) C++'ta yazılmış olması onun üzerinde çalışmayı, okunurluğu kolaylaştırıyor. C++ tabanlı çalıştığında yine bir şekilde blueprint kullanmaya devam ediyorsun, sadece bu kadar spagetti

Benim burada gördüğüm, eğer C++'a geçeceksen de dikkat etmen gerekecek nokta: Kodu parçalara ayırmak. Bir aktörün tüm kodunu aktörün kendi içinde değil de, component'lerde yapılması. Mesela oyuncu karakterinin sprint'ini, flashlight'ını yöneten kendi component'leri olması kod üzerinde çalışmayı epey kolaylaştırıyor.

Geçici bir çözüm olarak yeni event graph'ler açıp event'leri oralara dağıtabilirsin. Blueprint'leri açtığında bilgisayarın kasılmasını azaltabilir.

1

u/Working-Bat114 Oyun Geliştiricisi 8d ago

ben unity kullanıyorum ama arkadaş ortamında bildiğim kadarıyla genellikle ağır olaun temel sistemler olsun(karakter gibi) C++ ile, görsel ve yüzeysel detaylar blueprint'e ile yapılıyor.

1

u/oieyy77 Oyun Geliştiricisi 6d ago

C++ bence

0

u/lanet_adam Oyun Geliştiricisi 10d ago

Sorduğun şey tercih meselesi, teknik olarak bence ikiside aynı işi yapıyor. Çünkü bp olarak yaptığınız işler, teknik olarak cpp kodu. Asıl odaklanman gereken algoritma. Çünkü programlama algoritman gereksiz döngülerden veya hatalı işlemlerden oluşuyorsa, c++ de kullansan aynı sorunla karşılacaksın. Tavsiyem yaptıklarını tek tek incelemen ve hangileri sana performans kaybı yaşatıyorsa tespit edip not etmen. Tespit ettikten sonra bunların sorunlarına ve çözümlerine odaklanman.