denizcahit

Yeni üye
23 Eki 2017
6
3
0
(40) Kırşehir
Merhaba arkadaşlar üzerinde çalışmakta olduğumuz bir oyuna Advanced Sessions Plugin sayesinde steam entegrasyonu sağladık steam üzerinden verileri çekebiliyoruz ve bunları kullanabiliyoruz fakat oyunun multiplayer kısmında izleyeceğimiz yol konusunda kafamızda soru işaretleri var. Oyuncunun ister tek başına isterse steam üzerinden davet edeceği arkadaşları ile birlikte oyuna girebilmesini istiyoruz. Invite kısmını nasıl yapabiliriz ve steam ile ilişkilendirebiliriz bu konuda yardımlarınızı bekliyoruz. Oyun mantık olarak pubg gibi bir network sistemi ile işleyecek bunu göz önüne alarak bilgilendirme yaparsanız çok seviniriz.
 
denizcahit' Alıntı:
Merhaba arkadaşlar üzerinde çalışmakta olduğumuz bir oyuna Advanced Sessions Plugin sayesinde steam entegrasyonu sağladık steam üzerinden verileri çekebiliyoruz ve bunları kullanabiliyoruz fakat oyunun multiplayer kısmında izleyeceğimiz yol konusunda kafamızda soru işaretleri var. Oyuncunun ister tek başına isterse steam üzerinden davet edeceği arkadaşları ile birlikte oyuna girebilmesini istiyoruz. Invite kısmını nasıl yapabiliriz ve steam ile ilişkilendirebiliriz bu konuda yardımlarınızı bekliyoruz. Oyun mantık olarak pubg gibi bir network sistemi ile işleyecek bunu göz önüne alarak bilgilendirme yaparsanız çok seviniriz.

Oyununuzun Steam idsi mevcut mu şuan da ? Yoksa spacewar idsini mi kullanıyorsunuz ?
 
Ozzy' Alıntı:
denizcahit' Alıntı:
Merhaba arkadaşlar üzerinde çalışmakta olduğumuz bir oyuna Advanced Sessions Plugin sayesinde steam entegrasyonu sağladık steam üzerinden verileri çekebiliyoruz ve bunları kullanabiliyoruz fakat oyunun multiplayer kısmında izleyeceğimiz yol konusunda kafamızda soru işaretleri var. Oyuncunun ister tek başına isterse steam üzerinden davet edeceği arkadaşları ile birlikte oyuna girebilmesini istiyoruz. Invite kısmını nasıl yapabiliriz ve steam ile ilişkilendirebiliriz bu konuda yardımlarınızı bekliyoruz. Oyun mantık olarak pubg gibi bir network sistemi ile işleyecek bunu göz önüne alarak bilgilendirme yaparsanız çok seviniriz.

Oyununuzun Steam idsi mevcut mu şuan da ? Yoksa spacewar idsini mi kullanıyorsunuz ?
Henüz yapım aşamasında olduğu için 480 id numarasını kullanıyoruz.
 
Öncelikle Plugin kısmından Online Subsystem Steam enable kısmını işaretleyin ve motoru yeniden başlatın.
[img=633x341]https://i.hizliresim.com/V3QjDn.png[/img]

/Proje/Engine/Binaries/ThirdParty/Steamworks/Steam[Versiyon Numarası]/Win64 Steamworks SDK ve Steam Client içinden bulabilirsiniz
Şu .dll kopyalayın;

  • steam_api64.dll
  • steamclient64.dll
  • tier0_s64.dll
  • vstdlib_s64.dll 

/Proje/Engine/Binaries/ThirdParty/Steamworks/Steam[Versiyon Numarası]/Win32 
Şu .dll kopyalayın;
  • steam_api.dll
  • steamclient.dll
  • tier0_s.dll
  • vstdlib_s.dll 


Projenizin Config klasöründen DefaultEngine.ini kısmına bunları yapıştırın. Not: ID'yi oyununuzun Steamworks ID'sine göre değiştiriniz.
Kod:
[/Script/Engine.GameEngine]
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

[OnlineSubsystem]
DefaultPlatformService=Steam

[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480

[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"

Daha sonrasın da Steam hesabınıza girdikten sonra oyununuzu Standalone şeklinde çalıştırın ve Sağ alt köşede Steam Shift+Tab tuşlarına basarak oyununuzun Overlay kısmına girebilirsiniz. 

Overlay kısmında şunlar bulunmaktadır;
- Friends
- Achievements
- Guides
- Screenshots
- Community Hub
- Discussions
 
Hocam bunları zaten yaptım benim asıl merak ettiğim Matchmaking sistemi Unreal Engine 4 üzerinde nasıl yapılabilir? Bu sistemin mantığı nedir? Nasıl işler? Oyunumuzun çok büyük bir kısmı bitti fakat network konusunda deneyimsiz olduğumuz için ilerleyemiyoruz.
 
denizcahit' Alıntı:
Hocam bunları zaten yaptım benim asıl merak ettiğim Matchmaking sistemi Unreal Engine 4 üzerinde nasıl yapılabilir? Bu sistemin mantığı nedir? Nasıl işler? Oyunumuzun çok büyük bir kısmı bitti fakat network konusunda deneyimsiz olduğumuz için ilerleyemiyoruz.

Ozzy zaten cevabı Online Subsystem olarak vermiş. 
Online Subsystem sayesinde Steam, XBOX, Facebook gibi platformlardan gelen fonksiyonel üyelerin veri soyutlamalarını alıp projenize uygun şekilde halledebilirsiniz.
Bunun dışında Actor Replication, RPC's vs.. bunun gibi temel network yapılarını daha önceden projeye uygulandı tahmin ediyorum.

Aradığınız Steam Entegrasyonu:
https://docs.unrealengine.com/latest/INT/Programming/Online/Steam/index.html

Oturum ve Eşletirme Yapıcılar için:
https://docs.unrealengine.com/latest/INT/Programming/Online/Interfaces/Session/index.html

Hala anlamazsanız, Rama kullanıcısının Online Subsystem hakkında yazdığı makaleyi okuyun.
https://wiki.unrealengine.com/Steam,_Using_Online_Subsystem
 
denizcahit' Alıntı:
Hocam bunları zaten yaptım benim asıl merak ettiğim Matchmaking sistemi Unreal Engine 4 üzerinde nasıl yapılabilir? Bu sistemin mantığı nedir? Nasıl işler? Oyunumuzun çok büyük bir kısmı bitti fakat network konusunda deneyimsiz olduğumuz için ilerleyemiyoruz.

@Khubur dediği gibi size söylediğim Online Subsystem ile yapılabilir. Bir Matchmaking için "Sessions" (Oturum) oluşturmalısınız.

Bir oturumun temeli şöyledir:

- Yeni bir oturum yaratılır
- Oyuncuların oturuma katılması beklenir
- Katılmak isteyen oyuncular kaydedilir
- Oturum başlatılır
- Oyun oynanır
- Oturum sonlanır
- Katılan oyuncuların kayıtları silinir

Teorik kısmı bu şekilde işler. İşi pratiğe dökmek istersek programlanmasından konuşursak; FOnlineSessionSettings classını (sınıfını) kullanmalıyız. Module ise Online Subsystemlerdir. Burada belirlememiz gereken en önemli özellik SteamAPI kullanacak olmamızdır.
FOnlineSessionSettings sınıfı tarafından tanımlanan Oturum Ayarları ise oturumun özelliklerini belirleyen bir özellik çeşitidir. Bunlar şunlardır: İzin verilen oyuncu sayıları, Oturum özel mi değil mi, Oturum ile LAN eşleşti mi, Sunucu dedicated mı yoksa player host şeklinde mi ve sizin istediğiniz oyuna davetler kabul edilir mi gibi şeklinde bu sınıfta yer alıyor. Online oyunlarda ki oyun lobileri oyundan oyuna değişebilir. Örneğin CS:GO, League Of Legends ve GTA V vb. gibi. Bu oyunların her biri bir oturumu ve kendi oturum ayarlarıdır. Örneğin, bazı oturumlar oyuncu-oyuncu (PvP) arasında olabilirken bazıları çok-oyunculu (Co-Op) olabilir. Farklı oturumlar, farklı haritalar veya çalma listeleri oynuyor olabilir, farklı sayıda oyuncu talep edebiliyorlar. Bu sınıf da kullanmamız gereken bazı nodelar var

Create Session, Join Session, Find Session, Destroy Session vb. gibi nodeları kullanmanız gerekmektedir. Kısacası sizin programlama bilginize kalıyor.  İlerlediğiniz de takıldığınız yerlerde konu açarak veya soru sorarak daha çok bilgi edinebilirsiniz. Sizde şuan daha teorik kısmındasınız. Bunlar tabii ki blueprint ile yapılması için örnekler verdim fakat FOnlineSessionSettings class C++ için de geçerlidir.

3pg6jp.png
 
Legia' Alıntı:
denizcahit' Alıntı:
Henüz yapım aşamasında olduğu için 480 id numarasını kullanıyoruz.

Oyunumuza nasıl id numarası alıyoruz ?

Steamworks'dan bir ID almak için SteamWorks geliştiricisi olmanız gerekiyor.Steamworks geliştiricisi değilseniz, Steam'ın geliştiriciler için sunmuş olduğu SpaceWar adlı test projesini kullanabilirsiniz. ID numarası 480.