和朋友一起,我们想要开发像ogame一样的php游戏(就像一个huuuuuge人数)。为了避免破坏我们的牙齿,我们开始花费大量时间设计网站并思考使用的技术以及如何使其适应我们的网站。 但我们发现了一个巨大的问题,我们不知道如何解决它,这就是我在这里的原因。 首先,我了解到ogame是一个“PHP服务器游戏”,所以我们选择Symfony技术开始(具有坚实的结构和演化代码等...)。 但游戏必须非常动态,我们认为Angular JS可以帮助我们在不刷新页面的情况下使其动态化(动画等等)。
然而,我们考虑了如何存储我们的信息,并且在开始时,存储用户,船只和单位并不是最复杂的。但是,在计时器结束时(对应于一次移动)在车队和军队之间存储计时器和拦截/战斗突出了一个新问题:怎么做?
尽可能准确:我们认为有必要在服务器上连续执行php代码,就像在C ++这样的对象语言中,但我们不知道如何去做。
我们当然缺乏有关解决它的网络技术或存储这些计时器(结构类型)的方法的知识。
作为简历,这里有一个我们有问题的例子:
玩家正派军队前往(x,y),需要3600秒。一个php对象可能看起来像“army_move”描述军队,目的地,到达日期...... Angular(或其他JS代码)显示倒计时(1小时00分00秒 - 0小时59分59秒 - ...)。如果玩家停止移动,军队会回来(对服务器的简单请求会改变数据库中的对象)。但如果军队最终设法攻击目标,会发生什么?怎么样 ? 在我们看来,服务器必须不断检查计时器,知道什么时候发送战斗支持,打架等...但它是PHP所以如何做到这一点? 此外,当玩家试图在一秒内攻击自己时,如何确保解决方案具有足够的准确性来管理条目/攻击?系统在处理时不得丢失任何秒数。 我们认为存储在数据库中的计时器可能是一个解决方案,但显然它需要太多的处理能力,我们知道哪种解决方案是由游戏,如traogame,travian等带来的...... 有谁知道一个结构/技术来帮助我们?我们搜索并没有发现任何内容,但是我们可能没有输入正确的关键字,因此欢迎提供相关文档:)
感谢读我和我为我的英语道歉,我希望我已被理解并等待你的答案:)(或问题)。
答案 0 :(得分:0)
Php是一个服务器端脚本,它在每个来自客户端的新请求之后启动,并在几微秒后结束,就在响应被发送回客户端时。在这短时间内,可以从数据库中读取信息或将信息写入数据库。然后,在(新的同一用户)请求再次出现之前,可能会有几分钟,几小时甚至几个月的时间段。因此,服务器或数据库中的计时器是无意义的。相反,您应该在每个请求时将实际时间存储到数据库中,并计算实际请求和先前请求之间的时间差。您可以在javascript中使用计时器,但当然不会提供有关其他玩家的任何信息。如果您确实需要随时了解其他玩家的位置(例如),那么您可以考虑websockets。