Unity Eğitim
Dersler
Forum Sınav Merkezi Premium 💎
C# Dersleri

Unity'de OnStartServer() Metodu: Çok Oyunculu Oyunlarda Sunucu Başlangıcı

Paylaşan: Unity Eğitim 22 September 2025 3 dakika okuma 171 görüntülenme

Merhaba Unity geliştiricileri! Bu makalede, Unity'nin çok oyunculu oyun geliştirme sürecinde büyük önem taşıyan OnStartServer() metodunu detaylı bir şekilde inceleyeceğiz. Bu metod, sunucu tarafında oyun başlatıldığında otomatik olarak çağrılır ve sunucuya özel başlangıç işlemlerini gerçekleştirmek için ideal bir yerdir.

OnStartServer() Metodunun Rolü


OnStartServer() metodu, NetworkBehaviour sınıfından türetilen script'ler içerisinde kullanılır. Sunucuya özgü kaynakların yüklenmesi, oyun dünyasının oluşturulması, oyuncuların bağlantı durumlarının kontrolü gibi işlemler bu metod içerisinde gerçekleştirilir. İstemci tarafındaki OnStartClient() metoduna benzer şekilde çalışır ancak yalnızca sunucu üzerinde çalışır.

Önemli Noktalar



  • Yalnızca Sunucu Tarafında Çalışır: Bu metod sadece sunucu üzerinde çalışır. İstemcilerde çağrılmaz.

  • Başlangıç İşlemleri: Oyunun sunucu tarafındaki başlangıç işlemlerini bu metod içinde gerçekleştirmelisiniz. Örneğin, oyun dünyasının oluşturulması, oyuncular için başlangıç noktalarının belirlenmesi, sunucu veritabanına bağlantı kurulması gibi.

  • NetworkBehaviour Sınıfı: Bu metodu kullanabilmek için script'inizin NetworkBehaviour sınıfından türetilmesi gerekir.


OnStartServer() Metodu Örneği


Aşağıdaki örnekte, OnStartServer() metodu kullanılarak oyun başlangıcında bir mesajın konsola yazdırılması ve bir oyun nesnesinin oluşturulması gösterilmektedir:
using UnityEngine;
using UnityEngine.Networking;

public class MyNetworkBehaviour : NetworkBehaviour
{
public override void OnStartServer()
{
Debug.Log("Sunucu başlatıldı!");
GameObject player = Instantiate(Resources.Load("Player") as GameObject);
NetworkServer.Spawn(player);
}
}


Bu örnekte, öncelikle Debug.Log() fonksiyonu ile sunucunun başlatıldığını konsola yazdırıyoruz. Daha sonra, Resources klasöründen "Player" adlı bir oyun nesnesini yükleyip, Instantiate() fonksiyonu ile örnekliyoruz. Son olarak, NetworkServer.Spawn() fonksiyonu ile bu nesneyi ağa ekleyerek tüm istemcilere gönderiyoruz.

OnStartServer() ve Diğer Network Metodları


OnStartServer() metodu, diğer NetworkBehaviour metodlarıyla birlikte kullanılarak daha karmaşık sunucu senaryoları oluşturulabilir. Örneğin, OnServerAddPlayer() metodu, yeni bir oyuncu sunucuya bağlandığında çağrılır ve bu oyuncu için gerekli işlemlerin yapılmasını sağlar. OnServerDisconnect() metodu ise bir oyuncunun sunucudan ayrıldığında çağrılır.

Hata Ayıklama


Sunucu tarafında hata ayıklama yapmak için Debug.Log() fonksiyonunu kullanabilirsiniz. Sunucu konsolunda bu mesajları görerek hataları tespit edebilirsiniz. Ayrıca, Unity'nin yerleşik hata ayıklama araçlarını da kullanabilirsiniz.

Gelişmiş Kullanım Örnekleri


Oyun Dünyasının Oluşturulması


OnStartServer() metodu, oyun dünyasının oluşturulması için ideal bir yerdir. Örneğin, haritayı yükleme, NPC'leri yerleştirme ve diğer oyun nesnelerini oluşturma gibi işlemleri bu metod içinde gerçekleştirebilirsiniz.

Veritabanı Bağlantısı


Çok oyunculu oyunlarda genellikle bir veritabanı kullanılır. OnStartServer() metodu, veritabanına bağlantı kurmak ve oyun verilerini yüklemek için kullanılabilir.

Oyuncuların Yönetimi


OnStartServer() metodu, oyuncuların bağlantı durumlarını izlemek ve oyun içi etkinlikleri yönetmek için kullanılabilir.

Sonuç


OnStartServer() metodu, Unity'de çok oyunculu oyun geliştirmede sunucu tarafındaki başlangıç işlemlerini yönetmek için güçlü bir araçtır. Bu metodu doğru bir şekilde kullanarak, stabil ve performanslı çok oyunculu oyunlar geliştirebilirsiniz. Unutmayın ki, bu metod sadece sunucu üzerinde çalışır ve istemcilerde çağrılmaz. Bu makaledeki örnekleri ve açıklamaları inceleyerek, kendi oyunlarınızda OnStartServer() metodunu etkili bir şekilde kullanabilirsiniz.

🧠 Ders Sonu Değerlendirme Testi

Dersi tamamladıktan sonra bilgilerinizi test edin ve ekstra puanlar kazanın.

🔥 +50 XP Ödül
🔒

Sınava Katılmak İçin Giriş Yapın

Bu ders sonu testini çözebilmek, bilginizi test edip **+50 XP** kazanmak ve **Sınav Şampiyonu** rozetinin kilidini açmak için üye girişi yapmalısınız.

Yorumlar (0)

Yorum yazabilmek ve derslere katkıda bulunabilmek için giriş yapmalısınız.

İlk yorumu siz yapın!