Php Online Oyun Scripti Yardım

alarmala
23-08-2012, 21:19   |  #1  
OP Taze Üye
Teşekkür Sayısı: 0
7 mesaj
Kayıt Tarihi:Kayıt: Mar 2012

merhaba arkadaslar yeni bir starejidi tarzı tarayıcı oyunu yapmaya karar verdik iki kisiyiz ve ikimizde programlama dili olarak php biliyoruz ama diger bize yardımcı olarak dillere daha yabancıyız ama calısarak üstesinden gelecegimizi düsünüyoruz nede olsa sıfırdan deyil programlama mantıklarını biliyoruz...

simdi bizim aklımızın takıldıgı nokta php ile bir script yazıyoruz oyunlardaki bütün aksiyonlar tamam ama her yarım saatde üyelere hammadde nasıl göndericez projeye baslamadan önce bunun hakkında bir fikir sahibi olursak daha rahat baslıyacagız...

örnegin bir oyuncu (üye) ilk üye oldugunda her maden türünden 500'er yüz maden gönderiliyor lvl atladıkca bunu nasıl katlıycaz ve en öenmlisi server her yarım saatde üyelerin lvl lerine ve teknolojileri göre nasıl hammadde gönderir...

cvp yazanlar icin simdiden tesekkürler....

lütfen yapamazsınız deyipde bizi yolun basında sogutmayın....

notice
17-10-2012, 16:02   |  #2  
Taze Üye
Teşekkür Sayısı: 0
4 mesaj
Kayıt Tarihi:Kayıt: Kas 2010

Kardeşim benim güzel düşünmüşsün de time() fonksiyonu hiç bilmiyorsan ve duymadıysan işin zor. çünkü strateji oyunlarında en önemli fonksiyon neredeyse time() fonksiyonudur.

[ Tüm kodu seç ] [ Yeni Pencerede Göster ]
<?php # ilk başta yarım saat nasıl yazılır onu görelim $dakika = 60; // 1 dakikadır. $ysaat = $dakika * 30; // daha sonra bu değeri time() fonksiyonu ile toplayıp veritabanına gir. $toplam = time() + $ysaat; // sorgulatmak için time() fonksiyonu ne zaman toplamı geçerse hammaddeleri adamlara eklersin.. if ( time() >= $toplam ) { // hammaddeleri adamlara gönder.. // seviyeye göre hammaddeyide söyle ayarlayabilirsin.. // veritabanına adamın seviyesini eklersin.. // diyelim ki 1. seviyede 250 gelsin adam hamdde.. // 2. seviye için bu hamddeleri 1.25 ile çarparak bi değer elde edersin. $my = mysql_query ( "SELECT * FROM uyeler" ); while ( $yaz = mysql_fetch_array ( $my ) ) { $seviyeOrani = $yaz['seviye'] * (0.625); if ( $yaz['seviye'] > 1 ) { $eklenecek = 250 * $seviyeOrani; // burada ileriki seviyelerde eklenecek hammadde yazılıyor. } else { $eklenecek = 250; // seviye 1 ise.. } // daha sonra bunları ekledikten sonra herkese.. yarım saat değerini güncelle.. } } else { // bekle } ?>

Son Düzenleme: notice ~ 17 Ekim 2012 16:02
asiatico
23-10-2012, 14:44   |  #3  
Taze Üye
Teşekkür Sayısı: 0
10 mesaj
Kayıt Tarihi:Kayıt: Eki 2012

time() fonksiyonu 01.01.1970'ten bu yana geçen saniyeyi gösterir.
time() fonksiyonunu direk php'nin içerisinde kullanmaktan ziyade mysql in kendi zaman birimini kulalndığın tablonun ilgili stünuna tanımladıktan sonra ilgili güncellemeyle ilgili bir stored procedure yazıp mysql'in event özelliğinden faydalanarak dakikada bir veya 500 milisaniyede 1 çalıştırıp mysql e işlem yaptırmak senin için çok daha rahat olacaktır.
Yukarıdaki arkadaşın hazırladığı şekildede işlemi halledebilirsin fakat bu sorguyu sistemdeki kullanıcı her sayfa değiştirdiğinde yapman gerekir buda 1000 online kullanıcıda 1 sorguyu her sayfa değiştirdiğinde 1000 defa sorgulamak gerek ki buda verimsiz bir yöntem.
Diğer bir alternatif olarak yine yukarıdaki gibi bir sorguyu cronjobla çalıştıra bilirsin fakat kullanıcı ve işlem sayısı arttıkça daha yavaş çalışmaya başlayacaktır sen cronjobla yukarıdaki veriyi 1 saniyede çalıştır desen bile sisteme kayıtlı 2000 kullanıcının yukarıda gösterilen sorgu biçimiyle işlenmesi 1 saniyeden daha uzun bir süre alıcaktır cron job sorguyu yine çalıştırmaya çalışacağı için buda sistemde ağırlık ve hataya sebep olacaktır.
Oyun yapma fikriniz çok güzel hevesimizi kırmayın demişsiniz ama mevcut bilginiz dahilinde hevesiniz zaten uzun vadede kırılacaktır.
bunun için en azından sizin veya sizin gibi belli birşey ortaya koymak isteyen insanların hangi dille yazacaksa ve hangi veritabanını kullanacaksa o dile hakim olması ve o veritabanı tüm fonksiyonlarıyla kullanabilmesi gerekir.

Saygılarımla . . .

Son Düzenleme: asiatico ~ 23 Ekim 2012 15:31