8 Ara 2019
440
21
18
Server olarak başlattığımda BP sorunsuz bi şekilde çalışıyor. Client de aynı şekilde sorunsuz ama sadece Client teleport olduktan 1 saniye sonra tekrar eski lokasyonuna geri geliyor. her teleportu Onayladığımda aynısını yapıyor.

1. Resim Message Log (Compile hata vs almıyorum)
2. Resim Kapının BP
3. Resim Widget BP




 
mrtcnaslnts' Alıntı:
Server olarak başlattığımda BP sorunsuz bi şekilde çalışıyor. Client de aynı şekilde sorunsuz ama sadece Client teleport olduktan 1 saniye sonra tekrar eski lokasyonuna geri geliyor. her teleportu Onayladığımda aynısını yapıyor.

1. Resim Message Log (Compile hata vs almıyorum)
2. Resim Kapının BP
3. Resim Widget BP





Onclicked105 te Teleport u true yapıyorsun. Burada server kendisi için client ta kendisi için bunu yapacaktır. Arada herhangi bir iletişim yok şu an. Server zaten her durumda çalışacaktır. Sorun çıkmaz. Ama client tan burası çalıştığında önce normal değişken true ya dönüyor. Tick function da kontrol ediyorsun OK diyor gidiyor. Ancak o sırada hiç birşeyden haberi olmayan server teleport değişkeninin değerini kendisinde ne ise ( şu an false ) o şekilde clienta gönderiyor. Bir sonraki Tick te artık Teleport değişkenin yeniden false olduğu için geriye dönüyor. Çünkü  bu sırada serverdaki Characterin konumuda güncelleniyor.
 Çözüm o butona tıklandığında client Server fonksiyonu ile Servera haber gönderecek ben tıklandım teleportu true ya çevir diye. Sonra server clientı replicated olduğu için otomatik olarak güncelleyeceğinden client ta değişmiş olacak. Bu şekilde sistem düzelecek.
  Not: Execution line lar (yani beyaz çizgiler)   fonksiyon ve eventler arasında gidip geliyorlar. Normal de hiç birisi diğerinden gelen bir beyaz çizgiyi kullanmaması lazım. Eğer kullanırsa bazen sorun çıkmaz ama bazı yerlerde ilk resimde gönderdiğin error ları almaya başlarsın. Onların hepsini birbirinden ayırman gerekir. Eğer aynı şeye orada da ihtiyacın varsa orada da aynı node dan (ctrl w ile) kopyalarayarak oluşturmalısın. Bu performans kaybına da sebep olmaz. Aldığın hatalar hep bunun yüzünden.
 
erginegider' Alıntı:
mrtcnaslnts' Alıntı:
Server olarak başlattığımda BP sorunsuz bi şekilde çalışıyor. Client de aynı şekilde sorunsuz ama sadece Client teleport olduktan 1 saniye sonra tekrar eski lokasyonuna geri geliyor. her teleportu Onayladığımda aynısını yapıyor.

1. Resim Message Log (Compile hata vs almıyorum)
2. Resim Kapının BP
3. Resim Widget BP





Onclicked105 te Teleport u true yapıyorsun. Burada server kendisi için client ta kendisi için bunu yapacaktır. Arada herhangi bir iletişim yok şu an. Server zaten her durumda çalışacaktır. Sorun çıkmaz. Ama client tan burası çalıştığında önce normal değişken true ya dönüyor. Tick function da kontrol ediyorsun OK diyor gidiyor. Ancak o sırada hiç birşeyden haberi olmayan server teleport değişkeninin değerini kendisinde ne ise ( şu an false ) o şekilde clienta gönderiyor. Bir sonraki Tick te artık Teleport değişkenin yeniden false olduğu için geriye dönüyor. Çünkü  bu sırada serverdaki Characterin konumuda güncelleniyor.
 Çözüm o butona tıklandığında client Server fonksiyonu ile Servera haber gönderecek ben tıklandım teleportu true ya çevir diye. Sonra server clientı replicated olduğu için otomatik olarak güncelleyeceğinden client ta değişmiş olacak. Bu şekilde sistem düzelecek.
  Not: Execution line lar (yani beyaz çizgiler)   fonksiyon ve eventler arasında gidip geliyorlar. Normal de hiç birisi diğerinden gelen bir beyaz çizgiyi kullanmaması lazım. Eğer kullanırsa bazen sorun çıkmaz ama bazı yerlerde ilk resimde gönderdiğin error ları almaya başlarsın. Onların hepsini birbirinden ayırman gerekir. Eğer aynı şeye orada da ihtiyacın varsa orada da aynı node dan (ctrl w ile) kopyalarayarak oluşturmalısın. Bu performans kaybına da sebep olmaz. Aldığın hatalar hep bunun yüzünden.

Not olarak yazdığın beyaz çizgilerden kastını ve node ctrl w olayını anlayamadım. Ve Server fonksiyonu ile servere haber gönderme kısmını Nasıl yapcamı bilemedm. Aslında biliyor olabilirim ama kelime terim vs. olarak pek anlayamıyorm.

(Terimlere ve isimli anlatımlara pek aşina değilim aıkcası) :) Kaliteli videolarından kısacık bi bilgilendirme mutlu ederdi :D

Edit: Beyaz çizgilerde kullanma yok. Mavi çizgilerde var onu diyorsan bilemem ama
 
mrtcnaslnts' Alıntı:
erginegider' Alıntı:
Onclicked105 te Teleport u true yapıyorsun. Burada server kendisi için client ta kendisi için bunu yapacaktır. Arada herhangi bir iletişim yok şu an. Server zaten her durumda çalışacaktır. Sorun çıkmaz. Ama client tan burası çalıştığında önce normal değişken true ya dönüyor. Tick function da kontrol ediyorsun OK diyor gidiyor. Ancak o sırada hiç birşeyden haberi olmayan server teleport değişkeninin değerini kendisinde ne ise ( şu an false ) o şekilde clienta gönderiyor. Bir sonraki Tick te artık Teleport değişkenin yeniden false olduğu için geriye dönüyor. Çünkü  bu sırada serverdaki Characterin konumuda güncelleniyor.
 Çözüm o butona tıklandığında client Server fonksiyonu ile Servera haber gönderecek ben tıklandım teleportu true ya çevir diye. Sonra server clientı replicated olduğu için otomatik olarak güncelleyeceğinden client ta değişmiş olacak. Bu şekilde sistem düzelecek.
  Not: Execution line lar (yani beyaz çizgiler)   fonksiyon ve eventler arasında gidip geliyorlar. Normal de hiç birisi diğerinden gelen bir beyaz çizgiyi kullanmaması lazım. Eğer kullanırsa bazen sorun çıkmaz ama bazı yerlerde ilk resimde gönderdiğin error ları almaya başlarsın. Onların hepsini birbirinden ayırman gerekir. Eğer aynı şeye orada da ihtiyacın varsa orada da aynı node dan (ctrl w ile) kopyalarayarak oluşturmalısın. Bu performans kaybına da sebep olmaz. Aldığın hatalar hep bunun yüzünden.

Not olarak yazdığın beyaz çizgilerden kastını ve node ctrl w olayını anlayamadım. Ve Server fonksiyonu ile servere haber gönderme kısmını Nasıl yapcamı bilemedm. Aslında biliyor olabilirim ama kelime terim vs. olarak pek anlayamıyorm.

(Terimlere ve isimli anlatımlara pek aşina değilim aıkcası) :) Kaliteli videolarından kısacık bi bilgilendirme mutlu ederdi :D
Dostum kırmızı renkli olan node lar işlem başlangıcını ifade eder. Mesela senin onclick lerin gibi. Herhengi bir işlem burdan başlar. Bunların üzerinde pinler ve pinlerden çıkan ipler var diyelim. En üstteki pin herzaman beyaz ve üçgen oluyor. Bunlara execution pin deniyor. Bunlardan çıkıp diğer nodelara giden beyaz ipler de execution line deniyor. 
 Normalde kırmızı bir  node dan çıkan beyaz ipler ( sadece beyazlar da değil digerleride )başka kırmızı nın işlem arasına girildiğinde sorun çıkma ihtimali olur. Mesela orda kapı reset di sanırım bir kırmızı var buna başka bir yerden create widget tan bir şey geliyor branchtan baska bir yere gidiyor vb. Sende bunlardan dolayı ilk resimde gönderdiğin hataları alıyorsun.
Click olayından sonra bir server function olsun. Ismini mesela serversetteleport koy. Bu fonksiyonu run on server olarak ayarla. Bu fonksiyonda teleport true ya dönsün. Böyle yapınca cĺient 'te olsa server da olsa orası server da çalışacak. Her halükarda server daki teleport değiştirilmiş olacak. Teleport değişkeni zaten replicated olduğu için cĺient doğru güncellemeyi serverdan alacak.
Not 1: O olayın çözülüş şekli tick araya girmesi falan tamamen bana ters ama oralara girmiyorum artık.
Not 2: Yine yapamazsan belki bir video ile gösteririm ama senin durumuna gelmesi uzun sürer hatta gelemem (bakınız not 1 :) ). Sadece sistemin nasıl çalıştığını anlatacak şekilde bir şey yapılabilir. Ama yukarıdaki anlatımım yeterli olacaktır diye tahmin ediyorum.
 
erginegider' Alıntı:
mrtcnaslnts' Alıntı:
Not olarak yazdığın beyaz çizgilerden kastını ve node ctrl w olayını anlayamadım. Ve Server fonksiyonu ile servere haber gönderme kısmını Nasıl yapcamı bilemedm. Aslında biliyor olabilirim ama kelime terim vs. olarak pek anlayamıyorm.

(Terimlere ve isimli anlatımlara pek aşina değilim aıkcası) :) Kaliteli videolarından kısacık bi bilgilendirme mutlu ederdi :D
Dostum kırmızı renkli olan node lar işlem başlangıcını ifade eder. Mesela senin onclick lerin gibi. Herhengi bir işlem burdan başlar. Bunların üzerinde pinler ve pinlerden çıkan ipler var diyelim. En üstteki pin herzaman beyaz ve üçgen oluyor. Bunlara execution pin deniyor. Bunlardan çıkıp diğer nodelara giden beyaz ipler de execution line deniyor. 
 Normalde kırmızı bir  node dan çıkan beyaz ipler ( sadece beyazlar da değil digerleride )başka kırmızı nın işlem arasına girildiğinde sorun çıkma ihtimali olur. Mesela orda kapı reset di sanırım bir kırmızı var buna başka bir yerden create widget tan bir şey geliyor branchtan baska bir yere gidiyor vb. Sende bunlardan dolayı ilk resimde gönderdiğin hataları alıyorsun.
Click olayından sonra bir server function olsun. Ismini mesela serversetteleport koy. Bu fonksiyonu run on server olarak ayarla. Bu fonksiyonda teleport true ya dönsün. Böyle yapınca cĺient 'te olsa server da olsa orası server da çalışacak. Her halükarda server daki teleport değiştirilmiş olacak. Teleport değişkeni zaten replicated olduğu için cĺient doğru güncellemeyi serverdan alacak.
Not 1: O olayın çözülüş şekli tick araya girmesi falan tamamen bana ters ama oralara girmiyorum artık.
Not 2: Yine yapamazsan belki bir video ile gösteririm ama senin durumuna gelmesi uzun sürer hatta gelemem (bakınız not 1 :) ). Sadece sistemin nasıl çalıştığını anlatacak şekilde bir şey yapılabilir. Ama yukarıdaki anlatımım yeterli olacaktır diye tahmin ediyorum.

Dediğin şekilde Clickden sonra bi server ekleyip Run on server yaptım ama yine yok
Artı yeni bi sorunla karşılaştım. Client1 kapıya gelince Ekrana gelen Onay Widget'i "Client 2"de de gözüküyor Kapıyla etkileşime girmediği halde. Deli çıkcam :)

Not 1: Virgül yok tam anlamadm. Yani tick kullanmam işi karmaşık hale mi getiriyor. Ve sen bu tarz sistemde Tick kullanmamayı tercih ediyorsun doğru mu anladım.


Farklı alternatifler deniyorum. Çok detaya girmedim Kabataslak  bişy yaptım ama bu kez de karakter teleport olmadı :)

 
mrtcnaslnts' Alıntı:
erginegider' Alıntı:
Dostum kırmızı renkli olan node lar işlem başlangıcını ifade eder. Mesela senin onclick lerin gibi. Herhengi bir işlem burdan başlar. Bunların üzerinde pinler ve pinlerden çıkan ipler var diyelim. En üstteki pin herzaman beyaz ve üçgen oluyor. Bunlara execution pin deniyor. Bunlardan çıkıp diğer nodelara giden beyaz ipler de execution line deniyor. 
 Normalde kırmızı bir  node dan çıkan beyaz ipler ( sadece beyazlar da değil digerleride )başka kırmızı nın işlem arasına girildiğinde sorun çıkma ihtimali olur. Mesela orda kapı reset di sanırım bir kırmızı var buna başka bir yerden create widget tan bir şey geliyor branchtan baska bir yere gidiyor vb. Sende bunlardan dolayı ilk resimde gönderdiğin hataları alıyorsun.
Click olayından sonra bir server function olsun. Ismini mesela serversetteleport koy. Bu fonksiyonu run on server olarak ayarla. Bu fonksiyonda teleport true ya dönsün. Böyle yapınca cĺient 'te olsa server da olsa orası server da çalışacak. Her halükarda server daki teleport değiştirilmiş olacak. Teleport değişkeni zaten replicated olduğu için cĺient doğru güncellemeyi serverdan alacak.
Not 1: O olayın çözülüş şekli tick araya girmesi falan tamamen bana ters ama oralara girmiyorum artık.
Not 2: Yine yapamazsan belki bir video ile gösteririm ama senin durumuna gelmesi uzun sürer hatta gelemem (bakınız not 1 :) ). Sadece sistemin nasıl çalıştığını anlatacak şekilde bir şey yapılabilir. Ama yukarıdaki anlatımım yeterli olacaktır diye tahmin ediyorum.

Dediğin şekilde Clickden sonra bi server ekleyip Run on server yaptım ama yine yok
Artı yeni bi sorunla karşılaştım. Client1 kapıya gelince Ekrana gelen Onay Widget'i "Client 2"de de gözüküyor Kapıyla etkileşime girmediği halde. Deli çıkcam :)

Not 1: Virgül yok tam anlamadm. Yani tick kullanmam işi karmaşık hale mi getiriyor. Ve sen bu tarz sistemde Tick kullanmamayı tercih ediyorsun doğru mu anladım.


Farklı alternatifler deniyorum. Çok detaya girmedim Kabataslak  bişy yaptım ama bu kez de karakter teleport olmadı :)


Hocam Tick kullanmanı gerektirecek durumlar sonra derece azdır. Tick son çaredir. Eğer bir işi tick ile yapmaya çalışıyorsan 100 90 ihtimalle yanlış gidiyorsundur. Tick her saniye 100 lerce kere çalışır. Tick kullanıyorsan her oyun karesinde yani gösterilen her karede saniyede 60 defa yapman gereken bir şey varsa onu yaparsın. Bu durumlar son derece sınırlıdır. Bir değişkenin değeri her an değişebilir diye düşünüp, değişirse Tick te yakalayım orda gereğini göreyim dersen eğer belki bütün level de sadece bir kere gerçekleşecek bir olay için her saniye 100 lerce kere o değişkeni kontrol etmiş olursun. Bu hem gereksiz bir karmaşa ve CPU gücü harcatır. Onun yerine düşünüş tarzın bu değer değiştiğinde şu iş yapılacak şeklinde olmalı. Bu değişkenin değişip değişmediğini tickte kontrol edeyim değiştiğinde yakalayıp işi yaptırayım değil. Senin durumda Tick fonksiyonu her saniye 100 lerce kere KapıReset ve Teleport fonksiyonlarını çalıştırıyor. Hadi onu da geçtim Teleport değişkenin değerini kontrol edecem derken pini te aşşağıda OnComponetBeginOverlap tan çektiğin için OnComponentBeginOverlap a kadar olan tüm işlemler de geriye doğru çalışıyor. Yani  ilk gönderdiğin resimdeki kodun tamamına yakını her tick te çalışıyor. Ama sen aslında sadece Teleport değişkenini kontrol etmek istiyorsun. O da sadece bir kere değişecek. Benim video mu izlediğinde düşünüş tarzımızın ne kadar farklı olduğunu anlayacaksındır.
  Peki bu tick fonksiyonu niye var o zaman ne işe yarar. Diyelim ki oyunda bir platform olsun. Bu platformun üzerine bineceğiz ve bizi bir yere götürecek. Rotasını bir eğri fonksiyonla belirlemek istiyoruz. Mesela diyoruz ki Y = time X sin(time+deltatime) gibi bir eğri yapmak istiyoruz. O zaman her tick te Y nin değerini elimdeki formüle göre hesab edip çıkan sonuca göre bir sonraki karede bu platform nerede olacak bulmalıyıım. Çünkü Platform sürekli hareket etmeli hiç durmamalı. 
  Ya da başka örnek diyelim ki levelde güneş şeklinde bir actor var. Karakterimiz bir vampir. Güneşe direk maruz kaldığında karakterin canı her salise 0.1 oranında gidecek. Ama oyun dinamik. Oyuncu içeri dışarı ağacın altına gölgeye güneşe sürekli koşup duruyor. O zaman tick fonksiyonunda her karede karakterimizin güneşe maruz kalıp kalmadığını bir linetrace ile kontrol etmemiz gerekebilir. Bu tarz her kare hesap gerektiren durumlar hariç tick fonksiyonu kullanmaya gerek yok. Sadece gerek yok değil kullanılmamalı. 
   İstediğin video da burda:

   https://drive.google.com/file/d/1LTOatlhGVHXQb_MUDRpSEoViFy2r-FjU/view?usp=sharing

  Kolay gelsin.