我目前正在研究基于网格的游戏地图原型。每个“图块”为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] 删除。
我来说两句