我开始设计一个基本的PHP游戏,其中一些属性可以随着时间的推移而升级。
我想知道实现它的最佳方式是什么(以及数据库) 我想到这样的事情:
PlayerID | Property1 | Property1_isUpdating(bool)| Property1_Timeout(日期)
但我必须为每个玩家的属性创建2个额外的字段。
或者我可以使用日期作为超时,当玩家连接时,我会检查并更新我需要的东西..但它似乎也不好。
我几乎肯定有“一个好方法”可以做到这一点......(并且几乎可以肯定它不是之前提到过的那些)
感谢您的帮助
答案 0 :(得分:1)
我会这样做:
PlayerId | PropertyId | UpgradingTo | UpgradeCompleteAt
这使您可以选择拥有多个升级路径。 每个游戏勾号,浏览UpgradingTo <> NULL AND UpgradeComplateAt < currentTime()
所在的建筑物并设置PropertyId = UpgradingTo
和UpgradingTo = 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