kinglord34

Aktif üye
7 Ocak 2017
261
30
28
Belirtilmemiş
Uzun bir aradan sonra tekrardan herkese merhabalar, 
Geliştirdiğim multiplayer oyunumda bir haritada iki farklı karakter sınıfı bulunmakta. Bunlar katil ve insanlar.

Katilin otomatik olarak host olmasını istiyorum.Yani host odayı kurduğunda otomatik katil olacak.Sunucuya katılanların ise otomatik insan olmasını istiyorum.

Widgeta butonlar koyulup possess yaptığımızda bu iş çözülüyor aslında fakat ben yukarıda anlattığım gibi olmasını istiyorum.

Fikirlerinizi, önerilerinizi ve yardımlarınızı bekliyorum. İyi çalışmalar...
 
Biliyorsun, Possess fonksiyonu sadece Server kısmında gerçekleşiyor. Tabii Listen Server metodu üzerinden ilerliyorsan şöyle bir fonksiyon var;

1.
https://docs.unrealengine.com/4.27/en-US/API/Runtime/Engine/Kismet/UKismetSystemLibrary/IsServer/

2.
Sana şimdi bunu yapman için daha zor ama en doğru yolu da söylüyorum.

Öncelikle lobiye girdiğinde Seamless Travel yapacaksın. Seamless travel yaptığında playercontroller sınıfları da aynı şekilde geçiyor ama sadece SUNUCUDA veya GetSeamlessActorList fonksiyonundaki aktörleri de ekleyebiliyorsun. Bu eklenenler yine GameMode sınıfın üzerinden işlem görüyor. 

Playercontroller üzerinden bir değişken oluşturabilirsin lobiyi kuran kişi gibisinden, daha sonra ise yine aynı GameMode üzerinden şunu uygulayabilirsin,

GameMode sıfınının OnPostLogin() metodunu override etmek mantıklı olacaktır. Çünkü sadece sunucuda seamless travel sonrası playercontroller aynı şekilde geçiş yapabiliyor. Biliyorsun ki GameMode sadece sunucu kısmında var olan bir sınıf.

https://docs.unrealengine.com/4.27/en-US/API/Runtime/Engine/GameFramework/AGameMode/PostLogin/

virtual void PostLogin (APlayerController * NewPlayer);

Bu method sana oyuna gelen yeni oyuncunun Seamless Travel sonrası, Player Controller örneğini parametre olarak veriyor(host olan dahil bu durumda çünkü Listen Server).

Sana kalmış bir şey bu.
 
Khubur' Alıntı:
Biliyorsun, Possess fonksiyonu sadece Server kısmında gerçekleşiyor. Tabii Listen Server metodu üzerinden ilerliyorsan şöyle bir fonksiyon var;

1.
https://docs.unrealengine.com/4.27/en-US/API/Runtime/Engine/Kismet/UKismetSystemLibrary/IsServer/

2.
Sana şimdi bunu yapman için daha zor ama en doğru yolu da söylüyorum.

Öncelikle lobiye girdiğinde Seamless Travel yapacaksın. Seamless travel yaptığında playercontroller sınıfları da aynı şekilde geçiyor ama sadece SUNUCUDA veya GetSeamlessActorList fonksiyonundaki aktörleri de ekleyebiliyorsun. Bu eklenenler yine GameMode sınıfın üzerinden işlem görüyor. 

Playercontroller üzerinden bir değişken oluşturabilirsin lobiyi kuran kişi gibisinden, daha sonra ise yine aynı GameMode üzerinden şunu uygulayabilirsin,

GameMode sıfınının OnPostLogin() metodunu override etmek mantıklı olacaktır. Çünkü sadece sunucuda seamless travel sonrası playercontroller aynı şekilde geçiş yapabiliyor. Biliyorsun ki GameMode sadece sunucu kısmında var olan bir sınıf.

https://docs.unrealengine.com/4.27/en-US/API/Runtime/Engine/GameFramework/AGameMode/PostLogin/

virtual void PostLogin (APlayerController * NewPlayer);

Bu method sana oyuna gelen yeni oyuncunun Seamless Travel sonrası, Player Controller örneğini parametre olarak veriyor(host olan dahil bu durumda çünkü Listen Server).

Sana kalmış bir şey bu.


Hocam anladığım kadarıyla anlattıklarınız c++ için. C++ bilgim ne yazık ki yok. Blueprint üzerinden yapabilir miyim bu sistemi?