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 . |
Halaman ini berisi ikhtisar hal-hal yang paling dasar dan umum yang Anda butuhkan saat mengatur proyek multiplayer. Dalam hal apa yang Anda butuhkan dalam proyek Anda, ini adalah:
A Network Manager
A user interface (untuk pemain untuk menemukan dan bergabung permainan)
Jaringan Player Prefabs (untuk pemain untuk mengontrol)
ScriptsSepotong kode yang memungkinkan Anda untuk membuat Komponen Anda sendiri, memicu peristiwa permainan, memodifikasi sifat komponen dari waktu ke waktu dan menanggapi input pengguna dengan cara apa pun yang Anda sukai. More info
Lihat di Glossary 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 yang multiplayer-aware
Ada variasi pada daftar ini; misalnya, dalam permainan catur multiplayer, atau strategi real-time (RTS) permainan, Anda tidak perlu GameObject yang terlihat untuk mewakili pemain. Namun, Anda mungkin masih ingin GameObject kosong yang tak terlihat untuk mewakili pemain, dan melampirkan skrip ke dalamnya yang berkaitan dengan apa pemain dapat dilakukan.
Halaman pengantar ini berisi deskripsi singkat dari setiap item yang tercantum di atas. Namun, setiap bagian link ke dokumentasi yang lebih rinci, yang perlu Anda terus membaca sepenuhnya memahaminya.
Ada juga beberapa konsep penting yang perlu Anda pahami dan membuat pilihan saat membangun permainan Anda. Konsep ini dapat secara luas dirangkum sebagai:
Hubungan antara client, server, dan ruang host%
Ide dari GameObjects authority over
Untuk mempelajari konsep ini, lihat dokumentasi pada Konsep Sistem Jaringan.
Jaringan Manajer bertanggung jawab untuk mengelola aspek jaringan dari permainan multiplayer Anda. Anda harus memiliki satu (dan hanya satu) Jaringan Manajer aktif dalam SceneAdegan 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 Anda pada waktu.
Komponen Network Manager built-in Unity membungkus semua fitur untuk mengelola permainan multiplayer Anda menjadi satu komponen. Jika Anda memiliki persyaratan khusus yang tidak tercakup oleh komponen ini, Anda dapat menulis manajer jaringan Anda sendiri di skrip bukan menggunakan komponen ini. Jika Anda baru memulai dengan game multiplayer, Anda harus menggunakan komponen ini.
Untuk mempelajari lebih lanjut, lihat dokumentasi pada Jaringan ManajerKomponen Jaringan yang mengelola state jaringan proyek. More info
Lihat di Glossary.
Hampir setiap permainan multiplayer menyediakan pemain dengan cara untuk menemukan, membuat, dan bergabung dengan permainan individu "instances" (juga dikenal sebagai "matches"). Bagian permainan ini umumnya dikenal sebagai "lobby", dan kadang-kadang memiliki fitur tambahan seperti obrolan.
Unity memiliki versi built-in yang sangat dasar dari antarmuka seperti itu, disebut NetworkManagerHUDLogin Komponen jaringan yang membuat menu UI yang memungkinkan Anda untuk mengontrol keadaan jaringan permainan Anda menggunakan Manajer Jaringan Anda. More info
Lihat di Glossary. Hal ini dapat sangat berguna dalam tahap awal untuk menciptakan permainan Anda, karena memungkinkan Anda untuk dengan mudah membuat pertandingan dan menguji permainan Anda tanpa perlu menerapkan UI(User Interface) Memungkinkan pengguna untuk berinteraksi dengan aplikasi Anda. Unity saat ini mendukung tiga sistem UI. More info
Lihat di Glossary Anda sendiri. Namun, sangat dasar dalam kedua fungsi dan desain visual, sehingga Anda harus mengganti ini dengan UI Anda sendiri sebelum Anda menyelesaikan proyek Anda.
Untuk mempelajari lebih lanjut, lihat dokumentasi pada Jaringan Manajer HUD.
Kebanyakan game multiplayer memiliki beberapa jenis objek yang dapat dikendalikan pemain, seperti karakter, mobil, atau sesuatu yang lain. Beberapa game multiplayer tidak fitur satu terlihat "player objectObjek API Tingkat Tinggi (HPAPI) yang mewakili pemain di server dan memiliki kemampuan untuk menjalankan perintah (yang mengamankan panggilan prosedur jarak jauh klien-to-server) dari klien pemain. More info
Lihat di Glossary" tetapi sebaliknya memungkinkan pemain untuk mengontrol banyak unit atau item, seperti dalam kait atau game strategi real-time. Lainnya bahkan tidak memiliki objek khusus sama sekali, seperti permainan lukisan bersama-canvas. Dalam semua situasi ini, namun, Anda biasanya perlu membuat GameObject bahwa conceptuallyre mewakili pemain dalam permainan Anda. Membuat GameObject ini PrefabJenis aset yang memungkinkan Anda untuk menyimpan GameObject lengkap dengan komponen dan properti. Prefab bertindak sebagai template dari mana Anda dapat membuat instance objek baru di tempat kejadian. More info
Lihat di Glossary, dan melampirkan semua skrip untuk itu yang mengontrol apa pemain dapat dilakukan dalam permainan Anda.
Jika Anda menggunakan komponen Manajer Jaringan Unity (lihat Jaringan Manajer, di atas), menetapkan Prefab ke bidang Player Prefab.
Ketika permainan berjalan, Network Manager menciptakan salinan (selain") dari pemain Anda Prefab untuk setiap pemain yang terhubung ke pertandingan.
Namun - dan ini adalah di mana itu bisa mendapatkan membingungkan bagi orang-orang baru untuk pemrograman multiplayer - Anda perlu memastikan skrip pada instance pemain Anda Prefab adalah "perawatan" apakah pemain mengendalikan instance menggunakan komputer host (komputer yang mengelola permainan) atau komputer client (komputer yang berbeda untuk yang mengelola permainan).
Ini karena kedua situasi akan terjadi pada saat yang sama.
Script menulis untuk permainan multiplayer berbeda untuk menulis skrip untuk permainan pemain tunggal. Ini karena ketika Anda menulis skrip untuk permainan multiplayer, Anda perlu memikirkan konteks yang berbeda bahwa skrip berjalan. Untuk mempelajari konsep jaringan yang dibahas di sini, lihat dokumentasi pada Konsep Sistem Jaringan.
Misalnya, skrip yang Anda tempatkan pada pemain Anda Prefab harus memungkinkan "pemilik" dari kasus pemain untuk mengontrolnya, tetapi seharusnya tidak memungkinkan orang lain untuk mengendalikannya.
Anda perlu berpikir tentang apakah server atau klien memiliki wewenang atas apa skrip. Kadang-kadang, Anda ingin script untuk berjalan di server dan klien. Kali-waktu lain, Anda hanya ingin script untuk berjalan di server, dan Anda hanya ingin klien untuk meniru bagaimana GameObjects bergerak (misalnya, dalam permainan di mana pemain mengambil GameObjects yang dapat dikumpulkan, script hanya harus dijalankan pada server sehingga server dapat menjadi otoritas pada jumlah GameObjects yang dikumpulkan).
Tergantung pada skrip Anda, Anda perlu memutuskan bagian mana dari skrip Anda harus aktif dalam situasi mana.
Untuk pemain GameObjects, setiap orang biasanya memiliki kontrol aktif atas instance pemain mereka sendiri. Ini berarti setiap klien memiliki otoritas lokal atas pemainnya sendiri, dan server menerima apa yang dikatakan klien tentang apa yang dilakukan pemain.
Untuk GameObjects non-pemain, server biasanya memiliki wewenang atas apa yang terjadi (seperti apakah item telah dikumpulkan), dan semua klien menerima apa server memberi tahu mereka tentang apa yang terjadi pada GameObject.