php - 我正在制作一个带有 map 的 PHP 游戏,我有一些问题

标签 php mysql dictionary

好吧,我正在制作一个带有玩家可以行走的 map 的 PHP 网页游戏。但我非常关心游戏的整体性能。有点像这样:

  1. 页面 为了开始节省资源,我制作了一个带有 iframe 的主页到 map 代码,并在下面进行了如下聊天:

(起始页) (带有 map.php 代码的 iframe) (包括 chat.php) (末页)

因此,我不必重新加载所有页面,而且当我们在 map 上行走时,聊天会保持静止。

  1. map 代码: 一开始它很慢而且有问题,但我设法让它运行得非常简单,就像这样: map 按区域划分,每行存储 9x9 map 的单个图 block 。所以我的数据库看起来像这样:

id-map(这定义了区域)-pos(这定义了瓦片的位置)-tile(瓦片的图像)-block(瓦片是否可行走)

所以当我调用创建 map 时,我要求选择 map X 的所有行,然后脚本创建一个 9 行 9 列的表格,并使用特定的图 block 图像设置每个单元格的背景。

虽然这是脚本执行,但它也会以相同的方式为 map 中的任何其他玩家和对象请求数据库,但将它们显示为单元格内的 img,而不是背景。

为了保存对数据库的调用,我的想法是:在 map 创建的每个循环中,它创建一个隐藏的输入,其名称是实际 map 位置,值是 img,因此它存储在浏览器中并重新发送每次我们走路时,一旦我们进入它,它就会调用 map 。

为了行走,我制作了一个大表格,用于行走的箭头是按钮,每次我们行走时,页面都会发送一个 POST,并且根据游戏行走的方向,它会更新数据库并再次生成 map 。

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

1- 如果有大约 50 名玩家同时行走,服务器会过载吗? 2- 我应该对这个 map 脚本做任何提示、改进或优化吗?可能有一种方法可以节省数据库调用并减少过载?

(我不想使用ajax)

最佳答案

是的,您的服务器会过载。再加上延迟会让游戏难以忍受。

使用 Ajax。

向服务器/数据库发送操作命令。 “移动|玩家 1|3|3”

然后让您的客户端从数据库接收更新命令。 “攻击|玩家 1|玩家 2|伤害=30”

只更新你必须更新的内容,不要刷新整个 map 。

你仍然有延迟,但你将能够优雅地处理更多玩家。

关于php - 我正在制作一个带有 map 的 PHP 游戏,我有一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4654399/

相关文章:

php - _POST 时间数据未出现

mysql - 带日期的表,然后是下一个日期

html - 为什么 mysql 数据值不会出现在选项菜单中?

python - 如何创建具有相同键的字典列表?

php - 从 mySQL 表中的地址生成纬度/经度

php - 我应该将表单和处理器写在同一个文件中还是将它们分开?

php - 是否存在 MySQL、PHP、JSON 框架?

csv - 如何使用空格分隔的键访问值?

python - 在 Python 中基于键/值过滤字典和创建子字典?

php - 安装 Mongo PHP 扩展 (php_mongo.dll)