UE4聯網開發翻譯(七)

2021-09-24 23:52:11 字數 2864 閱讀 2537

藍圖中,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表示式可以使材質產生深度錯覺,而不需要額外的幾何體。深度資訊。高度貼圖的值越亮,材質的 凸出 效果越明顯 當攝像機在表面上移動時,這些區域將產生視差 位移 較遠 其位移程度最小。在不改變原有模型面數的...