簡體   English   中英

如何實時更新瀏覽器游戲屬性,例如Travian游戲中的4種資源?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM