Gönderen Konu: multiplayer games  (Okunma sayısı 13446 defa)

multiplayer games

« : 01.05.2010 13:37:44 »
Hızlı düğmeleri aç

devreci

İleti: 75

Çevrimdışı
  • **
  • Jr. Member
    • Profili Görüntüle
    • http://www.devreci.com
arkadaşlar benim aklıma şöyle bişey geldi :cool:

mesela mutiplayer oyun yaptığımızda hiç servera gerek kalmayacak. internet sitemizde bir txt dosyası olacak. oyuna girdimi web sitemize girip kendi IP numarasını web sitedeki text dosyasına yazacak ve text dosyasını belli aralıklarla hangi IPler var diye hafızaya alacak. oyundan çıktımı silecek

diyelim oyun 3d fps ise oyuncunun konumu, ateş yönü, patlamlar vs, bunlar hafızadaki tüm ip nolara gönderecek. her bilgisayar bunu yapacak böylece oyun olacak nasıl fikir :D

^_^
« Son Düzenleme: 06.05.2010 23:24:36 Gönderen: devreci »

multiplayer games

« Yanıtla #1 : 01.05.2010 15:30:40 »
Hızlı düğmeleri aç

paradox

İleti: 134

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
hafızadaki ip lere göndermesi için portunun yada portlarının açık olması lazım..
gene server olmuş oluyo yani..Bu durumda web adresinde text dosyası'na ip lerin yazılmasının bi anlamı olmuyo..
Yada ben olayı yanlış anladım:)

multiplayer games

« Yanıtla #2 : 01.05.2010 16:56:23 »
Hızlı düğmeleri aç

devreci

İleti: 75

Çevrimdışı
  • **
  • Jr. Member
    • Profili Görüntüle
    • http://www.devreci.com
mesela ip=F4.7A.23.90 diyelim bu adresi biliyorsak bu adrese veri gönderemezmiyiz ?. yada tam tersi bizim adresimiz belli ise bir veri paketi hazırlamış isek bu paketi diğer bilgisayarlar bizden alamıyormu ?,

Ki trojanları ve karşılıklı sadece ip nosunu bilerek çalışan chat örneklerini unutmayalım ,yani olabilir

işte dostum burada örnek var iki ip nosuyla chat  ama basic te yazılmış  >chat<
« Son Düzenleme: 01.05.2010 17:22:17 Gönderen: devreci »

multiplayer games

« Yanıtla #3 : 01.05.2010 17:54:27 »
Hızlı düğmeleri aç

Ragnor

İleti: 901

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://ozanemirhan.blogspot.com
abi server'ın tek görevi ip'leri listelemek değil. bütün işleri client'ta yapma şansın yok online bir oyunda. illa ki bir server gerekecek.

multiplayer games

« Yanıtla #4 : 01.05.2010 19:48:03 »
Hızlı düğmeleri aç

paradox

İleti: 134

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
Alıntı yapılan: devreci;22917
mesela ip=F4.7A.23.90 diyelim bu adresi biliyorsak bu adrese veri gönderemezmiyiz ?. yada tam tersi bizim adresimiz belli ise bir veri paketi hazırlamış isek bu paketi diğer bilgisayarlar bizden alamıyormu ?,

Ki trojanları ve karşılıklı sadece ip nosunu bilerek çalışan chat örneklerini unutmayalım ,yani olabilir

işte dostum burada örnek var iki ip nosuyla chat  ama basic te yazılmış  >chat<

aynı ağ  üzerinden olabilirde uzak bi bağlantıyla olacağını sanmıyorum..
Bu chat örneğindede öyledir.yani lan'dan bağlanıt.

multiplayer games

« Yanıtla #5 : 01.05.2010 20:42:21 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
devreci, server hiç olmayan multiplayer bir oyun experimental olarak yapılabilir (anlamsız da olsa). ancak client sayısı arttıkça gittikçe problemler artar çünkü kartezyen çarpım işin içine giriyor. örneğin P2P networklerin bir kısmı hiç sunucusuz çalışmakta ve tüm clientlar birbiri üzerinden iletişim kurmaktadır. ama bu multiplayer bir oyun için akıllıca bir yol değildir. ölçek büyüdükçe oyuna yeni girip seni 10 saniye içinde öldüren bir oyuncunun oyuna girdiği bilgisi sana sen öldükten sonra ulaşabilir. bu derece mantıksız bir ring oluşturulmuş olur. bu forumda daha önce birkaç kere tartışıldı multiplayer oyun konusu, takip etmediysen forumda search et önceki topicleri.
 
server-client ilişkisinde bu tür gereksiz mekanizmalarla uğraşmadan ve clientın ringinde yer alan tüm clientların laglerinden topluca etkilenmeden sadece server ve senin lag miktarın ile sınırlı bir biçimde iletişim gerçekleştirebilirsin. kaldı ki kodlamaya başladığında bunun bile ne derece zor ve varsayımlar/ortalamalar üzerinden yapılması gerektiğini görüyorsun.
 
"internet sitesinde duran bir..." ile başladığın laf doğrudan server-client ilişkisidir. internet sitesinin durduğu yer bildiğin server işte :) ancak hiç server kullanmadan, hatta hatta clientlardan biri server görevi üstlenmeden multiplayer oyun yapmak mümkün ama delilik. oyunun karar mekanizmaları devreye girince anlıyorsun niye delilik olduğunu.
 
basit bir senaryo:
sen adama ateş ettin, adam vuruldu ve öldü.
 
adam sen ateş ettiğinde gerçekten orada mıydı? kime göre oradaydı? sana? vurduğun player'a? diğer playerlara? sende lag oluştuysa adam gerçekte hareket ettiği halde sana henüz hareket ettiği bilgisi ulaşmamış olabilir. bu durumda sen onu vurmak için network bandwidth'ini kasan bir uygulama çalıştırsan zaten dondu kaldı karşında di mi? :)
 
diyelim adam vuruldu, buna bir şekilde karar verdin. hatta o adam öldü de. ama ona henüz öldüğü bilgisi ulaşmadı ve o anda o başkasını öldürdü. kim kimi hangi sırayla öldürdü? kimin internet bağlantısının hızına güveneceğiz?
 
bu soruları kendine sormaya başla, server-client ilişkisinin doğru mekanizma olduğunu ve olabildiğince herşeye serverın karar vermesi gerektiğini, clientların daha çok 3d engine slave modunda çalışması gerektiğine kanaat getireceksin.

multiplayer games

« Yanıtla #6 : 01.05.2010 22:02:35 »
Hızlı düğmeleri aç

devreci

İleti: 75

Çevrimdışı
  • **
  • Jr. Member
    • Profili Görüntüle
    • http://www.devreci.com
@paradox: o linktekini indiremedim ama bi tane yeni buldum devcpp de yazılmış arkadaşın  ve kendi bilgisayarımda denedim oldu ama sadece dinleme modunda calışıyor karşılıklı değil , eğer sana lazımsa biyere upload edeyim web adresini kaybettim.  

@ragnor: dostum başka çaremiz yok server alamayacağımıza göre cözüm yolu bulmak zorundayız yada yapamayacağız

@skate: evet kalabalıklaştıkça karesiyle orantılı hız düşer ama benim dediğim
 4 veya 8 kişilik bir fps oyunu.  şimdi adamın ölüp ölmediğini ben değil bizzat kendisi hesaplayacak . ben ateş ettiysem ateşin normalini ve knumunu gönderiyorum (24 bayt)  ben dehil her bağlı bilgisayar kendinemi duvaramı çarpıyor kendisi hesaplıyor. eğer o an kendisine değdiyse öldüğünü tüm bilgisayarlara duyuruyor. burda gecikme elbette olacak. ki gecikme serverdede olacak mesela server bana adamın orada o an olmadığını söylemezde ben ateş edersem adamı vurduğumu sanacam ama adam dönüp beni öldürmüş olacak.
quake3 server ile oynadığımda bununla çok karşılaştım bazukayı alıp meydana çıkıp rasgele ateş ederdim orada adam olmamasına rağmen leşler duruyordu :)

bizim oyunda o kadar çok değil max 100-300 bayt gönderilecek  niye olmasınki
« Son Düzenleme: 01.05.2010 22:05:04 Gönderen: devreci »

multiplayer games

« Yanıtla #7 : 01.05.2010 22:17:04 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
@devreci: az client elbette ki bir avantaj. ama madem "server alamayacağımıza göre" diyorsun ve madem maksimum 8 player düşünüyorsun, o zaman senin yapacağın en mantıklı iş clientların tamamında server özelliğinin de yer alması ve clientlardan birini kendisini server olarak belirlemesi. yani clientlardan biri server'ı start eder, IP adresini diğer arkadaşlarına verir, onlar da bu IP üzerinden bağlanırlar ona. Port v.s. sorun değil, genellikle bu tür işler için virtual networkler kullanılıyor (bkz: LogMeIn - Hamachi). Herkes Hamachi veya muadili birşey kuruyor (ya da oyunun setupı otomatik kuruyor) ve bu şekilde kullanıcılardan biri server olarak oynamaya başlıyorsunuz. Ama yazılan kod tamamen server/client yapısında. Tek farkı server exesi webdeki bir sunucuda çalışmıyor da playerlardan birinde çalışıyor. Bu yapıdaki oyunlarda genellikle server'ı çalıştıran host konumundaki kişi aynı zamanda server yönetim görevini de üstlenir. Kıl olduğu oyuncuyu kickler, oyunu başlatır, bitirir v.s.

multiplayer games

« Yanıtla #8 : 02.05.2010 10:15:10 »
Hızlı düğmeleri aç

nightlord

İleti: 1.085

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.nightnetwork.org
devreci bahsettigin yapida diyelim ki ikimiz oyun oynuyoruz. ben cheat edebilirim. vurma gibi onemli kararlari client'a birakirsan clientlardan biri cheat edilmis bir exe ile baglanip "ben devreci oyuncusunu vurdum diyebilirler"
 
her halikarda web sitesindeki text dosyasina birsey yazmak daha kolay degil. text dosyasina her yeni komutu sona mi ekleyeceksin. bunu yaparsan kisa sure sonra dosya cok uzayacak, clientlar her yeni komut icin giderek buyuyen bir dosya indirmek zorunda kalacak. eger sadece bir defada n komut bulundurup sonra txt dosyasini silmeye karar verdin diyelim. bunu kim yapacak clientlardan biri mi? 1 nolu client server txt yi silecegi zaman diger yedi client'in hangilerinin dosyanin son halindeki butun komutlari aldigini hangilerinin almadigini nereden bilecek. eger erken silerse bazi client'lar bazi komutlari kacirmis olacak vs.
 
Velhasil bu kotu bi fikir diyebiliriz :)

multiplayer games

« Yanıtla #9 : 02.05.2010 22:50:19 »
Hızlı düğmeleri aç

devreci

İleti: 75

Çevrimdışı
  • **
  • Jr. Member
    • Profili Görüntüle
    • http://www.devreci.com
@skate: aslında her kullanıcı sıraile server gibi işlem yapsa tüm bilgisayarlar ona bağlansa daha hızlı olur ama interneti yavaş olana geldimi sıra oyun yavaşlamak zorunda kalacak. hemde tam o sırada oyundan çıksa oyun çökecek

@nightlord: web sitesindeki txt dosyasına oyun akışı ile ilgili bişey yazmıyoruz sadece oyuna hangi ip nolu bilgisayarlar bağlanmış onu buluyoruz.
şunun gibi  
<...oyun.php?kontrolet=1&cıkıs=0&ipno=EF332333&adim=ali&tipim=3..>
oradan okey yanıtı elmişşe oyuna girdi demektir ve text dosyasına yazdı
ayrıca ipnosu gönderiyor öldüğünü bu nedenle başkası adına öldü mesajı yollayamaz.

aslında deney amaçlı bişeyler yazmak için sabırsızlanıyorum ama php veya asp öğrenmem lazım

multiplayer games

« Yanıtla #10 : 03.05.2010 01:36:37 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
PHP ile ilgili işin acayip kolay.
 
Kod: [Seç]
<?php
$clientIP 
$_SERVER['REMOTE_HOST'];
$filename 'ip_address_list.txt';
$fh fopen($filename'a') or die(&quot;can't open file&quot;);
fwrite($fh, $clientIP.&quot;\r\n&quot;);
fclose($fh);
?>


Bu kod PHP dosyasına hiçbir parametre olmaksızın bağlanan kullanıcının IP'sini otomatik olarak kaydeder. Her yeni requestte yeni bir satır eklenir. Sen buna parametreden gelecek değerleri de ekleyebilirsin dilediğin gibi.
 
Bu denemenin olası sonuçlarıyla ilgili felsefi bir cümleyle son vermek istiyorum yazıma. Ice Age 3'deki Buck'ın da dediği gibi.
 
- Sonuç? Bitkisel hayat.
 
;)

multiplayer games

« Yanıtla #11 : 03.05.2010 15:29:13 »
Hızlı düğmeleri aç

coze

İleti: 238

Çevrimdışı
  • ***
  • Full Member
    • Profili Görüntüle
Alıntı yapılan: devreci;22924

ayrıca ipnosu gönderiyor öldüğünü bu nedenle başkası adına öldü mesajı yollayamaz.

o olme check'ini oyuncu kendi bilgisayarinda yapiyorsa o zaman hic olmeyen oyuncular dolmasi muhtemel bir sure sonra :p

aslinda biraz dusununce olabilir gibi geldi, tabi oyun mekaninda oyuncular disinda etkilesilebilen bir materyal olmamak kaydiyla (medikit, ekstra silahlar vs olamaz)

Alıntı
aslında deney amaçlı bişeyler yazmak için sabırsızlanıyorum ama php veya asp öğrenmem lazım

skate'in dedigi gibi 'server' tarafindaki PHP kodu uc bes satirda halledilir orasi hic zor bisi diil. sen client'larla 3d engine'i hazirla bakalim ;)

multiplayer games

« Yanıtla #12 : 03.05.2010 23:24:43 »
Hızlı düğmeleri aç

Hydrogen

İleti: 932

Çevrimdışı
  • 7DX Organizer
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.glance.ws
Devreci, bir işe girişmeden bir konuda tecrubesi olan insanlara danışman, sana vakit kazandırır. Bu kazanılan vakit, 15 dkda olabilir, bir kaç ay da.
 
Ancak kesin olan bir şey var ki danışmanın en büyük amacı vakit kazanmaktır. Amerika'yı yeniden keşfetmekten kurtulmaktır.
 
Eğer sen, bir konuda tecrubesi olan ve yorumlarını istediğin kişilerin, yazdıkları üzerinde pek fazla durmayarak, onların belirttiklerinin aksi yönünde ısrarcı olursan, bu hem sana vakit kazandırmaz. Hem de onlara vakit kaybettirir.
 
şimdi bu konuda ben de bir şeyler yazabilirim iyi kötü. Ama başkalarının yazdığına yönelik makul bir tepki vermediğinden ötürü faydası olabileceğine inancım zayıf. Sadece "Lastik fabrikam olmadığı için tekerleksiz giden araba icad edeceğim" şeklinde bir argümanla geri çevirdiğin önerileri bir düşün derim.

multiplayer games

« Yanıtla #13 : 04.05.2010 01:34:37 »
Hızlı düğmeleri aç

devreci

İleti: 75

Çevrimdışı
  • **
  • Jr. Member
    • Profili Görüntüle
    • http://www.devreci.com
@hydrogen:
yaptığımı söylediğin şeyi bence sen yapıyorsun çünkü yazılanları sadece bi göz ucuyla bakmış gibisin
biz burada sadece varsayımlar üzerine konuşuyoruz daha önce denenmişmi bunuda bilmiyoruz , tamamen mantıksız bir öneride değil . ücretsiz yada öğrenme amaçlı oyun yapacaksak kalkıp ayda 200 dolar verip
server kiralamak daha mantıksız. önemli değil teknik bir geyik yani , e-devlet projesi değilki bu.

sen konunun böylemi ilerlemesini isterdin ?

a.kişi (konu açar)  :  - böyle bişey olurmu

tecrübeli (cevap verir) :  - hayır olamaz

a.kişi (haddini bilir) :  - teşekkür ederim

konu üç mesajla sonuçlanır. forum kirliliğinden uzak cillop gibi bir site olur. Sessiz bir sitemi istiyorsun :)
2500 üye bulunuyor ne zaman siteye girsem yeni birileri üye olmuş ama site (insanlar) gerçekten çok sessiz  ,  bikaç kişi teşekkürler;  cevap vermese açtığımız konu
belki tek bir cevap  yazılmadan yirmibeş yıl orada asılı kalacak

multiplayer games

« Yanıtla #14 : 04.05.2010 01:44:51 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
@devreci: ne yazık ki yazılanları okumayan sensin. hala sunucu kirasından bahsediyorsun. sunucu illa webde olmak zorunda değil. sunucu kavramı teorik birşey. sen local makinende sunucu+istemci çalıştırabilirsin elbette ki. bu güne kadar yüzlerce oyunun multiplayer modunun kullandığı gibi clientlardan biri sunucuyu çalıştırır, diğerleri ona bağlanır. maksimum 8 kişi diye konuştuğumuza göre serverı localinde çalıştıran kişiye ciddi bir CPU overhead getirmez bu.
 
"Yazılanları okumamışsın" derken lütfen önce yazılanları bir oku. :)