leonscottkfm

Unreal MVP
31 May 2015
1,542
5
219
63
28
(34) İstanbul Avrupa
store.steampowered.com
Aranızda Sa-Mp oynayanlar varsa bilir. Gta sanandraes multiplayer.
Server admin sizin world numaranızı değiştirebliyordu . Mesela sizin worldünüzü 2 yapıyor ama herkes 1. dünyada diğer oyuncuda 2 olursa karşılaşabiliyordunuz.

Aynısı gta 5 te de mevcut. Herkes aynı yerden ev alıyor fakat herkesin kendi interioru var. Bu sistemi nasıl yapabilirim ?  Bir ada yapmak istiyoruz adayı tasarladım. Fakat her oyuncunun kendi adası olacak orası. Yani diğer online oyuncular o adayı göremeyecek orada kendi adasını görecekler fakat benim adama da davet ile gelebilecek. Davet kısmını şimdilik boşverin , local dünyayı nasıl entegre ederim ? Bir fikri olan var mı bu konuda ?

Paralel dünyalar düşünün. Aynı mekan aynı objeler fakat diğer oyuncular yok. Ama aynı sunucudayız bağlantıdayız yani.Fakat iş Adaya dönmeye geldiğinde herkesin kendi adası olacak. Haritada 1 ada olacak fakat o ada herkesin kendinin olduğu local bir ada olacak.
 
Bir ortak ada, bir de kendi özel adanın olması birinin multiplayer birinin de single player olması demek. Singledan multiye geçmek, multiplayer oyunlarda bir odaya katılmaktan farksız, single geçmekte o odadan çıkmaktan farksız. Başka birisini oyuna çağırma işi ise, steam ve diğer platformların sunduklarını kullanarak olabilir. Steam online subsystem sisteminde arkadaş çağırma, arkadaş listesini alma, onlineları alma gibi şeyler vardı diye hatırlıyorum.
 
Hayır single değil. Sunucu değiştirme işlemine gerek yok. Dediğim gibi GTA 5 te aynı sistem var oyuncular sunucudan çıkmadan aynı sunucu içerisinde aynı binada birbirlerinin interiorlarına girebiliyorlar. Bu interior 1 tane aslında ve her oyuncu için Unique.
Bina aynı bina ama benim dairemle başkasınınki farklı. O girince kendi dairesini görüyor ben girince kendiminkini görüyorum. Ve sunucu falan single olayıda yok. World değişiyor sadece. Aynı world her oyuncu için özel düzenleniyor. Nasıl yapılıyor bilmiyorum mümkün mü ?

Yani sen şunu mu diyorsun ? Adam singlede adayı düzenleyecek ve sunucu kurduğunda save dosyalarından özelleştirilmiş adası alınacak orası o şekilde olacak. Kendi adasına ışınlandığında aslında yeni bir session oluşturacak ve o adaya gidecek sonrasında arkadaşını çağırırsa o da o sessiona katılıcak ve o eşyalar onun için de o şekilde yüklenecek. Bu sistem olmaz. Bu sefer diğer oyuncularla etkileşim kesilecek. GTA da öyle bir şey olmuyor. Etkileşim kaldığı yerden devam ediyor hala aynı sessionda oluyorsun.
 
Geçmişte uzun süre samp oynamışlığım var. Örneğin biri ev satın aldıysa evin görünümü farklı bile olsa çoğu evin içi aynı görünüşe sahipti. 
A kullanıcısı kendi evine girdi diyelim, B kullanıcısı da kendi evine girdi, ikisi aynı görünüş, aynı map fakat farklı dünyalar olduğundan o bizi göremezdi, biz de onu. Bunu en doğru yolda yapmak için, sunucu olarak her oyuncuya özgü bir veritabanı oluşturmak gerekiyor. Bu veritabanı, her oyuncunun adasına ait bilgileri depolayacak ve bu bilgiler sadece o oyuncuya gönderilecek. Bu sayede player sunucu tarafından gönderilen bu verileri kullanarak kendi adasını oluşturacak ve diğer oyuncuların adasını göremeyecek.
Bunu yapmak için C++'a bulaşmak gerekiyor ki o bilgimin dışında kalıyor.

Ben çoğu yola ilkel yaklaşıyorum. Burada istediğin şey tam olarak ne bilemiyorum. Eğer ev örneği somut bir örnek olacak ise oyuna giren her client'ın kendine ait index'i olduğu için, o index'e özel, haritanın gizli bir noktasında ev interior spawnlarım ve bu spawnlama işlemi diğer clientlarda gerçekleşmez. Ta ki diğer kullanıcılar o eve girmeye karar verinceye dek. Diğer clientlar o eve girince o ev onlar için de var olur, evden çıkarlarsa evi onlar için yok edersin.
Spawnlama lokasyonu için bir fonksion belirlenir burada kat sayı olarak client'ın indexini baz alırsın.

Çok ilkel, belki isteklerini karşılamaz ama bir fikir oluştursun.

edit: ayrıca yeni world'ler yaratmaya gerek yok. bir ilizyon yapabilirsin. senin adan var, başkası da aynı adaya sahip. onun adasına ışınlandığında aynı adada spawnlanacaksın yine. yani her şey tek adada ilerliyor sadece sen onu göremiyorsun o da seni. çünkü client onu sadece kendisi için spawnladı senin için değil. onun adasına gittiğin gibi değişkenleri kendine çekeceksin, o ve sen o ortamda spawnlanacak tekrardan. onun adasından çıktığında o yok olacak, sen tekrardan spawnlanıp kendi değişkenlerini kullanacaksın.

bu da kalsın burada belki bir fikir daha olur senin için.
 
Valla süper fikir. Client için spawnlarsak diğerleri göremez. İşte bu. Benim işimi görür bu fakat adaya davet edilirse ne olacak o da var ama onu sonra hallederiz. Run Owning Client mi yapacağız ?=

Evet Samp örneğin doğru. Herkesin evi var fakat herkes aslında kendi evine giriyor. Gta 5 te açık örneği var işte ona benzer. Ev alıyorsun apartmandan diğerleride alıyor fakat herkes kendi evine girmiş oluyor. Ne zamanki biri davet edilirse o zaman o eve gelebiliyor.Herkes adasını kendine göre organize edecek. Mesela birisi bayrak koyacak diğerinde çadır var ama diğeri para harcayıp ev yaptırmış mesela. Ada bir landscape değil dolayısıyla blueprinte çevirebiliriz diye düşünüyorum. Fakat tüm adayı nasıl bp ye çevireceğim ? Map gibi resmen.
Çok iyi düşünmüşsün bu arada küçük bir örnek yapabilir misin peki vaktin olduğunda ? Küp spawnlasan bile olur. ve 1 tuşuna basınca indexi 1 olan oyuncuya izin ver onda da gözüksün mesela. Bu kadar basite inerek bir örnek gösterebilir misin?
 
leonscottkfm' Alıntı:
Valla süper fikir. Client için spawnlarsak diğerleri göremez. İşte bu. Benim işimi görür bu fakat adaya davet edilirse ne olacak o da var ama onu sonra hallederiz. Run Owning Client mi yapacağız ?=

Evet Samp örneğin doğru. Herkesin evi var fakat herkes aslında kendi evine giriyor. Gta 5 te açık örneği var işte ona benzer. Ev alıyorsun apartmandan diğerleride alıyor fakat herkes kendi evine girmiş oluyor. Ne zamanki biri davet edilirse o zaman o eve gelebiliyor.Herkes adasını kendine göre organize edecek. Mesela birisi bayrak koyacak diğerinde çadır var ama diğeri para harcayıp ev yaptırmış mesela. Ada bir landscape değil dolayısıyla blueprinte çevirebiliriz diye düşünüyorum. Fakat tüm adayı nasıl bp ye çevireceğim ? Map gibi resmen.
Çok iyi düşünmüşsün bu arada küçük bir örnek yapabilir misin peki vaktin olduğunda ? Küp spawnlasan bile olur. ve 1 tuşuna basınca indexi 1 olan oyuncuya izin ver onda da gözüksün mesela. Bu kadar basite inerek bir örnek gösterebilir misin?

Ne demek rica ederim. Bunu nasıl koda, somut örneğe dönüştürebileceğimi inan ben de bilmiyorum. Ama bir fikir işte, aklında bulunsun.
Yani oyun başlarken sadece Client için spawnlamak, başkasının adasına gidince onun ID'sini alıp Run On Server + MultiCast ile kendinizi baştan spawnlatmak.

Ya da her şey olması gerektiği gibi spawnlanır, normal multiplayer oyundaki gibi. Tek fark hiç kimseyi göremezsin, onlar da seni göremezler, adanı ve yaptıklarını göremezler. Sahnede kırmızı bir küp var diyelim, bunun üzerine 10 sayısı yazıyor, bu bir float variable. 3 Tür Variable olur. 1. Diğerlerinin değişkenlerl, 2. Senin değişkenlerin, 3. o kübün üzerinde olan Float değişkeni. Birisinin adasına gidince, bu float onun variablesiyle değişir (Set variable yani). Onun adasından çıkıp kendi adana gidince kendi variable'dan çekersin değerlerini. Bir nevi save sistemi gibi. 

Kolları sıvayıp işe girişince teker teker çözülüyor sorunlar. Zor da olsa oluyor yani. Benim sana bir örnek sunabilmem için yapıp yapıp bozmam gerekiyor çünkü BP bilgim kısıtlı. Youtube'de Unreal Engine'nin Multiplayer ders serisi var onu komple kendi oyununa uyguladıktan sonra değiştirebilirsin. Spawn sistemi falan çok güzel anlatılmış.
Oyunun temelii oturttuktan sonra Steam davetiye sistemi vs.nin kusursuz çalışması için AdvancedSession pluginini entegre edersin.
 
Benim oyunum var zaten :D Online.

Davet sistemi steam entegrasyonu falan var bu başka bir proje.
Ada fikri aklımı karıştırdı ama dediğin gibi yapınca onun adası ona benimki bana oluştu. Fakat kişiye özel multicast yapamıyoruz herhalde.
O biraz sıkıntı yani davet sisteminde şimdilik sıkıntı çıkacak gibi. Benim adanın bilgileriyle karşının clientinde bir ada oluşturursak aynı adayı görebilriiz. Multicast olmadan, RunOwning yapmak lazım ikimizede.
 
leonscottkfm' Alıntı:
Benim oyunum var zaten :D Online.

Davet sistemi steam entegrasyonu falan var bu başka bir proje.
Ada fikri aklımı karıştırdı ama dediğin gibi yapınca onun adası ona benimki bana oluştu. Fakat kişiye özel multicast yapamıyoruz herhalde.
O biraz sıkıntı yani davet sisteminde şimdilik sıkıntı çıkacak gibi. Benim adanın bilgileriyle karşının clientinde bir ada oluşturursak aynı adayı görebilriiz. Multicast olmadan, RunOwning yapmak lazım ikimizede.

Oyunu inceledim, on numara gözüküyor. Yalnız video falan göremedim, var mı acaba merak ettim.
 
Discord kanalında var video. Instagramda var.

Instagram : routegamestudio

Discord: https://discord.gg/xdE3egbW

Onun dışında oyun biraz daha ilerleyince Trailer ve Gameplay türü videoları steame atacağız. Hatta mağazayı baştan aşağı düzenleyip yeni görseller ve tüm dillerde açıklaama yazacağız. İstersen testlere bile katılabilirsin. Şuanda sunucu kurup beraber deneyimleyebiliyoruz.