folder Tahribat.com Forumları
linefolder Java
linefolder Online Oyunda Oyuncuların Birbirini Görmesi (Beyin Fırtınası)



Online Oyunda Oyuncuların Birbirini Görmesi (Beyin Fırtınası)

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DuPi
    DuPi's avatar
    Kayıt Tarihi: 21/Ağustos/2005
    Erkek

    Konuyu Java bölümüne açmamın nedeni javada çalışma yapmak istememdendir.

    konuyu özetlemek gerekirse.

    Darkorbit, seafight, PWO, Mmorpg tarzı oyunlarda oyuncular belirli bir alana girince birbirlerini görüyorlar.

    bu işin server ve client tarafı nasıl çalışıyor. 

    kafamda bir kaç algoritma tasarladım. ama server çok kasılıyor. bunun asıl işi nasıl olur bilen arkadaşlar bu konu hakkında açıklama yapabilir mi?

    fikirleriniz benim için önemli atladığım bir detayı görebilirim.


    Ne zaman birşey öğrenmek istesem, Birden Vaktim Kalmıyor ?
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TeRRoR
    TeRRoR's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Erkek

    güzel soru google'a kısaca bir baktım ancak derli toplu birşeye denk gelmedim. bakalım bilenler bilmeyenlere izah etsin durumuda bizde nasiplenelim.


    herkes programcı olmak zorunda değildir, lütfen bir zorunluluk gibi programlama dilleri öğrenmeye çalışmayın. yabancı dil filan öğrenin amq.// s.kimin etini yerim, kasaba minnet etmem.// ince düşünene kalın girer.//
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ekerci
    Ekerci's avatar
    Kayıt Tarihi: 14/Ocak/2010
    Erkek

    hard-core programing, up olsun


    Konu ID: 112846 Konuyu Acan : Ekerci Konu Başlığı : Tahribatın en sevdiği adam ? Silinme Sebebi : 3 sayfadır takip ediyorum beni seven kimse çıkmadı. alacağınız olsun müridler
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek

    X'in ve Y'nin konumunu sunucu bilir. X, Y'ye yakınsa sunucu X'e Y'nin, Y'ye X'in konumunu gönderir.


    Olaylara karışmayın!
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DuPi
    DuPi's avatar
    Kayıt Tarihi: 21/Ağustos/2005
    Erkek
    YeniHarman bunu yazdı

    X'in ve Y'nin konumunu sunucu bilir. X, Y'ye yakınsa sunucu X'e Y'nin, Y'ye X'in konumunu gönderir.

    10 Kişilik bir oyun için ideal, 1000 kişi için sunucu her defasında kontrol mü? edecek kim kime yakın diye ?


    Ne zaman birşey öğrenmek istesem, Birden Vaktim Kalmıyor ?
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    All hail to Tux
    sandman
    sandman's avatar
    Kayıt Tarihi: 01/Eylül/2005
    Erkek

    Öncelikle işin network tarafını yönetmek için aşağıda ki gibi özelleşmiş servisler kullanıyorlar. Bu servisler aynı zamanda 7/24 çalışan NPC'leride yönetebiliyor. Bunların api'lerinde aradığın sorunun cevabı olabilir.

    http://smartfoxserver.com/

     


    Mühendis kahveyi projeye dönüştüren bir insan evladıdır.
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    FCN
    FCN's avatar
    Kayıt Tarihi: 28/Eylül/2007
    Erkek
    DuPi bunu yazdı
    YeniHarman bunu yazdı

    X'in ve Y'nin konumunu sunucu bilir. X, Y'ye yakınsa sunucu X'e Y'nin, Y'ye X'in konumunu gönderir.

    10 Kişilik bir oyun için ideal, 1000 kişi için sunucu her defasında kontrol mü? edecek kim kime yakın diye ?

    herkesin konumunu elinde tutmazsan. speed hack,teleport hack ve benzeri şeylerle baş edemezsin.

    konu hakkında detaylı bilgi için mevzuyu bir game developer arkadaşa sorim.

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DuPi
    DuPi's avatar
    Kayıt Tarihi: 21/Ağustos/2005
    Erkek
    FCN bunu yazdı
    DuPi bunu yazdı
    YeniHarman bunu yazdı

    X'in ve Y'nin konumunu sunucu bilir. X, Y'ye yakınsa sunucu X'e Y'nin, Y'ye X'in konumunu gönderir.

    10 Kişilik bir oyun için ideal, 1000 kişi için sunucu her defasında kontrol mü? edecek kim kime yakın diye ?

    herkesin konumunu elinde tutmazsan. speed hack,teleport hack ve benzeri şeylerle baş edemezsin.

    konu hakkında detaylı bilgi için mevzuyu bir game developer arkadaşa sorim.

    Yeni harmana demek istediğim farklı,

    herkesin koordinatı olması gerekiyor. bu zaten şart ama bunları karşılaştıran serveri yormayan bir kod peşindeyim. :)

    kendi fikirlerinizi yazmanızı istememin sebebi birşey bulamazsak kendimiz bir algoritma geliştiriz.


    Ne zaman birşey öğrenmek istesem, Birden Vaktim Kalmıyor ?
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    Sunucu herkesin koordinantını bilir bunda bir sıkıntı yok. Ama herkesin koordinantlarını birbirleri ile karşılaştırmaz muhtemelen. Çünkü sunucuda N kişi varsa

           N!
    ---------------  = X
     (n-2)!*2!

    X tane ikilinin arasındaki mesafeyi hesapası lazım ki bu da anlık olacak. Ki bu ikilileride eşleştirmesi için gereken sürede ayrı bir muazzam.

    Yani sunucu 1000 kişi olsa

    1000*999/2  = 249.750 İkilinin arasındaki mesafeyi hesap edecek ki cidden büyük bir rakam.

     

    Diğer bir yandan;

    Client'te sunucunun gönderdiği ölçüde etrafındaki oyuncuların koordinantlarını bilir. Bu genellikle client'in render yapacağı alan kadardır ya da client'ın bulunduğu sunucudaki en küçük alt kümedeki alan kadardır.

     

    Client bu alanlar içinde bulunan oyunculardan hangileri arkadaşı ise o arkadaşı ile arasındaki mesafeyi hesaplar ve yakın olanları sunucuya bildirir. Sunucuda doğruluğunu hesaplar ve birbirlerini görmesi için izin verir.

     

     

    Benim yorumlamam bu kadar hadi hayırlı işler.



    DrKill tarafından 04/Kas/14 16:37 tarihinde düzenlenmiştir

    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    detCode
    detCode's avatar
    Kayıt Tarihi: 30/Kasım/2012
    Erkek
    DrKill bunu yazdı

    Sunucu herkesin koordinantını bilir bunda bir sıkıntı yok. Ama herkesin koordinantlarını birbirleri ile karşılaştırmaz muhtemelen. Çünkü sunucuda N kişi varsa

           N!
    ---------------  = X
     (n-2)!*2!

    X tane ikilinin arasındaki mesafeyi hesapası lazım ki bu da anlık olacak. Ki bu ikilileride eşleştirmesi için gereken sürede ayrı bir muazzam.

    Yani sunucu 1000 kişi olsa

    1000*999/2  = 249.750 İkilinin arasındaki mesafeyi hesap edecek ki cidden büyük bir rakam.

     

    Diğer bir yandan;

    Client'te sunucunun gönderdiği ölçüde etrafındaki oyuncuların koordinantlarını bilir. Bu genellikle client'in render yapacağı alan kadardır ya da client'ın bulunduğu sunucudaki en küçük alt kümedeki alan kadardır.

     

    Client bu alanlar içinde bulunan oyunculardan hangileri arkadaşı ise o arkadaşı ile arasındaki mesafeyi hesaplar ve yakın olanları sunucuya bildirir. Sunucuda doğruluğunu hesaplar ve birbirlerini görmesi için izin verir.

     

     

    Benim yorumlamam bu kadar hadi hayırlı işler.



    hocam herkesin arasındaki mesafeyi hesaplamaya gerek yok. senin karakterin yürüdü diğelim oyunda 1000 kişi var  diğer karakterler ile yani 999 tane işlem yapıp yakındakileri buluyor. zaten bütün oyunu taramasına gerek yok farklı regiona giren elemanları neden tarasın. region ve kordinat verisi ile gruplama yapıp kolayca hesaplarsın. 

     

    bu arada baştanmı oyun yapıyorsunuz emulator flnmı ?

    detCode tarafından 04/Kas/14 16:41 tarihinde düzenlenmiştir

    Who is detCode?
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek
    detCode bunu yazdı
    DrKill bunu yazdı

    Sunucu herkesin koordinantını bilir bunda bir sıkıntı yok. Ama herkesin koordinantlarını birbirleri ile karşılaştırmaz muhtemelen. Çünkü sunucuda N kişi varsa

           N!
    ---------------  = X
     (n-2)!*2!

    X tane ikilinin arasındaki mesafeyi hesapası lazım ki bu da anlık olacak. Ki bu ikilileride eşleştirmesi için gereken sürede ayrı bir muazzam.

    Yani sunucu 1000 kişi olsa

    1000*999/2  = 249.750 İkilinin arasındaki mesafeyi hesap edecek ki cidden büyük bir rakam.

     

    Diğer bir yandan;

    Client'te sunucunun gönderdiği ölçüde etrafındaki oyuncuların koordinantlarını bilir. Bu genellikle client'in render yapacağı alan kadardır ya da client'ın bulunduğu sunucudaki en küçük alt kümedeki alan kadardır.

     

    Client bu alanlar içinde bulunan oyunculardan hangileri arkadaşı ise o arkadaşı ile arasındaki mesafeyi hesaplar ve yakın olanları sunucuya bildirir. Sunucuda doğruluğunu hesaplar ve birbirlerini görmesi için izin verir.

     

     

    Benim yorumlamam bu kadar hadi hayırlı işler.



    hocam herkesin arasındaki mesafeyi hesaplamaya gerek yok. senin karakterin yürüdü diğelim oyunda 1000 kişi var  diğer karakterler ile yani 999 tane işlem yapıp yakındakileri buluyor. zaten bütün oyunu taramasına gerek yok farklı regiona giren elemanları neden tarasın. region ve kordinat verisi ile gruplama yapıp kolayca hesaplarsın. 

    sunucu sadece senin karakterin için hesaplama yapmayacak ki? Her karakterin birbirini görebileceği diğer karakterleri bulmak zorunda. Sunucu sadece 1 oyuncuya ait gösterilebilir kişileri hesap etmez.

    Ayrıca region veya oyun demenin bir anlamı yok aynı region dada 1000 kişi olabilir(türüne göre değişebilir) ki wow gibi oyunlarda çok daha fazla kişiler alanlarda savaşıyor. Bu hesabın tamamının sunucu tarafından yapılması saçmalık olur.

    Örnek vereyim. Sunucudaki oyuncular a,b,c,d,e,f,................................,n

    n=1000 diyelim. Region daki ya da oyundaki fark etmez. 1000 kişi eşlenir alanda diyelim.

    Sunucu a oyunucusu ile diğer oyuncuların arasındaki mesafeleri hesaplar (n-1) tane.

    n-1 tane hesaptan hangisi belirtilen mesafenin altındaysa a kişi o kişileri o kişilerde a kişisini görebilir.

    Şimdi b playerına geldi. b playerı ile diğer oyuncuların arasındaki mesafeleri hesaplar (n-1) tane.

    n-1 tane hesaptan hangisi belirtilen mesafenin altındaysa b kişi o kişileri o kişilerde a kişisini görebilir.

    ...................................................

    Her player için bu işlem anlık yapılırsa süpercomputer'a gerek var demektir bence.

    Counter strike gibi max 100 kişinin olduğu sunucularda bile (devasa online oyunlara örnek DEĞİLDİR!) client tarafı herkesin koordinantlarını bilir. O wallhack ler vs. var ya işte, client'ın göstermediği koordinantları gösteren dll ler ile yapılıyor. Böyle küçük oyunlarda bile client lar koordinantları bilirken muazzam büyük oyunlarda bilmemesi saçma olur.

     

    Bazı özel konularda, özel isteklerde her işi sunucu hesaplamaz, iş yüklerini clientlerada yüklenmek zorundadır geliştiriciler. Tabi bunu son kullanıcıya fark ettirmeden yaparlar.

     

     

    DrKill tarafından 04/Kas/14 17:04 tarihinde düzenlenmiştir

    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
Toplam Hit: 5034 Toplam Mesaj: 14