Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

java, 20 kişilik oyun serverı


Artariel

Öne çıkan mesajlar

dönem projesi için javada online ufak tefek bi futbol oyunu yazdıydım, dedim bunu devam ettireyim madem. şimdi oyunda tamamen tcp kullanıyorum, her ne kadar real time movement vesaire durumu olsa da tcp kullandım. tcp kullanmamın sebebi, udpde sequencelerdir, datanın güvenilirliğini sağlamadır bunlarla vakit kaybetmek istemememdi. tcpde de doğal olarak movement için saniyede 40 paket yolluyorsam delay yapma riskine karşın movement için client tarafında interpolation uyguladım, en azından daha düzgün gözükebilsin diye. onun dışında client tarafında yalnızca iki paket var, key pressed, key released, serverdaki client nesnesi de hangi tuşların basıldığını tutuyor işte. bunların alayını tcp ile yollatıyorum bir güzel.

ha bu arada server tarafında ise asynchronous socketchannel kullandım, non blocking soketler. bir game bir de network threadi var, networkün tek amacı paketi çekmek, game threadi bütün işlemeleri oynatmaları falan yapıyor.

şimdi buraya kadar özetledim olayı, bu projeyi genelde en fazla 3-4 kişiyle denedim ve serverı tee amerikada bulunan bi vpse attım ssh yoluyla, hayret ilk defa ilk denemede java -jar server.jar deyip çalıştırabildim. lokasyon kaynaklı çok ufak bir lag olduğunu söyleyebilirim ama daha fazla insan bulamadığım için de uzun vadede nasıl bir lag yaratır hiçbir fikrim yok. şimdi amacım zaten en fazla 20 hadi 20 fazla diyebilirim 14 kişi falan sokmak. paketleri ise direkt class olarak, serialize edip yolluyorum o yüzden tanesi sanırım en az 100 byte ediyor. movement paketi ise, yerinden kıpırdamış bir nesne olursa saniyede oyun hızı kadar yollatıyorum, 40 fps daha doğrusu.

şimdi non blocking soketlerde direkt bufferı flush etme durumu yok anladığım kadarıyla, bu yüzden paketlerin başına bi mesaj size koyuyorum böylelikle client tarafında da bazen paketlerin birleşik gelme durumunu hallediyorum. korktuğum durum şu, 3-4 kişi tamam bazen yapışık paketler geliyor ama ya 15 kişi falan girerse, paketleri yapıştıracam diye gözle görülebilir bi delay yaratırsa ?

önerileri bekliyorum doğrusu ne tarz optimizasyonlar yapabilirim, şu an lag olup olmadığını bile bilmiyorum doğrusu ama önlemi almak açısından.

ayrıca türkiye lokasyonlu vpsi olan varsa sunucuyu test edebilmem için gönüllü bir arkadaş arıyorum :P
Link to comment
Sosyal ağlarda paylaş

Object serialization icin ne kullaniyorsun? En buyuk bottleneck burda.

Ilk is, adim adim optimize etmek adina, Serializabe interface den kurtulmak. Illa pure object gondereceksen "Externizable" interface ini impl. etmek. Ama benim tavsiyem daha efficient network utilization icin, Google Protocol Buffers.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...