Sadece eğlence için basit bir MOBA yapıyorum. Ben her şeyi tek oyunculu yapıyordum, o zaman farkettim ki "ah bok muhtemelen çok oyunculu eklemeliyim, ha."
Daha önce hiç ağ oluşturma ile hiçbir şey yapmadım, bu yüzden Lidgren'i oyunuma nasıl entegre edeceğimizi öğrenmek eğlenceli ve harikaydı. Mesele şu ki, bir şeyler yapma şeklimin yanlış olduğunu biliyorum, çünkü bildiğim kadarıyla ana akım oyunların kullanması için yeterince sağlam değil, ama sorun ne?
Yaptığım şey, temelde, bir oyuncu bir eylem yaptığında, sunucuya "hey, sadece bu şeyi yaptım" diyen bir mesaj gönderir. Sunucu ve istemci aynı simülasyonu çalıştırıyor. Sunucu daha sonra diğer tüm istemcilere o adamın o şeyi yaptığını söyleyen bir mesaj gönderir.
Çoğunlukla, birkaç durumda, bir oyuncu bir şey yaptığında, müşteri serin olduğunu varsayar ve kendi başına devam eder. Orada taşımak için bir yere sağ tıklayıp zaman, o oyuncunun müşteri sadece orada onun adamı hareket başlar ve daha sonra bu konuda onu söylüyorum sunucuya bir mesaj gönderir.
Temel olarak:
- Oyuncu 1, altı saniye boyunca% 100 daha hızlı hareket etmesini sağlamak için bir büyü yapar
- Oyuncu 1'in yerel istemcisi bu tutkuyu Unit nesnesine ekler
- Oyuncu 1'in istemcisi sunucuya "hey ben sadece bu büyüyü yaptım" diyen bir mesaj gönderir
- Sunucu, bu büyüyü yapmak için gerçekten yeterli manaya sahip olduğundan emin olur ve eğer öyleyse, bu buff'ı sunucunun bu Unit nesnesinin kopyasına ekler
- Sunucu diğer tüm istemcilere "hey bu adam sadece bu büyüyü yaptı" diyen bir mesaj gönderir
- Diğer tüm istemciler mesajı alır ve "ah tamam cool" olur ve bu tutkunu o oyuncu için kendi yerel Unit nesnesine ekler
Büyük oyunların nasıl çok oyunculu oynadığını görmek için şeyleri gözden geçiriyorum ve bu şeylerde biraz uğraşmaya başlayan biri için kafa karıştırıcı, ancak Kaynak motoru , her şeydeki tüm değişiklikleri içeren bir paket gönderiyor gibi görünüyor dünya her kene? Yine, bu şeyler için tamamen yeni, ama gerçekten o kadar çok veri zorlayabilir misiniz?
Bu biraz rahatsız edici olsa da özür dilerim, ama temel olarak, daha basit sistemimin neden doğru yol olmadığını merak ediyordum, çünkü eğer öyleyse, diğer oyunlar bunu kullanacaktı, değil mi?