Unity Mirror - Genel

Unity Mirror - Genel

Unity Mirror - Genel

Mirror, Unity oyunları için çok oyunculu yetenekler oluşturmak için bir sistemdir. Alt düzey iletişim gerçek zamanlı iletişim katmanının üzerine inşa edilmiş olup, çok oyunculu oyunlar için gereken birçok ortak görevi ele alır. İletişim katmanı her türlü ağ topolojisini desteklerken, Mirror sunucu otoriter bir sistemdir. Bir katılımcının aynı anda istemci ve sunucu olmasına izin verir, bu nedenle ayrılmış bir sunucu süreci gerektirmez. İnternet hizmetleriyle birlikte çalışarak, bu çok oyunculu oyunların geliştiricilerden az çalışma ile internet üzerinden oynanmasına olanak tanır.

Mirror, kullanım kolaylığına ve iteratif geliştirmeye odaklanmış olup, şu gibi çok oyunculu oyunlar için yararlı işlevsellik sağlar:
  1. İleti işleyicileri
  2. Genel amaçlı yüksek performanslı seri hale getirme
  3. Dağıtılmış nesne yönetimi
  4. Durum eşitleme
  5. Ağ sınıfları: Sunucu, İstemci, Bağlantı vb. 
Mirror, işlevsellik ekleyen bir dizi katmandan oluşur.

Mirror Katmanlar

Mirror çok oyunculu oyunlar şunları içerir: 

Sunucu 

Sunucu, bir araya gelip birlikte oynamak isteyen diğer oyuncuların bağlandığı oyunun bir örneğidir. Sunucu genellikle puanları tutma gibi oyunun çeşitli yönlerini yönetir ve bu verileri istemciye ileterek aktarır. 

İstemciler 

İstemciler genellikle farklı bilgisayarlardan sunucuya bağlanan oyunun örnekleridir. 
İstemciler yerel ağ üzerinden veya çevrimiçi olarak bağlanabilir. 

İstemci, diğer insanlarla birlikte oyunu oynamak için sunucuya bağlanan oyunun bir örneğidir. 

Sunucu ya "ayrılmış sunucu" ya da "ana sunucu" olabilir. 

Ayrılmış sunucu 

Bu, sadece sunucu olarak hareket etmek için çalışan bir oyun örneğidir. 

Ana sunucu 

Ayrılmış bir sunucu olmadığında, istemcilerden biri aynı zamanda sunucu rolünü de üstlenir. Bu istemci "ana sunucu" olarak adlandırılır. Ana sunucu, sunucu ve istemci olarak hareket eden tek bir oyun örneği (ana bilgisayar) oluşturur. 

Aşağıdaki diyagram, çok oyunculu bir oyunda üç oyuncuyu temsil eder. 
Bu oyunda, bir istemci aynı zamanda ana sunucu olarak hareket etmektedir, yani istemci kendisi "yerel istemci" dir. Yerel istemci, ana sunucuya bağlanır ve her ikisi de aynı bilgisayarda çalışır. Diğer iki oyuncu uzak istemcilerdir - yani farklı bilgisayarlarda ana sunucuya bağlanmışlardır."

Mirror Host Client

Ana bilgisayar, aynı anda sunucu ve istemci olarak hareket eden oyunun tek bir örneğidir. Ana bilgisayar, yerel istemci iletişimi için özel bir tür dahili istemci kullanırken, diğer istemciler uzak istemcilerdir. Yerel istemci, aynı işlemde olduğu için sunucu ile doğrudan işlev çağrıları ve ileti sıraları aracılığıyla iletişim kurar. Aslında, sahneyi sunucuyla paylaşır. Uzak istemciler, düzenli bir ağ bağlantısı üzerinden sunucu ile iletişim kurar. Mirror kullanıldığında, tüm bunlar otomatik olarak yönetilir.

Çok oyunculu sistemlerin amaçlarından biri, yerel istemciler ve uzak istemciler için kodun aynı olmasıdır, böylece oyununuzu geliştirirken çoğu zaman yalnızca bir tür istemci üzerinde düşünmeniz yeterlidir. Çoğu durumda, Mirror bu farkı otomatik olarak yönetir, bu nedenle kodunuzun yerel bir istemci veya uzak bir istemcide çalışması arasındaki farkı düşünmeniz nadiren gerekir.

Instantiate ve Spawn

Unity'de tek oyunculu bir oyun yaparken genellikle GameObject.Instantiate yöntemini kullanarak çalışma zamanında yeni oyun nesneleri oluşturursunuz. Ancak çok oyunculu bir sistemde, sunucu kendisi ağ tabanlı oyunda etkin olmaları için oyun nesnelerini "oluşturmalıdır". Sunucu oyun nesnelerini oluşturduğunda, bağlı istemcilerde oyun nesnelerinin oluşturulmasını tetikler. Oluşturma sistemi, oyun nesnesinin yaşam döngüsünü yönetir ve oyun nesnesini nasıl ayarladığınıza bağlı olarak oyun nesnesinin durumunu senkronize eder.

Ağ tabanlı nesne oluşturma ve spawn işlemleriyle ilgili daha fazla ayrıntı için "GameObject'lerin Oluşturulması" belgelerine bakabilirsiniz.

Oyuncular ve Yerel Oyuncular

Mirror, oyuncu oyun nesnelerini diğer oyun nesnelerinden farklı şekilde işler. Bir yeni oyuncu oyunu (bir yeni istemci sunucuya bağlandığında) oyuncunun oyun nesnesi, o oyuncunun istemcisi üzerinde "yerel oyuncu" oyun nesnesi haline gelir ve Mirror, oyuncunun bağlantısını oyuncunun oyun nesnesiyle ilişkilendirir. Mirror, oyunu oynayan her kişi için bir oyuncu oyun nesnesini ilişkilendirir ve ağ komutlarını ilgili oyuncu oyun nesnesine yönlendirir. Bir oyuncu, yalnızca kendi oyun nesnesi üzerinde bir komut çağrısı yapabilir, başka bir oyuncunun oyun nesnesi üzerinde değil.

Daha fazla ayrıntı için "Player GameObjects" belgelerine bakabilirsiniz.

Yetkilendirme

Sunucu ve istemciler, bir oyun nesnesinin davranışını yönetebilirler. "Yetkilendirme" kavramı, bir oyun nesnesinin nasıl ve nerede yönetildiğiyle ilgilidir. Mirror, varsayılan olarak "sunucu yetkilendirme" üzerine kuruludur, yani sunucu tüm oyun nesneleri üzerinde yetkiye sahiptir. Oyuncu oyun nesneleri özel bir durumdur ve "yerel yetkiye" sahip olarak işlenir. Oyununuzu farklı bir yetkilendirme sistemi kullanarak oluşturmak isteyebilirsiniz - daha fazla ayrıntı için "Network Authority" belgelerine bakabilirsiniz.