我开发了一个棋盘游戏应用程序(适用于 android/iphone)并向其中添加了一个多人游戏组件。正在考虑将 App Engine (java) 用于后端,因此以这种方式实现,但事实证明 CPU 成本可能会太高(App Engine 可能不是此类应用程序的最佳选择)。
我对 php 的性能没有太多经验,我想知道是否有人可以给我一个想法,如果我正在将它转换为 php 的错误路径。基本步骤是:
- 向我的服务器发出了 Http 请求,玩家正在尝试执行移动(这是一款回合制游戏)。
- 从数据库中获取游戏状态。这可能会存储为一个平面 json 字符串(为游戏状态创建模式没有多大意义)。
- 将 json 字符串反序列化为可用的游戏状态对象(如房屋、汽车等)。
- 最后执行游戏状态操作(例如将玩家的汽车移到新房子等)。
- 序列化修改后的游戏状态,持久化回数据库。
- 将 json 响应发送回玩家,其中将包含更新的游戏状态。
我不知道在单个 http 操作的上下文中尝试这样做是否需要大量工作。一些数字:
- 预计在任何给定时间都有大约 500 名玩家使用该服务。
- 每个游戏只包含 2 到 8 个玩家,每个游戏都是完全独立的。
- 序列化后的 json gamestate 对象大小约为 25k。
- json gamestate 对象必须反序列化大约 300 个对象才能恢复游戏的完整状态(房屋、汽车等)。
这不现实吗?我认为最好的解决方案是获得一个专用服务器,并将所有游戏状态留在内存中,但我现在正在尝试使用一些共享主机平台。这意味着我必须不断地来回访问数据库以获取游戏状态、反序列化和序列化。
感谢您的任何想法
最佳答案
如前所述,任何正规的托管公司都能轻松应对流量。我只想提几点:
您确定每次都来回发送整个游戏状态吗?您应该能够仅发送更改的内容...当然,这在很大程度上取决于您的游戏的运行方式。
您可能需要考虑的唯一其他问题是滞后:服务器请求很容易花费一秒钟或更多时间来完成整个编码/发送/等待/接收/解码过程。现在,如果您的游戏是回合制的,这可能不是主要障碍,但始终要牢记这一点(还要考虑连接速度较慢的人,即没有 3G 覆盖)。
无论如何,你现在看起来很不错。如果我是你,我会去写一些测试看看结果如何。除此之外,祝你好运! ;-)
关于php - 在 http 请求中进行大量的 php 操作,现实吗? (创建很多对象等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4927760/