ue4 網絡初學筆記

目前對網絡理解還是比較混亂,有沒有高人有合適的文章,麻煩在評論區中貼出來,幫助我學習,謝謝

思想:

爲啥要有server 和 client,是爲了多人玩,多人交互,提高可玩性。

 

爲了安全性,一切邏輯判斷、決策、結果都有server處理。有了結果,怎麼把結果同步到client中呢,ue4有一套的框架來實現。

 

最終的目的是讓client的內容和server一樣。

 

 

 

1、一個actor 標記爲 replicates時 ,當runtime的時候 在server端場景中生成這個actor,就會自動同步到client上,client上也會生成同樣的這個actor。僅僅在runtime時 server端生成時,纔會同步,生成之後actor中各種參數變化不會自動同步。

 

2、

【server上動態生成和在level中放置好一個actor 這兩種效果是一樣的】

 

server  動態生成可同步的 a,那麼客戶端必然會自動生成一個b,a是authority  b是remote

在b中調用

multicast函數,只在本地執行

on server 函數 ,不執行,本地和server都不執行

on client 函數 ,只本地執行

在a中調用

multicast函數,服務器執行,並且同步到每個客戶端,每個客戶端分別執行

on server 函數 ,只服務器執行,不同步客戶端

on client 函數 ,只本地執行

 

那麼我的疑問來了

--client 的actor調用on server函數,按照我的理解應該會同步到server上,就是說server上的函數應該會被調用啊,但是實際上並沒有。這是爲啥

--難道在actor中真的客戶端就一點都不能調用服務器的函數嗎?那客戶端的按鍵觸摸屏怎麼反饋給服務器呢?難道只有playercontrol中能和服務器通信?

*******************************************************************************************************

動態生成時判斷authority,如果時remote就生成t,三個運行實例 server    client: a和b,則server中沒有t,a和b中分別有一個t,但是這兩個t完全獨立沒有任何同步關係,但是他倆都是authority這個有點難以理解。

 

 

 

3、actor中變量a設置爲replicated時,在runtime時,server的actor的a  就能同步到client中。前提是actor也得設置爲replicates

這個也是單向的只能服務器向client同步,client不能向server同步

 

4、actor中變量a設置爲RepNotify時,會自動創建OnRep_XXX函數,當a變量有變化時自動調用這個函數(client端也是如此)。同時client上的a變量會隨時被server同步。前提是actor也得設置爲replicates

這個也是單向的只能服務器向client同步,client不能向server同步

 

 

5、actor中函數b的同步,其實是custom event,function沒有同步選項。前提是actor也得設置爲replicates

multicast 同步到client

在server端運行a     actor的multicast 函數,則所有客戶端上的a  都會執行相應的 函數

在client運行a  actor的 multicast函數 ,則只在client端執行,同步不到服務器端

 

 

run on server 只能運行在server端,不會同步到client

在server端運行,不會同步到客戶端

在client運行,調用也不執行,既不在服務端運行也不在本地運行

 

 

run on owning client 只運行在client,就算server端強制調用也不會同步到客戶端

在服務器端運行,則只在服務端的本地actor運行一次

在客戶端運行

 

-----------------------------------------------------------------------------------------------------------------

未完待續

--------------------------------------------------------------------------------------------------------------

blueprint 版本 

createsession  joinsession openlevel servertravle 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章