Travian veya ogame'deki gibi zaman bazlı bir oyun yazmayı düşünüyorum ve bu zaman olayı için söyle birşey düşündüm.
Traviandaki madenler saniyelik olarak geldiğinden, kişinin sayfayı son yeniledi tarih ve şimdiki tarih arasında kaç saniye varsa ona göre çarpım yapacak ve sonucu belirleyecek. Bunun sorun yaratacağını düşünmüyorum ama bundan daha değişik birşey yapılabilir mi?
Zamanlama Mantığı (Travian ve Ogame gibi) ?
13
●1.701
- 02-10-2008, 23:31:26
- 03-10-2008, 10:44:05Üyeliği durdurulducron tab ı her saniye çalıştırırsa sorun olur. Dediği mantıklı geldi bana.
- 03-10-2008, 11:55:47Dediğini bende düşünmüştüm ama her saniye bir sql sorgusunu çalıştırmak, çok daha saçma geldi :S Şimdi en mantıklısı kullanıcının son girdiği tarih ve şimdiki tarih arasındaki farka göre mi yapmak? (kullanıcının şimdi oturum açtığını varsayalım)Serkan adlı üyeden alıntı: mesajı görüntüle
Edit :
Değişik birşeyden kastım Serkan dediği gibi benim fikrimden farklı birşey. Daha değişik, basik ve kullanışlı bir yoldan yapmak.mustafa90 adlı üyeden alıntı: mesajı görüntüle - 03-10-2008, 13:01:55Üyeliği durdurulduPencereyi kapattığı anda çıkış yapmasını sağlaman gerek ama.
- 03-10-2008, 13:44:35Hayır. Mesela Kışla'nın seviyesini yükselteceksin. Bunun içinde 00:15:00 (sa:dk:sn) zaman geçmesi gerekiyor. Yükselt'e tıklayınca bu geri sayım başlıyacak. Bitincede seviye yükselecek.Youngwe adlı üyeden alıntı: mesajı görüntüle
Bence gerek yok. İlk tarih dediğim şey, olayın başlama tarihi. Yani Kışla'nın seviye yükseltmesinin başlama tarihi. O tarihte veritabanında kayıtlı olur. Sonuçta 1 gün veya daha uzun süreli upgrade'lerde olacaktheapeiron adlı üyeden alıntı: mesajı görüntüle
- 03-10-2008, 14:13:20Kimlik doğrulama veya yönetimden onay bekliyor.Basitçe şöyle olur üye giriş yaptığı zaman en son giriş zamanına bakarsın misal saat
15:30 da çıkış yapmış ve sende bunu db'ye kaydetmişsin üye offline
Üyenin offline olduğu süre zarfında bişey çalıştırmana filan gerek yok.Üye giriş yaptığında şimdiki zamandan son giriş zamanını çıkarırsın ne kadar süre geçmiş misal üye 14:30'da giriş yaptı 1 saat geçmiş hesaplarsın 1 saat'te ne kadar mağden geliyor diye onu eklersin mağdenine sonra son giriş zamanını 14:30 yaparsın üye her mağden sayfasına baktığında aynı şeyi tekrarlarsın şimdiki zamandan son giriş zamanı yada işte upgrade zamanı diyelim ondan çıkarırsın süre ne kadarsa mağdeni arttırırsın üyeye gösterirsin.
Bu zamanlanmış görevler içinde aynı mantığı kullanırsın misal mağden binası diye bir tablo olur
id uyeno bitis_suresi
üye mağden seviyesini bir yükseltti misal yükseltme 1 saat sürecek
şimdiki zaman + 1 saat'i hesaplarsın ve bitis_suresi olarak eklersin db ye üye mağden yükseltme sayfasına baktığında bitis_suresinden şimdiki zamanı çıkarırsın bakarsın işte kaç dakika kalmış onu yazarsın oraya javascript ile timer eklemek zor değil.Eğer zaman süre - ise mağden banası tablosundan veriyi silersin mağden binasının seviyesini bir arttırırsın.
Yani sonuç olarak verileri üyeye göstereceksin son upgrade zamanını alacaksın.
Ogame'de mesela 5 dakikada bir sıralamalar değişiyor sende cron ile 5 dakikamı 1 saattemi ne kadar sürede istersen o kadar sürede bir kod çalıştırırsın bu kod işte şimdiki zamandan son upgrade zamanını çıkarırsın tüm üyeler'in mağdenini arttırırsın. - 03-10-2008, 14:36:01Üye 2 gün oyuna girmemişse ve bu süre zarfında biri saldırmışsa alacağı maden sayısı normalden az olacak. Ama dediğin gibi cronjob ile bir kod çalıştırırsak bu kayıp en aza indirilir.S4l1h adlı üyeden alıntı: mesajı görüntüle