iT邦幫忙

2024 iThome 鐵人賽

DAY 5
0
佛心分享-SideProject30

使用unity 及 photon fusion 打造線上RTS遊戲系列 第 5

Day 5 Photon Fusion Host Mode 建立連線,Link Start !!!!

  • 分享至 

  • xImage
  •  

建立連線

Fusion有提供多種拓撲摸式,上篇講過這篇不在贅述,這次選擇的是Host Mode為基礎,後續的開發內容也是基於Host Mode,Host Mode 下僅有Server端擁有變更聯網物件的能力,相對Shared Mode更好控制,但在行為上較為繁複。

async Task GameStart( )
{
    var obj = new GameObject("gameRunner");
    var runner = obj.AddComponent<NetworkRunner>();
    var roomProperties = new Dictionary<string, SessionProperty>
    {
        { "ROOMNAME", "DefaultRoomName" },
    };

    var result = await runner.StartGame(new StartGameArgs()
    {
        SessionName = UnityEngine.Random.Range(1, 9999).ToString(), // Session名稱
        PlayerCount = 2, //最大人數
        GameMode = GameMode.AutoHostOrClient,  //連線模式
        IsVisible = true, //在Lobby 中是否可見
        IsOpen = true, // 能否加入
        SessionProperties = roomProperties //Session的額外屬性,目前僅有房間名稱
    });

    if (result.Ok)
    {
        //連線成功的動作
    }
}

上述的程式碼是建立一個連線,以及基本屬性設定,使用GameMode.AutoHostOrClient,自動處理是否為Host,倘諾已經有該session則會直接加入,如無的話則會建立一個新連線,倘諾僅需加入則只需有GameMode及SessionName。

    async Task JoinGame(string sessionName)
    {
        var obj = new GameObject("gameRunner");
        var runner = obj.AddComponent<NetworkRunner>();
        var result = await runner.StartGame(new StartGameArgs
        {
            GameMode = GameMode.AutoHostOrClient,
            SessionName = sessionName
        });
        if (result.Ok)
        {
            //連線成功的動作
        }
    }

但在這些方法下都需透過其他方法來獲得SessionName,Fusion中也有提供Lobby的功能,讓你無須四處走訪,也能獲得其他連線的SessionName,能夠更方便的建立諸如遊戲大廳的功能。

    async Task JoinLobby()
    {
        var obj = new GameObject("gameRunner");
        var runner = obj.AddComponent<NetworkRunner>();

        var result = await runner.JoinSessionLobby(SessionLobby.ClientServer);

    }

SessionLobby,可分為Shared跟ClientServer,主要是針對共享模式及伺服器/主機端模式做連線,也提供Custom選擇,只需要提供指定ID即可。

NetworkRunner功能

上面有多次使用到NetworkRunner這個組件,NetworkRunner是Photon Fusion 中的核心組件,許多功能都得經過他實現,如

  • 連線管理
  • 物件生成
  • 輸入處理
  • 狀態同步
  • 模擬運行

都要靠他運行,下篇介紹INetworkRunnerCallbacks,專門處理網路相關事件,以及獲取相關資訊。

引用來源

https://doc.photonengine.com/fusion/current/tutorials/host-mode-basics/2-setting-up-a-scene


上一篇
Day 4 Photon Fusion 連線模式
下一篇
#Day 6 Photon Fusion 事件處理
系列文
使用unity 及 photon fusion 打造線上RTS遊戲13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言