我正在制作一个带有地图的PHP游戏,我有一些问题

时间:2011-01-11 05:09:09

标签: php mysql map

我正在制作一个PHP网页游戏,其中包含玩家可以继续玩的地图。但我非常关注游戏的整体表现。它有点像这样:

  1. 页面 为了开始保存资源我创建了一个带有iframe的主页面到地图代码,并且下面的聊天如下:
  2. (起始页) (带有map.php代码的iframe) (包括chat.php) (结束页)

    所以有了这个,我不必重新加载所有页面,当我们在地图上行走时聊天仍然停止。

    1. 地图代码: 在一开始它是非常慢和马车但我管理它运行非常简单,像这样: 地图按区域划分,每行存储9x9地图的单个图块。所以我的数据库看起来像这样:
    2. id-map(这定义了区域)-pos(这定义了图块的位置)-tile(图块的img)-block(如果图块是否可以步行)

      因此,当我打电话创建地图时,我要求选择地图X的所有行,然后脚本创建一个9行乘9列的表格,并使用特定的图块图像设置每个单元格的背景。

      当脚本执行时,它也会以相同的方式向地图中的任何其他玩家和对象请求数据库,但在单元格内显示为img,而不是背景。

      保存对db的调用,我有这样的想法:在地图创建的每个循环中,它创建一个隐藏的输入,其名称是实际的地图位置,值是img,因此它存储在浏览器中并重新发送每次我们走路,一旦我们进入,它就会要求地图。

      步行我做了一个大表格,走路的箭头是按钮,每次我们走路页面发送一个POST,并根据游戏走向的方向,它更新数据库并再次生成地图。

      好吧,就是这样。我已经在使用GZip压缩了。 所以我的问题是:

      1-如果有50名玩家同时行走,服务器是否会超载? 2-我应该对这个地图脚本做什么提示,改进或优化?可能是一种节省数据库调用并减少重载的方法吗?

      (我不想使用ajax)

1 个答案:

答案 0 :(得分:2)

是的,您的服务器将超载。此外,滞后将使游戏无法忍受。

使用Ajax。

将操作命令发送到服务器/ DB。 “MOVE | PLAYER 1 | 3 | 3”

然后让您的客户端从DB接收更新命令。 “ATTACK | PLAYER 1 | PLAYER2 | DAMAGE = 30”

只更新您需要更新的内容,不要刷新整个地图。

你仍然有滞后,但你可以优雅地处理更多的球员。