我正在制作一个PHP网页游戏,其中包含玩家可以继续玩的地图。但我非常关注游戏的整体表现。它有点像这样:
(起始页) (带有map.php代码的iframe) (包括chat.php) (结束页)
所以有了这个,我不必重新加载所有页面,当我们在地图上行走时聊天仍然停止。
id-map(这定义了区域)-pos(这定义了图块的位置)-tile(图块的img)-block(如果图块是否可以步行)
因此,当我打电话创建地图时,我要求选择地图X的所有行,然后脚本创建一个9行乘9列的表格,并使用特定的图块图像设置每个单元格的背景。
当脚本执行时,它也会以相同的方式向地图中的任何其他玩家和对象请求数据库,但在单元格内显示为img,而不是背景。
保存对db的调用,我有这样的想法:在地图创建的每个循环中,它创建一个隐藏的输入,其名称是实际的地图位置,值是img,因此它存储在浏览器中并重新发送每次我们走路,一旦我们进入,它就会要求地图。
步行我做了一个大表格,走路的箭头是按钮,每次我们走路页面发送一个POST,并根据游戏走向的方向,它更新数据库并再次生成地图。
好吧,就是这样。我已经在使用GZip压缩了。 所以我的问题是:1-如果有50名玩家同时行走,服务器是否会超载? 2-我应该对这个地图脚本做什么提示,改进或优化?可能是一种节省数据库调用并减少重载的方法吗?
(我不想使用ajax)
答案 0 :(得分:2)
是的,您的服务器将超载。此外,滞后将使游戏无法忍受。
使用Ajax。
将操作命令发送到服务器/ DB。 “MOVE | PLAYER 1 | 3 | 3”
然后让您的客户端从DB接收更新命令。 “ATTACK | PLAYER 1 | PLAYER2 | DAMAGE = 30”
只更新您需要更新的内容,不要刷新整个地图。
你仍然有滞后,但你可以优雅地处理更多的球员。