2011-08-21 44 views
2

我開始設計一個基本的PHP遊戲,其中一些屬性可以隨時更新。Php/Mysql遊戲:如何實現隨着時間的推移升級

我想知道什麼是實現它的最好方法(和數據庫以及) 我是這樣的認爲:

PlayerID | Property1 | Property1_isUpdating(bool)| Property1_Timeout(date)

但是我必須爲每個玩家的屬性創建2個額外的字段。

或者我可以使用一個日期作爲超時,當玩家連接時,我檢查並更新我需要的東西..但它似乎也不是很好。

我幾乎可以肯定有「一個很好的方式」來做到這一點。(和幾乎可以肯定它不是之前提到的那些)

謝謝您的幫助

回答

1

我會做到這一點:

PlayerId | PropertyId | UpgradingTo | UpgradeCompleteAt 

這使您可以選擇具有多個升級路徑。 每個遊戲刻度,通過你的建築物,其中UpgradingTo <> NULL AND UpgradeComplateAt < currentTime()和設置PropertyId = UpgradingToUpgradingTo = null。您可以選擇重置UpgradeCompleteAt,但它可能是一個有用的機制來保持它。例如,「只有X屬性至少有3天才能將屬性X升級到屬性Y」會添加一個有趣的元素。

*請注意,如果您沒有遊戲勾號,我會創建一個。它基本上是每X次循環的東西,可以是每0.1秒,可以是每分鐘。

+0

嘿,先謝謝你的回答。 我喜歡你的想法,但我很擔心每X秒運行一次腳本來更新這些屬性的想法。我的意思是,如果我有一個下降的球員,這個腳本將使我的服務器變得瘋狂..只是爲了更新屬性。 問題是:我不知道我是否可以找到不需要像這樣的腳本的東西。所以我會更多地考慮一下。 無論如何非常感謝你的時間glowcoder –

+0

大多數遊戲都有某種遊戲刻度。即使是實時遊戲也有一個。如果你每X秒運行一次,由於解釋器,線程等產生的原因,這可能會很慢。如果你有一個腳本在遊戲啓動時運行,然後睡眠了(X秒--timeTakenToRunLastIteration),它將會很多更高效。我已經參與了(管理或編程)了十幾場比賽,而不是一場,即使是基於php-web的比賽,也沒有比賽結果。 :-) – corsiKa

+0

我喜歡你的想法,唯一令我感到困擾的是我的屬性從現在開始與用戶分開。如果我需要添加一個屬性,我將不得不創建X個新記錄(而不僅僅是添加一個帶有默認值的簡單字段) 無論如何,我認爲我會給出一個鏡頭。 非常感謝! –

0

我想你應該創建單獨的表屬性包含字段

ID,player_id,財產,is_updated,超時房產類型

,並更新該表中的特定屬性。

另一種方法是店球員表中的所有屬性的XML字段格式:

< property1 NAME = 「」 is_updatied = 「1」 timeoute = 「0」 > < property2 NAME = 「」 is_updatied =「1 「超時=」 0" >

而且用mysql extractValue和功能http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html#function_extractvalue

+0

當您的升級完成時,您將如何知道? – corsiKa

+0

我想念那個超時是日期字段。所以編輯了我的答案。無論如何,這只是一種方法,你可以添加任何額外的字段(屬性) –

+0

所以,'property'和'property_type'有什麼區別? – corsiKa

相關問題