Important: UNet adalah solusi yang diuraikan, dan Solusi Multiplayer baru dan NetworkingSistem Unity yang memungkinkan game multiplayer di jaringan komputer. More info Lihat di Glossary (Netcode untuk GameObjects) sedang berkembang. Untuk informasi lebih lanjut dan langkah selanjutnya melihat informasi di . |
Banyak permainan multiplayer dapat menggunakan Network ManagerA Networking component that manages the network state of a project. More info
See in Glossary untuk mengelola koneksi, tetapi Anda juga dapat menggunakan kelas NetworkServer tingkat rendah dan kelas NetworkClient langsung.
Saat menggunakan API, setiap pertandingan harus memiliki server host untuk terhubung ke. Setiap peserta dalam permainan multiplayer dapat menjadi klien, server khusus, atau kombinasi server dan klien pada saat yang sama. Peran kombinasi ini adalah kasus umum dari permainan multiplayer tanpa dedicated server.
Untuk game multiplayer tanpa dedicated server, salah satu pemain yang menjalankan permainan bertindak sebagai server untuk permainan itu. Contoh pemain dari permainan berjalan "klien lokal" bukan klien jarak jauh normal. Klien lokal menggunakan Unity ScenesAdegan berisi lingkungan dan menu permainan Anda. Pikirkan setiap file Adegan unik sebagai tingkat yang unik. Di setiap Adegan, Anda menempatkan lingkungan, hambatan, dan dekorasi, pada dasarnya merancang dan membangun permainan Anda dalam potongan-potongan. More info
Lihat di Glossary yang sama dan GameObjectsObjek mendasar dalam adegan Unity, yang dapat mewakili karakter, props, pemandangan, kamera, waypoints, dan banyak lagi. Fungsi GameObject didefinisikan oleh Komponen yang melekat padanya. More info
Lihat di Glossary sebagai server, dan berkomunikasi secara internal menggunakan antrian pesan bukan mengirim pesan di jaringan. Untuk kode dan sistem HLAPI, klien lokal hanya klien lain, sehingga hampir semua kode pengguna sama, apakah klien lokal atau remote. Ini memudahkan untuk membuat permainan yang bekerja dalam mode multiplayer dan standalone dengan kode yang sama.
Pola umum untuk game multiplayer adalah memiliki GameObject yang mengelola keadaan jaringan permainan. Di bawah ini adalah awal dari skrip NetworkManager. Script ini akan dilampirkan ke GameObject yang ada di adegan awal permainan. Ini memiliki fungsi penanganan UI(User Interface) Memungkinkan pengguna untuk berinteraksi dengan aplikasi Anda. Unity saat ini mendukung tiga sistem UI. More info
Lihat di Glossary dan keyboard sederhana yang memungkinkan permainan untuk memulai dalam mode jaringan yang berbeda. Sebelum Anda melepaskan permainan Anda, Anda harus membuat menu yang lebih menarik secara visual, dengan opsi seperti "Mulai permainan pemain tunggal" dan "Mulai permainan multiplayer".
using UnityEngine;
using UnityEngine.Networking;
public class MyNetworkManager : MonoBehaviour {
public bool isAtStartup = true;
NetworkClient myClient;
void Update ()
{
if (isAtStartup)
{
if (Input.GetKeyDown(KeyCode.S))
{
SetupServer();
}
if (Input.GetKeyDown(KeyCode.C))
{
SetupClient();
}
if (Input.GetKeyDown(KeyCode.B))
{
SetupServer();
SetupLocalClient();
}
}
}
void OnGUI()
{
if (isAtStartup)
{
GUI.Label(new Rect(2, 10, 150, 100), "Press S for server");
GUI.Label(new Rect(2, 30, 150, 100), "Press B for both");
GUI.Label(new Rect(2, 50, 150, 100), "Press C for client");
}
}
}
Fungsi pengaturan panggilan kode dasar ini untuk mendapatkan hal-hal yang terjadi. Di bawah ini adalah fungsi pengaturan sederhana untuk setiap skenario. Fungsi ini membuat server, atau jenis klien yang tepat untuk setiap skenario. Perhatikan bahwa klien jarak jauh mengasumsikan server pada mesin yang sama (127.0.0.1). Untuk permainan selesai ini akan menjadi alamat internet, atau sesuatu yang disediakan oleh Sistem pencocokan.
// Create a server and listen on a port
public void SetupServer()
{
NetworkServer.Listen(4444);
isAtStartup = false;
}
// Create a client and connect to the server port
public void SetupClient()
{
myClient = new NetworkClient();
myClient.RegisterHandler(MsgType.Connect, OnConnected);
myClient.Connect("127.0.0.1", 4444);
isAtStartup = false;
}
// Create a local client and connect to the local server
public void SetupLocalClient()
{
myClient = ClientScene.ConnectLocalServer();
myClient.RegisterHandler(MsgType.Connect, OnConnected);
isAtStartup = false;
}
Klien dalam kode ini mendaftarkan fungsi callback untuk acara koneksi MsgType.Connect. Ini adalah pesan bawaan dari HLAPI bahwa skrip membentang ketika klien terhubung ke server. Dalam hal ini, kode untuk handler pada klien adalah:
// client function
public void OnConnected(NetworkMessage netMsg)
{
Debug.Log("Connected to server");
}
Ini cukup untuk mendapatkan aplikasi multiplayer dan berjalan. Dengan skrip ini Anda kemudian dapat mengirim pesan jaringan menggunakan Login Sitemap dan JaringanServer.SendToAll. Perhatikan bahwa mengirim pesan adalah cara tingkat rendah berinteraksi dengan sistem.