Gunsroses

Yeni üye
18 Eki 2015
10
0
0
(34) İstanbul Anadolu
Merhaba ben Mert amatör bir şekilde 5yıldır oyun programcılığı ve tasarımıyla ilgileniyorum ve takip ediyorum çok uzun zamandır çalıştığımdan dolayı epey bir uzak kaldım ve hiç bir çalışmada bulunamadım şuan uzun  bir süre boş vaktim varken tekrardan başlamak istiyorum fakat kafama takılan bir kaç soru var sizlerin yorumlarınızı merak ediyorum.
Unreal engine 4 öğrenmek istiyorum C++ destekli olması benim çok hoşuma gitti hem kendimi C++ da geliştirirken hem de bu motorda uygulamak bana çok şey katacağına inanıyorum. İnternet üzerinde seyrettiğim videolar ve incelemelerde Unrealin muhazzam görüntüler çıkardığını görüyorum ama benim için muhazzam görüntülerin çok da bir önemi yok motorun grafik kalitesi dışında neler sunabildiğini merak ediyorum gördüğüm örneklerin çoğu ve şuan bir çok türk gelilştirici steam greenlighta oyunları sunmuş unityle bu kadar çok çıktığını görmemiştim fakat hepsi First person shooter oynanışın da ve oynanış olarak pek birşey yok korku bulmaca tarzı çıkıyor ve gameplayer videoların da gördüğüm tek şey muhazzam grafikler pek başka birşey göremiyorum.

Bu motoru unity3D den ayıran özellikleri nelerdir ?

Motorun grafiksel açıdan değil yazılımsal olarak neler yapabiliyor kodlama sistemi çok karışık mı hazır sistemi ne kadar özgür ? (Neler yapabilidğini yapımcının yeteneklerine bilgisine bağlı olduğunu biliyorum yine de özgürlüklerini merak ediyorum)

Bu oyun motoruna bu uzun boş vakitlerimi sizce ayırmalıyım ayırıcaksam nelere dikkat etmem gerekiyor en sağlıklı ve hızlı şekilde nasıl ve nerelerden takip etmememi önerirsiniz?

Sorularım biraz fazla ve uzun oldu kusura bakmayın okuyana herkese şimdiden teşekkürler.
 
Merhaba.

Kısaca kısıtlama var mı sorusunu yanıtlamak gerekirse; yok denilebilir. Sadece oyun motorunun size sundukları ile piyasada mevcut tüm oyunları (birkaç istisna dışında) yapabilirsiniz. Eğer oyun motorunun kaynak kodundan kaynaklanan bir problem nedeniyle kafanızdaki oyunu yapmanızda bir engel oluşursa; kaynak kod açık olduğundan her türlü düzenlemeyi yapıp bu engeli aşmanız da mümkün.

Unity3D deneyiminiz olduğu için kod açısından kıyaslama yaparak anlatacağım. Unity3D Component Based(Bileşen Tabanlı) bir mimariye sahip. Bildiğiniz gibi oyun nesneleri GameObject ve onları farklılaştırmak için bileşen ekler/çıkarır yada değiştirirsiniz. Kodlarken de MonoBehaviour sınıfından kalıtım almış scriptinizi kullanırsınız. Bu yapı itibarı ile Unity3D ile başta kalıtım olmak üzere OOP (Nesneye Yönelik Programlama) özelliklerini kullanmakta pek uygun değil.

UE4 için OOP yaklaşımlı ve bileşenleri de kullanan karma(Composite) bir oyun motoru diyebiliriz. Unity3D'de yer alan GameObject, UE4'de karşımıza Actor olarak çıkmakta. Yapacağınız geliştirmeleri kalıtım yaklaşımını kullanarak yaparsınız. Bu nedenle iyi bir OOP bilgisine ihtiyaç vardır. OOP yaklaşımlı dillerin sözdizim kurallarını bilmek elbette OOP bilmek anlamına gelmiyor. Gerçek anlamda başta Inheritance(kalıtım), Polymorphism(çok biçimlilik) olmak üzere, data abstraction(veri soyutlama) ve information hiding(bilgi gizleme) gibi OOP yaklaşımlarını iyi kavramış olmakda fayda var. Bununla beraber Unity3D oyunlarını tasarlarken nesne yönelimli tasarım düşünülmeyebilir ama UE4'de buna fazlaca ihtiyaç var. Özellikle de kalıtımın fazlaca olduğu senaryolarda.

OOP programlama bilgisinin önemi yanında, UE4 için temel yapıları ve fonksiyonları öğrenene kadar zorluk çekmeyi beklemeniz gerekmekte. Ben yaklaşık olarak 16 aydır bazen sıklıkla bazen ara sıra UE4 ile uğraşıyorum. Birçok şeyin ancak tam olarak oturduğunu, bazı şeyleri çok az bildiğimi söyleyebilirim. Bu anlamda da Unity3D'den biraz daha zor gelebilir. Çünkü temelde Unity3D için bilmeniz gereken çok az yapı var. Diğer taraftan da birşeyleri öğrenmeye başladığnızda aslında Unity3D'de kendi başınıza yapmanız gereken biçok şeyi UE4'ün halihazırda düşünüp sizin yerinize yaptığını ve bunların performansdan çok kayıp vermeden işlerinizi nasıl kolaylaştırdığınızı da görmeye başlayacaksınız.

Performans açısından UE4'ün, bunca özelliğine ve kalitesine rağmen Unity3D'den oldukça ilerde olduğunu söyleyebilirim. Örneğin 2 oyun motorunu da bir kütle çekim simülasyonu ile test ettim. Kütle çekim kanunu basitçe G*m1*m2/d^2 olarak bilinir. Bu simülasyonda rastgele boyutlarda ve kütlelerde oluşturulmuş Sphere Collider ve Rigidbody'ler birbirlerine kartezyen olarak kütle çekimi uygularlar. Hesaplama maliyetinde hiçbir fark olmamasına karşın çok bilimsel olmayacak ama yaklaşık değerlerle söylemek gerekirse; Unity3D'de hesaplama Update methodu kullanılarak yapıldığında 30-40 rigidbody'nin üzerine çıkıldığında 30 fps'nin altına düştüğünü; Coroutine kullanılarak yapıldığında 80-100 civarında rigidbodynin üzerine çıkıldığında 30 fpsnin altına düştüğünü; UE4'de ise yaklaşık bir kaç bin rigidbodynin üzerine çıkıldığında 30fpsnin altına düştüğünü gördüm.

Sonuç olarak Unity3D deneyimine sahip birinin başlangıç için bu makaleyi değerlendirmesi önemlidir:

https://docs.unrealengine.com/latest/INT/GettingStarted/FromUnity/

İyi çalışmalar.
 
Ark survival bilmemne denen oyun unreal engine ile yapıldı.

O kolay deyip kestirip attığınız Mesel'in kodlarını yazabildiğiniz günü görmek isterim doğrusu.
 
SoloWarrior' Alıntı:
Ark survival bilmemne denen oyun unreal engine ile yapıldı.

O kolay deyip kestirip attığınız Mesel'in kodlarını yazabildiğiniz günü görmek isterim doğrusu.

Gereksiz bir tartışma, özel olarak forum arkadaşımızın oyununu kötülemek gibi bir niyeti olduğunu düşünmedim ben.

Bir programcı olarak ben de tıpkı onun gibi düşünüyorum. Bir oyunun yapısından programlama 'kolaylığı' anlaşılabiliyor. Kaldı ki bazı oyunlar gerek tarzları gerekse de geliştirici tarafından hiçbir tasarım yapmadan dümdüz yazılıyor.
 
cahitburak' Alıntı:
SoloWarrior' Alıntı:
Ark survival bilmemne denen oyun unreal engine ile yapıldı.

O kolay deyip kestirip attığınız Mesel'in kodlarını yazabildiğiniz günü görmek isterim doğrusu.

Gereksiz bir tartışma, özel olarak forum arkadaşımızın oyununu kötülemek gibi bir niyeti olduğunu düşünmedim ben.

Bir programcı olarak ben de tıpkı onun gibi düşünüyorum. Bir oyunun yapısından programlama 'kolaylığı' anlaşılabiliyor. Kaldı ki bazı oyunlar gerek tarzları gerekse de geliştirici tarafından hiçbir tasarım yapmadan dümdüz yazılıyor.

Bu kolaylık meselesi vs. değil ki,o yorum ile azıcık emeğe saygı istedim.

Oyunu oynamadan yorumlamak yanlış birşey.
 
Yanlış yerden bakıyorsunuz. Oynanış olarak bir şey yok grafik olarak da ben ilgilenmiyorum diyor. Gerçekten de bu oyunlarda gerçek anlamda bir kod mimarisi yok tasarım yok, tarzları itibari ile de pek gerektirmiyorlar. Quest System, Item System, Looting, Rogue, Slope Walking, Climbing, Inventory, Dialog System, Multiplayer, Runtime World Build...vs...

Bunu kastetmiş ve dikkatli okursanız söylemek istediğinin; "acaba bu sistemleri yapmak UE4'de zor olduğu için mi yapılamamış, C++ kodlama nasıl anlatır mısınız?" demiş.
 
Yazıyı dün akşam okumuştum,yorumu 1 gün sonra attığımdan unutmuş olabilirim kabul.

Sayfalara sığmayan kodların yer aldığı oyunları yapabilecek seviyeye hepimizin gelmesi dileğiyle,iyi günler.
 
Merhaba yorumunuzu bugün okudum yazdığım yazı yanlış anlaşıldı sanırım. Oyununuzun videosunu seyretmiştin gayet beğendim bu tarz işlerin yapılması beni mutlu ediyor türkiye de oyun geliştirilme sektörünün ilerlemesi beni mutlu eder. Orada söylemek istediğim şey bu motorun sınırlamaları mı var bunları öğrenmek istiyordum ve motor ile ortaya çıkabileceklerini merak ediyordum gördüğüm bütün çalışmalar bahsettiğim türde oynanış olarak içerik bulunmayan oyunlar dı sizin oyununuz ve bir diğer gördüğüm oyun NO 70 de öyle fakat zaten oyunların türlerinin bu olması onların kötü ya da yetersiz olduğu anlamına gelmiyor ben sadece sınırlarımı öğrenmek istedim yanlış anlaşıldıysam kusura bakmayın. Başarılar dilerim
 
Gunsroses' Alıntı:
Merhaba yorumunuzu bugün okudum yazdığım yazı yanlış anlaşıldı sanırım. Oyununuzun videosunu seyretmiştin gayet beğendim bu tarz işlerin yapılması beni mutlu ediyor türkiye de oyun geliştirilme sektörünün ilerlemesi beni mutlu eder. Orada söylemek istediğim şey bu motorun sınırlamaları mı var bunları öğrenmek istiyordum ve motor ile ortaya çıkabileceklerini merak ediyordum gördüğüm bütün çalışmalar bahsettiğim türde oynanış olarak içerik bulunmayan oyunlar dı sizin oyununuz ve bir diğer gördüğüm oyun NO 70 de öyle fakat zaten oyunların türlerinin bu olması onların kötü ya da yetersiz olduğu anlamına gelmiyor ben sadece sınırlarımı öğrenmek istedim yanlış anlaşıldıysam kusura bakmayın. Başarılar dilerim
Oyun bana ait değil zaten,quqla arkadaşın.

Ben yazıyı okuyup ertesi gün birşeyler yazınca yanlış anlaşılmalar birbirini takip etti,kusura bakma bunun için.

Ark survival e bakabilirsin,ne kadar sorunlu olsa bile motor ile neler yapılabileceğini görmüş olursun,herhangi bir sınırlama yok.

Şu ana kadar gördüğüm tek sınırı session sisteminde max 64 kişi desteği.

Fakat c++ kullanarak bu limiti aşılabiliyor.
 
SoloWarrior' Alıntı:
Şu ana kadar gördüğüm tek sınırı session sisteminde max 64 kişi desteği.

Fakat c++ kullanarak bu limiti aşılabiliyor.

Sınırlama çoğunlukla sizin tasarımınızla ve server yeteneklerine bağlı. Şuan için teorik olarak sınırsız oyuncu barındırabilirsiniz ancak server bu maliyeti kaldırır mı orası önemli. Bunu aşmanın bir çok yöntemi var. Her level için dağıtık server kullanma, server gücünü arttırma gibi...Zaten MMO tarzında bir oyun değilse; örneğin CS tarzı bir oyun ise, bir oyun içerisinde 30-40'dan fazla oyuncunun olması zaten pek beklenmiyor. Lobby için bir master server kullanabilirsiniz. Oyun, kısıtlı sayıdaki oyuncu ile birbirinden bağımsız, dağıtık, hatta oyunculara coğrafi olarak yakın serverlar kullanılacak şekilde tasarlanabilir. Bu mantık MMOlar için de kullanılabilir. Ayrı levellar ayrı serverlarda çalıştırılır ama bir senkronizasyon işlemi yapmak gerekir bu durumda. MMOlar için ek olarak Replicated değerleri minimum tutmak da önemli bir adım olarak sayılabilir.

Özetle; maksimum oyuncu sayısı için UE4'de herhangi bir sınırlama yok. Bu sınırlama Unity3D'de var(dı).