如何使此PHP / MySQL游戏地图更有效?

瑞奇

我目前正在研究基于网格的游戏地图原型。每个“图块”为24px x 24px,脚本会绘制31个基于x的图块和21 y基于的图块,从而在屏幕上总共绘制了651个图块。

我遇到的问题是脚本的运行方式,它是对每次刷新页面时绘制的每个单个图块进行数据库调用,这意味着它正在进行651次数据库调用以检查图块是什么以及图块的坐标。对我而言,这似乎效率低下。

x和y坐标存储在会话变量中。当用户单击地图下方的方向按钮之一时,它将相应地偏移适当的坐标并重绘地图。

如果我根据自己使用的逻辑来创建游戏,然后玩数字游戏,那么假设我有100位玩家在任何时候玩游戏,而他们都在浏览地图,同时进行65,100个数据库调用。这对于系统资源来说是不好的。

当我创建并启动了一些基于浏览器的游戏时,对于PHP / MySQL编程,我并不是一个菜鸟,但是,这是我第一次尝试制作地图并进行导航。

可以在此处查看图块地图:

http://fordserver.com/gamemap/

实际的代码可以在这里找到:

http://fordserver.com/gamemap/index.txt

谁能推荐一种使此运行更平稳的好方法?您会注意到,使用方向按钮之一时,游戏可能需要花费一些时间才能生成实际地图,尤其是在您第一次访问地图时。

我尝试过考虑使用数组和其他所有方式的不同方式,但实际上,在我计划合并功能时,游戏需要检查每个单独图块的数据库,以便显示特定用户当前所在的位置或建筑物等

我非常感谢我对此提供的任何帮助。

瑞奇

绒毛

我曾经实现一个简单的游戏,该游戏也使用笛卡尔坐标系,并且每个点在数据库中都有数据行。我只需通过以下几行打一个电话就可以解决此问题:

$xCord=34;
$xCord=16;
// Example data


select
    ID,
    tileImage,
    xcord,
    ycord,
    otherStuff
from
    mainLocationTable
where
    abs(xCord-$xCord)<15
    and abs(yCord-$yCord)<15

这将在播放器位置本身的任意一侧为您提供15个磁贴。当然,您可以根据自己的需要进行自定义,但是原理是相同的。如果您将x,y笛卡尔坐标存储在数据库中,则很容易将饼在单个查询中提取所需的所有数据并从中取出。

当您还在会话中存储玩家位置的数据时,您可以简单地让代码本身进一步检查玩家所在的磁贴的详细信息-或使用第二个调用来获取有关该玩家的更多详细信息一个位置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使此删除查询在MySQL中更有效?

来自分类Dev

如何使此PHP函数在规模上更有效?

来自分类Dev

如何使此查询更有效?

来自分类Dev

如何使此循环更有效?

来自分类Dev

在缩放中,mapTo如何比地图更有效

来自分类Dev

如何使此PHP代码更有效地运行?

来自分类Dev

如何使此递归函数更有效?

来自分类Dev

添加GROUP BY如何使此查询更有效?

来自分类Dev

如何使此pl / sql游标更有效?

来自分类Dev

如何更有效地编写此CSS?

来自分类Dev

如何使此pl / sql游标更有效?

来自分类Dev

如何更有效地编写此CSS?

来自分类Dev

php | 更有效的功能

来自分类Dev

流如何更有效?

来自分类Dev

如何使循环更有效?

来自分类Dev

如何使Listview更有效?

来自分类Dev

如何使GridView更有效?

来自分类Dev

如何使for内部循环更有效?

来自分类Dev

编写此查询的更好/更有效的方法

来自分类Dev

编写此算法的更有效方法?

来自分类Dev

生成此字符串的更有效方法

来自分类Dev

用更有效的代码替换此While循环?

来自分类Dev

此R循环的更有效版本

来自分类Dev

在GLSL中执行此操作的更有效方法

来自分类Dev

编写此查询的更有效方式?

来自分类Dev

减少行数或使此代码更有效

来自分类Dev

如何使用 PHP 更有效地将 csv 文件导入 MySQL 数据库?

来自分类Dev

如何更有效地编写此Django HTML模板?

来自分类Dev

如何使用功能更有效的样式重写此代码?