Php / Mysql游戏:如何实现超时升级

时间:2011-08-21 21:10:13

标签: php mysql

我开始设计一个基本的PHP游戏,其中一些属性可以随着时间的推移而升级。

我想知道实现它的最佳方式是什么(以及数据库) 我想到这样的事情:

PlayerID | Property1 | Property1_isUpdating(bool)| Property1_Timeout(日期)

但我必须为每个玩家的属性创建2个额外的字段。

或者我可以使用日期作为超时,当玩家连接时,我会检查并更新我需要的东西..但它似乎也不好。

我几乎肯定有“一个好方法”可以做到这一点......(并且几乎可以肯定它不是之前提到过的那些)

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

我会这样做:

PlayerId | PropertyId | UpgradingTo | UpgradeCompleteAt

这使您可以选择拥有多个升级路径。 每个游戏勾号,浏览UpgradingTo <> NULL AND UpgradeComplateAt < currentTime()所在的建筑物并设置PropertyId = UpgradingToUpgradingTo = null。您可以选择重置UpgradeCompleteAt,但保留它可能是一个有用的机制。例如“你只能将属性X升级到属性Y,如果它已经是X至少3天”会添加一个有趣的元素。

*请注意,如果你没有比赛记录,我会做一个。它本质上是每隔X个时间循环一次,可能是每0.1秒,可能是每分钟。

答案 1 :(得分:0)

我认为您应该为具有字段

的属性创建单独的表

id,player_id,property,is_updated,timeout,property_type

并更新此表中的特定属性。

另一种方法是以xml字段格式将所有属性存储在player表中:

&lt; property1 name =“”is_updatied =“1”timeoute =“0”&gt; &lt; property2 name =“”is_updatied =“1”timeout =“0”&gt;

并使用mysql extractValue函数http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html#function_extractvalue