目錄
多人游戲理論簡(jiǎn)單講解
點(diǎn)對(duì)點(diǎn):
于是,服務(wù)端和客戶端的概念出現(xiàn)了:
局域網(wǎng)連接:
從第三人稱c++項(xiàng)目開(kāi)始
創(chuàng)建項(xiàng)目:
以一個(gè)客戶端作為監(jiān)聽(tīng)服務(wù)器
3個(gè)客戶端,在場(chǎng)景后方使用服務(wù)器:
局域網(wǎng)連接:
藍(lán)圖
C++
多人游戲理論簡(jiǎn)單講解
點(diǎn)對(duì)點(diǎn):
什么是點(diǎn)對(duì)點(diǎn)?
比如兩個(gè)玩家,其移動(dòng)和攻擊,將數(shù)據(jù)互相傳輸,如圖:
但一旦多了一個(gè)玩家,比如玩家C的出現(xiàn),這樣就會(huì)導(dǎo)致大量的數(shù)據(jù)進(jìn)行傳輸:
網(wǎng)絡(luò)上面的數(shù)據(jù)大量傳輸只是一個(gè)原因。
更大的原因是3個(gè)玩家之間的游戲?qū)嵗?/strong>也是時(shí)時(shí)刻刻發(fā)生變化的,那么問(wèn)題來(lái)了,ABC應(yīng)該要遵循誰(shuí)的游戲?qū)嵗?/strong>呢?
也就是說(shuō)他們3個(gè)誰(shuí)也無(wú)法說(shuō)服誰(shuí),沒(méi)有人知道誰(shuí)是真正的權(quán)威【作為主要的游戲?qū)嵗?/p>
于是,服務(wù)端和客戶端的概念出現(xiàn)了:
通過(guò)獲取的【假設(shè)是移動(dòng)】,復(fù)制給其他客戶端,從而刷新。
除此之外,是服務(wù)器的機(jī)器是專門用來(lái)處理數(shù)據(jù),而沒(méi)有進(jìn)行圖片渲染,之后將處理的數(shù)據(jù)給各個(gè)客戶端的。
局域網(wǎng)連接:
連接本地的同一個(gè)局域網(wǎng)的幾個(gè)玩家:
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-417929.html
從第三人稱c++項(xiàng)目開(kāi)始
創(chuàng)建項(xiàng)目:
進(jìn)入之后:
以一個(gè)客戶端作為監(jiān)聽(tīng)服務(wù)器
將玩家數(shù)量改為2,然后以監(jiān)聽(tīng)服務(wù)器運(yùn)行
所以如果將玩家數(shù)量改為3,就會(huì)看見(jiàn)3代同框:
3個(gè)客戶端,在場(chǎng)景后方使用服務(wù)器:
局域網(wǎng)連接:
藍(lán)圖
創(chuàng)建一個(gè)地圖,作為等待房間:
?
就基礎(chǔ)的basic地圖,這個(gè)地圖將是玩家通過(guò)連接之后前往的地圖
然后我們對(duì)第三人稱的藍(lán)圖進(jìn)行更改:
第一個(gè)的意思是你打開(kāi)了waitmap,然后作為listen監(jiān)聽(tīng)服務(wù)端【就是說(shuō)你即是服務(wù)端又是客戶端】
第二個(gè)的意思是你通過(guò)控制臺(tái)進(jìn)入第一個(gè)的ip地址的關(guān)卡?!?strong>Open+空格+你的ip地址
】
假如你擁有兩個(gè)電腦【真的有將游戲打包給另一臺(tái)電腦即可】,那么,作為服務(wù)器的電腦按下1,進(jìn)入等待房間,客戶端的電腦這個(gè)時(shí)候按下2即可進(jìn)入1所在的等待房間。
這里兩者就可以在一起行動(dòng)了。
Ip地址的查看
查看自己的ip地址,打開(kāi)cmd,然后輸入ipconfig
然后在這里看你的ip地址:
?
C++
首先我們制作函數(shù),如果不知道怎么做的看這個(gè):
ue4/5藍(lán)圖與c++混用基礎(chǔ)入門的基礎(chǔ)操作(適合有藍(lán)圖基礎(chǔ)和c++基礎(chǔ)的新手,創(chuàng)建自己的藍(lán)圖)_ue4藍(lán)圖和c++混合開(kāi)發(fā)_多方通行8的博客-CSDN博客
然后在角色的頭文件里面:
添加這幾個(gè)函數(shù):
代碼:
//打開(kāi)等待關(guān)卡
UFUNCTION(BlueprintCallable)
void openWaitMap();
//進(jìn)入等待關(guān)卡
UFUNCTION(BlueprintCallable)
void intoWaitMap(const FString& Address);
UFUNCTION(BlueprintCallable)
void CallClientToMap(const FString& Address);
之后在cpp中實(shí)現(xiàn):
代碼:
void AMorePersonTestCharacter::openWaitMap()
{
//創(chuàng)建并獲取世界
UWorld* world = GetWorld();
//判斷世界是否有效
if (world)
{
//打開(kāi)等待關(guān)卡,變成監(jiān)聽(tīng)
world->ServerTravel("/Game/Map/WaitMap?listen");
}
}
void AMorePersonTestCharacter::intoWaitMap(const FString& Address)
{
//需要這個(gè)#include "Kismet/GameplayStatics.h"頭文件
//這里的*Address是c風(fēng)格字符串
UGameplayStatics::OpenLevel(this, *Address);
}
void AMorePersonTestCharacter::CallClientToMap(const FString& Address)
{
//創(chuàng)建控制器并找到賦予
APlayerController* playerControlRef= GetGameInstance()->GetFirstLocalPlayerController();
//判斷是否有效
if (playerControlRef)
{
playerControlRef->ClientTravel(Address,ETravelType::TRAVEL_Absolute);
}
}
?之后來(lái)到藍(lán)圖中調(diào)用就是:
這里的地址只需要輸入ip即可。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-417929.html
?
到了這里,關(guān)于UE4/5多人游戲詳解(一、基礎(chǔ)理論與局域網(wǎng)內(nèi)部的連接)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!