2015-12-31 50 views
5

Tôi đang phát triển MMORPG cơ bản bằng công cụ Unity. Tôi cần một giải pháp đơn giản (thư viện, khung công tác) để tạo một máy chủ hiệu quả. Cách tốt nhất để hoàn thành nhiệm vụ này là gì?Máy chủ phụ trợ cho Unity3D MMORPG

Trả lời

8

Bài đăng gốc là here.

  1. Bạn có thể thử SmartFox, link này có thể là một khởi đầu tốt cho bạn. Dưới đây hướng dẫn cũng rất hữu ích cho một sự khởi đầu nhanh chóng:

Cụ thể, bạn có thể kết nối đến máy chủ smartfox và nhận được thông báo về kết nối:

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);    

đăng nhập và nhận nối khi đăng nhập thành công:

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 là một phổ biến máy chủ backend/dịch vụ.

Máy chủ Photon cung cấp cho bạn khung công tác chìa khóa trao tay cho trò chơi nhiều người chơi. Bắt đầu từ đầu hoặc xây dựng logic tùy chỉnh của riêng bạn trên một số ứng dụng demo có trong mã nguồn với SDK máy chủ miễn phí. Điều này cho phép bạn đạt được kết quả tuyệt vời nhanh chóng và dễ dàng.

Đoạn mã cho kết nối thiết lập:

using UnityEngine; 

public class RandomMatchmaker : MonoBehaviour 
{ 
    void Start() { 
     PhotonNetwork.ConnectUsingSettings("0.1"); 
    } 

    void OnGUI(){ 
     GUILayout.Label(PhotonNetwork.connectionStateDetailed.ToString()); 
    } 
} 

Đoạn mã cho tham gia phòng/sảnh: snippet

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

Mã cho thiết lập đăng nhập:

PhotonNetwork.logLevel = PhotonLogLevel.Full; 

Đoạn mã cho xử lý lỗi:

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

Hướng dẫn tốt về chủ đề này có thể được tìm thấy here.


3. Firebase có thể là sự lựa chọn thứ 3, mặc dù việc thực hiện được cho là không rõ ràng.

  • Ví dụ: trong roll20.net, bạn có thể tìm thấy trò chơi MMO được hỗ trợ bởi Firbase.
  • Trong số những người khác, FireSharp có thể là một dự án nguồn mở rất hữu ích để bạn bắt đầu nhanh chóng.

4. Khác (OpenSpace, RedDwarf, ElectroServer, Player.IO, Red5, Mesmotronic đa người dùng máy chủ, vv)

Xem great post này để biết chi tiết.

+0

Cảm ơn bạn, tôi sẽ cố gắng –

+0

Firebase tuyệt vời cho một số trò chơi, nhưng sau khi tham khảo nhóm hỗ trợ, họ xác nhận nó không được thiết kế cho trò chơi bắn súng hoặc dữ liệu vị trí theo thời gian thực. Tuy nhiên, nếu bạn không cần dữ liệu vị trí theo thời gian thực, hãy thử Firebase. API rất đơn giản và hỗ trợ đáp ứng. – Crashalot

Các vấn đề liên quan