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

Browser Bazlı Oyunlar


El-Barto

Öne çıkan mesajlar

Merhaba, son günlerde (hobi olarak) işteki boş zamanlarımda browser bazlı oyunların yapımına merak sardım. Böyle boş zamanlarımda, sıkıldığım zamanlarda falan ilerleteceğim öğrenme amaçlı bir proje olsun istiyorum. Fakat başlamadan önce aklıma takılan bir iki sorun var, onları soriyim istedim:

1) Bina inşası, oyuncuların karşılıklı savaşları falan nasıl idare edilebilir? Mesela bir oyuncu ordusunu yolladı, 5 saat sonra varıcak. Oyunculardan herhangi biri online olsa yine o anı kontrol edip, o zaman yaptırırsın savaşı ama ikiside online değilse nasıl olur mesela? Herhangi birinin ilk online olduğu süreyimi beklemeliyim?

2) Karşılaşabileceğim büyük sorunlar neler olabilir sizce? (asp.net kullanıyorum genel olarak)

3) Open source kodları olan basitte olsa böyle bir proje var mı? Tabi çok da basit olmasın, sadece kullanıcı girişlerini, databaseleri vs.. anlatan projeler buldum da bunlar zaten benim çok rahat yaptığım şeyler.

İstediğiniz sorudan başlayabilirsiniz ama 1. soru 70 puan, ona göre cevaplayın :D
Link to comment
Sosyal ağlarda paylaş

1) bina inşası 3 saat sürecek diyorsa, 3 saat sonra bitmiş olur işte. ordu 5 saat sonra varacak ise 5 saat sonra varır, vardığı şehirdeki savunmaya göre belli bi zarar verir-zarar görür, sonra da geri dönüşe geçer. RTS değil bu sonuçta, savaşmak için oyuncunların online olmasına gerek yok. Travian a bak bi. dandik oyun, ama sorunn cevabını görürsün orda.
Link to comment
Sosyal ağlarda paylaş

Bunun icin bir kac secenegin var esasen. Ben genelde arka planda server tarzi bir sey calistirmayi tercih ediyorum, misal surekli calisan ve verileri isleyen bir script'im oluyor, haliyle islemleri gercek zamanli yapmis oluyorum.

Ama sen oyle yapmak zorunda degilsin. Sadece savaslarin sonuclarini vermek zorunda oldugunu varsayarsak, bu sonuclari ordu sayilari ve donanimlariyla belli formullerle vermek durumundasin. Haliyle soyle bir yapi ortaya cikiyor;

Savas sunucu saatiyle 15:00'da.
* Taraflardan biri login oluyor. Bakiyorsun savasi var. Saati kontrol ediyorsun, 15:00'a daha gelmedigi icin geri sayim gosteriyorsun. Saat 15:00'da geri sayim bitiyor ve javascript sayfayi yeniliyor.
* Sayfa 15:00'da ya da daha sonra birinin login olmasi ile aciliyorsun, bakiyorsun gerceklesmemis savasi var. Savasi yaptiriyorsun formulleri hesaplayarak, saat 15:00'da savas boyle oldu, soyle bitti, su sunu kaybetti, bu bunu kazandi diye rapor sunuyorsun.
* Taraflardan biri digerinden sonra girmis olursa savas coktan hesaplatilmis oluyor, ona sadece rapor gosteriyorsun.

Kisacasi real time gibi gorunen ama aslinda turn based yapiya sahip bir oyun yapmis oluyorsun.

Savas sirasinda karsilikli etkilesimler olsun dersen o hobi icin yapilan browser based oyunda biraz yalan olur =)

Bu arada gunlerdir benzer bir projeye kafa yoruyorum ama diller tutmadi. Gelip konusunu acsam mi diye dusunurken sen actin. PHP ve linux tarafina kaymak istersen bu proje icin haberim olsun =P
Link to comment
Sosyal ağlarda paylaş

bya said:

1) bina inşası 3 saat sürecek diyorsa, 3 saat sonra bitmiş olur işte. ordu 5 saat sonra varacak ise 5 saat sonra varır, vardığı şehirdeki savunmaya göre belli bi zarar verir-zarar görür, sonra da geri dönüşe geçer. RTS değil bu sonuçta, savaşmak için oyuncunların online olmasına gerek yok. Travian a bak bi. dandik oyun, ama sorunn cevabını görürsün orda.

Dediğimi tam anlamamışsın sen ya :) Di anlamış sanırım sorduğumu ama şöyle bi sorun var. Mesela taraflardan biri ordusunu yolladı ve çıktı oyundan. İkiside offlineken dışardan biri savaş saatinden sonra bakmak istiyo bunların durumuna. Bu iş oyuncuların logininde kontrolle yapılırsa istenen sonucu tam vermiycek. Yok her oyuncunun her işlemi için arkada bişey çalışırsa makine nasıl kaldırıcak bunu?
Link to comment
Sosyal ağlarda paylaş

Pollingin wikipedia entrysini okudum biraz ama tam olarak emin değilim anladığıma ama şimdi iki kullanıcıdan birinin login olma durumu dışında birisi onların bilgisine ulaşmaya çalışırsa bu işlemi yaptırırım. Böylece polling mantığını da kurmuş olurum sanki dimi? :)
Link to comment
Sosyal ağlarda paylaş

Login sırasında özel bir şey yapman şart değil.

El-Barto said:

İkiside offlineken dışardan biri savaş saatinden sonra bakmak istiyo bunların durumuna. Bu iş oyuncuların logininde kontrolle yapılırsa istenen sonucu tam vermiycek. Yok her oyuncunun her işlemi için arkada bişey çalışırsa makine nasıl kaldırıcak bunu?


Yapılacak işleri veritabanına bir yere yazacaksın. İşi kim yapacak, saat kaçta yapacak ve benzeri gerekli bilgileri gireceksin. Her oyuncu için ayrı bir thread açmayacaksın. Polling işini yapması için tek bir thread yaratacaksın. Belli zaman aralıklarıyla veritabanına bakıp o saatte yapılacak işlerinin hepsini yapacak.

Asp.net kullanıyorsan Timer gibi class'lar olması lazım bu tür şeyler için. Yalnız yapılacak işleri timer thread'inden yapmak yerine ayrı thread içinde yapman lazım. Tek tek tüm işler için ayrı thread yapman gerekmiyor. Maksat timer thread'ini kitlememek.
Link to comment
Sosyal ağlarda paylaş

Linux'taki cron'un karsiligi ne ise vindoz server'larda, ayni sekilde yapabilirsin Mirage'in polling dedigi olayi.

Mesela ABC.ASP adinda bir dosya yaratip su islemleri yaptirirsin;

* TODO tablosunu kontrol et.
* Yapilmamis olan is varsa yap, yapilmis olarak isaretle.

Sonra bunun her dakikada ya da her iki dakikada bir otomatik calistirilmasini saglarsin.

Bildigimiz zamanlanmis gorev muhabbeti iste.

Yalniz ASP.NET'te Timer tarzi seyler kullanabiliyorsunuz sanirim. Ya da benzer biseyler iste. Cok daha rahat halledebilmen lazim bu tip seyleri.
Link to comment
Sosyal ağlarda paylaş

Yardımlar için teşekkürler, cron'a baktım cronw diye bi versiyonu da var sanırım windows için ama Timer classı kafama daha çok yattı tabi basit olduğu için. Yani şu an kafamda oluşan şey şöyle:
.asax sayfasında bi threadpool'da iki thread olacak. Biri timer, diğeri timerın yaptırtacağı işler için. Timer saniyede bir çalışacak ve vakti gelen işleri diğer threade yaptıracak.

Eğer doğru anladıysam denemeye başlıycam :)
Link to comment
Sosyal ağlarda paylaş

Hosting firmasindaki sys admin ben olsam saniyede bir script calistiran adama ya izin vermem ya da sunucu aglayinca farkedip hosting hesabini kapatirim =P

Bir de islemler 1 saniye icinde bitmeyebilir. Haliyle ayni islemi tekrar tekrar yapmaya kalkisabilir script'in. O yuzden o interval degerini iyice bir olcup tart kafanda.
Link to comment
Sosyal ağlarda paylaş

Ya o ayrı thread olayı ordan geliyodu işte. Timer kendi kafasında kontrolünü yapcak sadece. Diğer thread de asıl işlemleri yapıcak.

edit: tamam şimdi anladım demek istediğini :) Ya zaten işlemi başlatınca ya db entrysini kaldırırım ya da bi kolon ayarlarım işlemi yapılıyor vs... gibi

edit2: bu arada saniyede bi sql querysi fazla bişey değil bence. Onu da kaldıramıyosa server zaten çöp olmuş demektir :)
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...