【问题标题】:Backend server for Unity3D MMORPGUnity3D MMORPG 的后端服务器
【发布时间】:2015-12-31 18:04:49
【问题描述】:

我正在使用 Unity 引擎开发一个基本的 MMORPG。 我需要一个简单的解决方案(库、框架)来制作高效的服务器。 完成这项任务的最佳方法是什么?

【问题讨论】:

    标签: unity3d server backend


    【解决方案1】:

    原帖是here

    1. 你可以试试SmartFox,这个link可能是你的一个好的开始。以下教程也有助于快速入门:

    具体来说,您可以连接到 smartfox 服务器并在连接时收到通知:

    private SmartFox client;
    private string serverIP = "127.0.0.1";
    private int serverPort = 9933;  
    private string zone = "BasicExamples";
    
    client = new SmartFox();           
    client.ThreadSafeMode = false; //true for Unity3D
    client.AddEventListener(SFSEvent.CONNECTION, (evt) =>
            {
                bool bSuccess = (bool)evt.Params[“success”];
                Console.WriteLine(client.IsConnected ?
                    “Successfully connected to SmartFox Server” :
                    “Failed to connect to SmartFox Server”);
            });           
    client.Connect(serverIP, serverPort);            
    

    登录成功后上钩:

    var request = new LoginRequest("UserName", "Password", zone);  //[1]
    client.Send(request);                                          //[2]
    
    client.AddEventListener(SFSEvent.LOGIN, (evt) => {             //[3]
                Console.WriteLine("The User login success");       
    });
    
    client.Connect(serverIP, serverPort);   
    

    2。 Photon 是另一个流行的后端服务器/服务。

    Photon Server 为您提供多人游戏的交钥匙框架。使用免费的服务器 SDK 从头开始​​或在源代码中包含的几个演示应用程序之上构建您自己的自定义逻辑。这使您可以快速轻松地获得出色的结果。

    用于设置连接的代码 sn-p:

    using UnityEngine;
    
    public class RandomMatchmaker : MonoBehaviour
    {
        void Start() {
            PhotonNetwork.ConnectUsingSettings("0.1");
        }
    
        void OnGUI(){
           GUILayout.Label(PhotonNetwork.connectionStateDetailed.ToString());
        }
    } 
    

    加入房间/大厅的代码 sn-p:

    public override void OnJoinedLobby()
    {
        PhotonNetwork.JoinRandomRoom();
    }
    

    用于设置日志记录的代码 sn-p:

    PhotonNetwork.logLevel = PhotonLogLevel.Full;
    

    用于错误处理的代码 sn-p:

    void OnPhotonRandomJoinFailed()
    {
        Debug.Log("Can't join random room!");
        PhotonNetwork.CreateRoom(null);
    }
    

    可以在here找到关于这个主题的一个很好的教程。


    3. Firebase 可能是第 3 选择,尽管性能尚不清楚。

    • 例如,在roll20.net,您可能会发现由 Firbase 提供支持的 MMO 游戏。
    • 其中,FireSharp 可能是一个非常有用的开源项目,可让您快速入门。

    4.其他(OpenSpace、RedDwarf、ElectroServer、Player.IO、Red5、Mesmotronic Multiuser Server 等)

    详情请见great post

    【讨论】:

    • Firebase 非常适合某些游戏,但在咨询了他们的支持团队后,他们确认它不是为触发游戏或需要实时位置数据的游戏而设计的。但是,如果您不需要实时位置数据,一定要试试 Firebase。非常简单的 API 和响应式支持。
    猜你喜欢
    • 2013-04-22
    • 2023-04-08
    • 2014-11-25
    • 2015-06-07
    • 1970-01-01
    • 2012-07-11
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多