藍圖中,rpc是通過建立customevent(自定義事件)來建立的和設定它們成為replicate屬性。
rpc不能有返回值!所以函式不能建立它們。
replicates核取方塊可用於標記rpc是否可靠傳輸。勾選確保執行而不是丟失。
note:不要把所有rpc都標記成可靠的!(消耗資源還慢)
要在c++裡面用整個網路,你需要在標頭檔案裡#include "unrealnetwork.h"。
在c++中rpc相對容易建立,只需要在ufunction()巨集裡面新增特定引數。
-原始檔實現該函式的時候要加上『_implementation』。
-原始檔也要實現該函式的校驗函式,'_validate'為字尾。
另外兩種型別的rpc這樣建立:
客戶端rpc,必須標記為『reliable』或『unreliable』!
-多播rpc,也需標記為『reliable』或『unreliable』!
-當然,也能在rpc上加『reliable』關鍵字使它可靠。
校驗函式(c++)
驗證的思想是,如果rpc檢驗函式檢測到任何函式是錯誤的,可以立刻通知系統斷開客戶端/伺服器的連線。
校驗函式在每個伺服器rpc函式上都要實現。ufunction巨集裡面的withvalidation關鍵字就用來幹這個。
-乙個校驗函式的使用例子:
note:從客戶端到伺服器的rpc需要校驗函式來保證安全的伺服器rpc函式,並使新增**來檢查每個引數是否針對所有已知輸入約束有效變得盡可能容易!
擁有權ownership
理解所有權比較重要。
前面你已經看過了類似『客戶端擁有的actor』那個**(page 60)。
伺服器或者客戶端能『擁有』乙個actor。
playercontroller就是乙個例子,它被客戶端擁有。
另乙個例子是,在場景裡面生成/放置乙個門。這基本是伺服器擁有的。
但為什麼會這樣呢?
如果你再看一下這個**,你會注意到,例如,如果客戶端對不屬於自己的actor呼叫伺服器rpc,則伺服器rpc會丟失。
那麼客戶端就不能呼叫伺服器上的『server_opendoor』。
那怎麼解決?
我們使用客戶端實質擁有的actor類。這就是playercontroller發揮作用的地方。
因此,我們在playercontroller中建立伺服器rpc,讓伺服器呼叫門上的介面函式(例如:interaction()),而不是在門上啟用輸入並在那裡呼叫伺服器rpc。
如果門實現了正確的介面,那麼它將呼叫定義的邏輯,並期望正確地複製開啟/關閉狀態。
note:介面並非特定於多人遊戲,如果你不知道介面是什麼,我建議你先去了解下!
actors和他們所擁有的連線
正如類概述中提及過的,playercontroller是player實質擁有的第乙個類,但意味著什麼呢?
每個連線都有乙個專門為該連線建立的playercontroller。所有這個playercontroller被該連線擁有。
所以我們為確定乙個actor是否被某連線特定擁有,我們就查詢它最外層擁有者是不是乙個playercontroller,因為擁有playercontroller的連線就擁有該actor。
很簡單吧,不明白我就再舉個例子。
pawn/character類。被playercontroller擁有,此時playercontroller就獲得這個pawn的所有權。
意味著,擁有playercontroller就擁有這個pawn。
un-possessing將導致客戶端不再擁有這個pawn。
為什麼這個重要,我們要用它幹嘛?
1.rpc需要確定哪個客戶端將會執行 執行於客戶端上的rpc
2.確定actor的複製和連線相關的操作
3.涉及所有者actor屬性複製條件
你現在應該清楚從客戶端和伺服器呼叫的rpc是不同的,取決於這個rpc被哪個連線所擁有。
你也了解過條件複製了,(c++裡)變數只在特定條件下進行複製。
下面描述列表的相關性。
actor相關性和優先順序
相關性那麼什麼是相關性?我們需要相關性幹什麼?
設想一下,如果有款關卡/大地圖遊戲,那麼玩家相互之間可能顯得不那麼重要。
如果a合b相隔幾百公尺,那麼他們相互之間不需要可見。
為了提高頻寬,ue4只告訴當前客戶端它所能知道的相關集。
UE4外掛程式開發
for ue4 4.25.3 01 c 外掛程式 1 常用的外掛程式模板 blueprintlibrary 藍圖節點的c 實現 thirdpartylibrary 當外掛程式依賴第三發庫 lib dll 2 dll pdb檔案 dll是沒有除錯資訊的二進位制機器指令 pdb是dll 除錯資訊的檔案 ...
ue4玻璃材質 UE4 材質
本文中,我們將首先討論基於物理的渲染,什麼是材質域,什麼是材質,什麼是材質例項,什麼是主材質,我們將討論材質的一些建議和禁忌。最後,我們將了解一些材質概念,你可以將其用於各類專案中的材質。pbr 表示基於物理的渲染,基於物理的渲染意味著我們根據現實模擬光線,而不是根據主觀想法模擬光線。光線的最終效果...
ue4材質節點大全 UE4 材質
凹凸貼圖偏移 bumpoffset 是虛幻引擎4術語,就是通常所謂的 視差貼圖 bumpoffset表示式可以使材質產生深度錯覺,而不需要額外的幾何體。深度資訊。高度貼圖的值越亮,材質的 凸出 效果越明顯 當攝像機在表面上移動時,這些區域將產生視差 位移 較遠 其位移程度最小。在不改變原有模型面數的...