[英]How to live update browser game attributes like the 4 resources in Travian game?
我想制作一個類似Travian(或Ikariam)的基於網絡的游戲。 該游戲將基於PHP和MySQL。 我想知道如何實現游戲屬性的實時更新。
對於前端,我可以使用AJAX調用(從數據庫中獲取最新值),甚至偽造的值更新(不與服務器通信)來實現。
對於后端,這是由PHP cron作業(每隔幾秒鍾運行一次)完成的嗎? 如果是這樣,有人可以給我提供一些示例代碼嗎?
順便說一句,我知道如果我使用IIS + FastCGI將會很麻煩。
===版本信息===
PHP的:5.2.3
IIS:6.0與FastCGI
操作系統:Windows Server 2003 Standard R2
正確答案取決於您的確切需求。
每個人都總是以相同的速度獲得資源嗎? 如果是這樣,一種簡單的解決方案是跟蹤用戶的存在時間,根據用戶獲得的速率計算資源量,然后減去用戶已花費的資源總數。 但是,如果速率可以更改,那將是一個問題,因此,如果使用此解決方案,除非完全重寫處理(例如,對下面的方法),否則您將很難選擇合適的速率。 。
如果它改變了人們獲取資源的速度,則需要定期更新數據。 一項cronjob / scheduled任務可以很好地確保每個人都被更新,但是在某些情況下,最好測量一下自從更新了每個用戶的資源以來已有多長時間,然后在他們每次加載頁面時對其進行更新。在登錄時,將他們離開的時間乘以他們獲得資源的速度-這樣一來,在真正需要新值之前,您無需進行更新。
您還可以在每次頁面或javascript請求時計算資源。 您需要存儲最近的更新時間。
對於像Travian這樣的資源管理,您需要跟蹤上次更新用戶資源的時間。 如果讀取資源值(用於頁面刷新或其他操作),則需要添加自“上次更新時間”以來獲得的資源量(取決於用戶獲取的資源量和數量)並將該值發送給瀏覽器。 您也可以讓瀏覽器腳本計算這些金額。
你可能要考慮以某種方式緩存所有的資源量,因為這些值都需要大量的 ,改善與數據庫通信。
如果用戶完成了資源字段的構建,市場的使用,結構的構建等,則需要更新資源量(以及“最后更新時間”),因為您無法簡單地跟蹤此類事件。
通過計算資源,減少了數據庫負載,因為您不需要在用戶每次刷新瀏覽器頁面時都每次都寫入新值。 由於舍入誤差較小,因此它也更准確。
為了使頁面刷新之間的資源增加,您需要一種如Frank Farmer所述的方法。 只需將資源量和“增益頻率”嵌入一些javascript中,然后將每個“增益頻率”將資源量增加1。
它可能是一個過時的帖子,但是它會立即出現在Google上,所以這是我一直在開發的游戲的另一種選擇。
我使用的客戶端JavaScript使用Flash套接字從主機上運行的專用游戲服務器獲取實時更新。
我使用http://devpro.it/xmlsocket/中的xmlsocket套件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.