hatta farklı şehirlerden -> farklı ülkelerden girenlerde birbirini görüyor mu bari
Hocam öncelikle paylaştığınız proje için teşekkür ederim, elinize sağlık.
Projeyi aldıktan sonra üzerinde ciddi şekilde geliştirme yaptık. Sadece logo, tasarım veya isim değişikliği yapmadık; mevcut 3D web client altyapısını kullanarak oyun tarafına yeni sistemler ekledik.
Orijinal projede bulunan 3D harita, karakterler, NPC'ler ve mevcut animasyon altyapısını koruduk. Bunun üzerine PHP tabanlı kurulum ve sunucu altyapısı geliştirdik.
En büyük değişiklik multiplayer tarafında oldu. Artık farklı bilgisayarlardan, hatta farklı şehirlerden siteye giren oyuncular aynı haritada birbirlerini görebiliyor. Oyuncuların konumu, yönü, hareketi, karakteri ve bazı aksiyonları sunucu üzerinden diğer oyunculara aktarılıyor.
Canlı sohbet sistemi ekledik. Oyuncular oyun içerisinden birbirleriyle konuşabiliyor.
PvP sistemi ekledik. Oyuncular birbirlerini hedefleyip saldırabiliyor. HP, hasar ve mesafe kontrollerinin bir kısmını sunucu tarafına taşıdık.
Metin taşları ve bossları ortak dünya sistemine bağladık. Örneğin bir oyuncu Metin taşını öldürdüğünde sadece kendi ekranından değil, diğer bağlı oyunculardan da kayboluyor. Belirlenen süreden sonra tekrar doğuyor. Bosslar için de aynı şekilde ölüm ve respawn sistemi oluşturduk.
Drop sistemi geliştirdik. Metin veya boss öldürüldüğünde eşya düşebiliyor ve oyuncu bu eşyayı toplayarak envanterine alabiliyor.
Envanter ve ekipman sistemini işlevsel hale getirdik. İlk geliştirmede karakterlere başlangıç eşyaları vermiştik fakat daha sonra bunu tamamen kaldırdık. Şu anda karakter boş envanterle, silahsız ve ekipmansız başlıyor.
NPC market sistemini geliştirdik. Silah satıcısı, zırh satıcısı ve genel satıcı üzerinden Yang karşılığında eşya satın alınabiliyor. Satın alınan eşya envantere geliyor ve uygun ekipmanlar karaktere takılabiliyor.
Karakter modellerinin içerisinde zaten bulunan saldırı, combo ve skill animasyonlarını da oyun mekaniklerine bağlamaya başladık. Normal saldırının yanında 1-2-3-4 tuşları üzerinden farklı skill animasyonlarının kullanılabileceği bir combat altyapısı oluşturduk.
Ayrıca PHP üzerinden install.php kurulum sistemi hazırladık. Böylece proje dosyaları hostinge yüklenip tarayıcı üzerinden kurulabiliyor. Oyuncular, chat, PvP, Metin/Boss durumu, drop ve ortak dünya bilgileri için de ayrı backend/API yapıları oluşturduk.
Kısacası orijinal çalışmayı sahiplenip "biz sıfırdan yaptık" gibi bir durum söz konusu değil. Sizin hazırladığınız 3D web client bizim başlangıç noktamız oldu. Biz de bunun üzerine multiplayer ve MMORPG mekaniklerini geliştirerek projeyi daha kapsamlı, tarayıcıdan oynanabilen online bir oyuna dönüştürmeye çalışıyoruz.
Daha yapılacak çok şey var. Mob AI, gelişmiş combat, skill efektleri, demirci ve + basma, ticaret, görevler, party, lonca, depo, kalıcı hesap/karakter sistemi ve daha güçlü gerçek zamanlı sunucu altyapısı gibi sistemleri de zamanla geliştirmeyi düşünüyoruz.
Tekrar emeğiniz ve paylaşımınız için teşekkürler. Projenin bu şekilde geliştirilmeye çok müsait olması ayrıca güzel olmuş.
Canlı olarak merak edenler hemensatariz.com üzerinden geliştirdiğimiz sürümü deneyebilir.
hatta farklı şehirlerden -> farklı ülkelerden girenlerde birbirini görüyor mu bari
Teknik Bilgi
Farklı şehirlerden hatta farklı ülkelerden giren kullanıcıların birbirini görmesi, oyunun HTML olup olmamasıyla ilgili değil; ağ mimarisiyle ilgilidir. İstemciler aynı WebSocket/Socket.IO sunucusuna bağlanıyorsa, NAT arkasında olsalar bile sunucu üzerinden gerçek zamanlı state senkronizasyonu yapılır. Yani oyuncu konumu, yönü, skor, çarpışma ve diğer event’ler merkezi sunucuda tutulup bağlı client’lara broadcast edilir.
Tek dosyalık HTML sürümü zaten özellikle ‘prototip’ diye paylaşıldı; onda gerçek multiplayer beklemek teknik olarak anlamsız. Multiplayer sürümde ise public IP/domain üzerinde çalışan Node.js + WebSocket sunucusuna bağlanan herkes, ister İstanbul’dan ister Almanya’dan girsin aynı room/instance içindeyse birbirini görür. Burada belirleyici olan şehir değil; latency, sunucu lokasyonu, tick-rate, interpolation ve network senkronizasyonudur
Anlayacağın Şekilde
Bu arada sistemi özellikle senin gibi teknik konulara çok hâkim olmayan kardeşlerimizin de anlayabilmesi için mümkün olduğunca basit bir dille anlattım. WebSocket, client-server mimarisi, state synchronization, tick-rate ve interpolation tarafına girseydim muhtemelen ‘farklı şehirden girince görüyor mu?’ sorusuna gelene kadar biraz daha yolumuz olurdu.
Kısacası kardeşim; internet şehir sınırında kesilmiyor. Aynı multiplayer sunucusuna ve aynı oyun odasına bağlıysan İstanbul’dan da girsen Almanya’dan da girsen oyuncuyu görürsün. Ping değişir, ülke değişir; client-server mantığı değişmez
çok sağolun benim gibi teknik konulara çok hakim olamayan kardeşleri de düşündüğünüz için peki farklı kıtadan giriş yapılabilir mi onu da netleştirebilir miyiz teşekkürlerTeknik Bilgi
Farklı şehirlerden hatta farklı ülkelerden giren kullanıcıların birbirini görmesi, oyunun HTML olup olmamasıyla ilgili değil; ağ mimarisiyle ilgilidir. İstemciler aynı WebSocket/Socket.IO sunucusuna bağlanıyorsa, NAT arkasında olsalar bile sunucu üzerinden gerçek zamanlı state senkronizasyonu yapılır. Yani oyuncu konumu, yönü, skor, çarpışma ve diğer event’ler merkezi sunucuda tutulup bağlı client’lara broadcast edilir.
Tek dosyalık HTML sürümü zaten özellikle ‘prototip’ diye paylaşıldı; onda gerçek multiplayer beklemek teknik olarak anlamsız. Multiplayer sürümde ise public IP/domain üzerinde çalışan Node.js + WebSocket sunucusuna bağlanan herkes, ister İstanbul’dan ister Almanya’dan girsin aynı room/instance içindeyse birbirini görür. Burada belirleyici olan şehir değil; latency, sunucu lokasyonu, tick-rate, interpolation ve network senkronizasyonudur
Anlayacağın Şekilde
Bu arada sistemi özellikle senin gibi teknik konulara çok hâkim olmayan kardeşlerimizin de anlayabilmesi için mümkün olduğunca basit bir dille anlattım. WebSocket, client-server mimarisi, state synchronization, tick-rate ve interpolation tarafına girseydim muhtemelen ‘farklı şehirden girince görüyor mu?’ sorusuna gelene kadar biraz daha yolumuz olurdu.
Kısacası kardeşim; internet şehir sınırında kesilmiyor. Aynı multiplayer sunucusuna ve aynı oyun odasına bağlıysan İstanbul’dan da girsen Almanya’dan da girsen oyuncuyu görürsün. Ping değişir, ülke değişir; client-server mantığı değişmez



knk srcsi elinde mevcutmu bu projenini githubdaki degil ha srcTeknik Bilgi
Farklı şehirlerden hatta farklı ülkelerden giren kullanıcıların birbirini görmesi, oyunun HTML olup olmamasıyla ilgili değil; ağ mimarisiyle ilgilidir. İstemciler aynı WebSocket/Socket.IO sunucusuna bağlanıyorsa, NAT arkasında olsalar bile sunucu üzerinden gerçek zamanlı state senkronizasyonu yapılır. Yani oyuncu konumu, yönü, skor, çarpışma ve diğer event’ler merkezi sunucuda tutulup bağlı client’lara broadcast edilir.
Tek dosyalık HTML sürümü zaten özellikle ‘prototip’ diye paylaşıldı; onda gerçek multiplayer beklemek teknik olarak anlamsız. Multiplayer sürümde ise public IP/domain üzerinde çalışan Node.js + WebSocket sunucusuna bağlanan herkes, ister İstanbul’dan ister Almanya’dan girsin aynı room/instance içindeyse birbirini görür. Burada belirleyici olan şehir değil; latency, sunucu lokasyonu, tick-rate, interpolation ve network senkronizasyonudur
Anlayacağın Şekilde
Bu arada sistemi özellikle senin gibi teknik konulara çok hâkim olmayan kardeşlerimizin de anlayabilmesi için mümkün olduğunca basit bir dille anlattım. WebSocket, client-server mimarisi, state synchronization, tick-rate ve interpolation tarafına girseydim muhtemelen ‘farklı şehirden girince görüyor mu?’ sorusuna gelene kadar biraz daha yolumuz olurdu.
Kısacası kardeşim; internet şehir sınırında kesilmiyor. Aynı multiplayer sunucusuna ve aynı oyun odasına bağlıysan İstanbul’dan da girsen Almanya’dan da girsen oyuncuyu görürsün. Ping değişir, ülke değişir; client-server mantığı değişmez
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 33
- Görüntüleme
- 895