2011-08-21 45 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

相关问题