无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

UE4/5 實現(xiàn)多人聯(lián)機的經(jīng)驗教訓

2023-06-24 23:49 作者:Jenkins_Gage  | 我要投稿

我花了半個多月給已經(jīng)發(fā)售了的Koler突然加入多人聯(lián)機功能,重置了幾乎所有的Gameplay邏輯,踩了好多的坑。如果你也想給游戲加多人聯(lián)機那最好也參考一下我的經(jīng)驗教訓。

1. 盡可能早地去考慮多人聯(lián)機相關功能的實現(xiàn)

只要有那么一點可能性那你就應該在項目一開始的時候就著手這些網(wǎng)絡功能。這句話是寫在ue網(wǎng)絡文檔一開始的地方的,可見有多重要,不然到頭來重構的時候感覺像是在屎山蹦迪。

2. 和網(wǎng)絡相關的實現(xiàn)絕對不要用TMap(Dictionary)這種數(shù)據(jù)結構

Koler里的屬性系統(tǒng)大量地用了TMap,但是TMap不支持Replicate,我在論壇上翻的時候看見Tim Sweeney說他在1999年的時候就在考慮這個實現(xiàn)了,但是到現(xiàn)在都還沒支持,可見有多坑了。就算是在RPC里你確實可以拿TMap當作參數(shù)傳遞,但是它有時候會被直接drop掉,服務器根本收不到client發(fā)的TMap。如果你真的需要用TMap,那我建議你自己寫個結構體放兩個數(shù)組,一個放key一個放value然后去replicate這個結構體(結構體里也不支持TMap的)。

3. 對于超大數(shù)組應該考慮用Fast Array Replication(FFastArraySerializer)

普通的TArray在很大的時候,如果其中某個元素改變了,那它可能是不會replicate的,這時候你該用FFastArraySerializer。

4. Steam Sockets 在ue4.26里 用戶無法正常通過steam網(wǎng)絡來加入一個session

我用steam sockets可以正常創(chuàng)建session,也可以被steam網(wǎng)絡找到,但是加入不了(log里的原因記不清了反正沒找到解決方法),最后是通過換成老的steam net driver才能正常加入session的(但是ping這個session時又有問題了,ping值9999。我在網(wǎng)上查了這個問題,epic那邊反饋是steam那邊的問題所以他們不管了)

5. 避免在多人聯(lián)機游戲里用Load Level Instance

Server上調(diào)用Load Level Instance后Client是看不見的。就算你multicast給所有人,每個人的level instance里的actor也都不是replicate的,找不到同步的方法,解決方法無。


UE4/5 實現(xiàn)多人聯(lián)機的經(jīng)驗教訓的評論 (共 條)

分享到微博請遵守國家法律
普兰店市| 广汉市| 海口市| 固始县| 玛多县| 象山县| 铜陵市| 翁源县| 凭祥市| 淳安县| 济阳县| 定兴县| 龙胜| 兰州市| 当阳市| 大石桥市| 石楼县| 中山市| 松江区| 惠来县| 大新县| 普兰店市| 白沙| 礼泉县| 西青区| 大港区| 南康市| 英超| 普安县| 三台县| 兴国县| 韶关市| 韩城市| 秦安县| 磐石市| 钦州市| 西乡县| 林州市| 宁武县| 广安市| 九江县|