以这种方式在网页游戏中使用数组用于地图图块会过于耗费资源吗?

时间:2015-02-02 17:49:13

标签: php arrays csv

我正在使用基于PHP的浏览器RPG,其中玩家在网格地图上移动。我的地图是通过二维矩阵定义的,每个值都是21个字符的字母和数字字符串。此字符串是一个编码值,告诉游戏该图块上发生了什么,它为将来的其他功能提供了广泛的选项。我考虑只使用整数来表示这个值,但我决定保留一些地图的可读性,这样我仍然可以看到文件。

我目前使用地图创建脚本将地图输出到.csv文件中,然后玩家移动类打开该地图文件,找到玩家当前坐标并按照玩家指示的方向移动。

我当前的地图尺寸最高为200x300个瓷砖,每个瓷砖包含该网格的值(AAAAB111CCC2222223333);但是,我希望能够在将来保持这些高达1000x1000的能力(大于可能会看到整个世界各地区的地图)。

我将玩家坐标存储在用户状态数据库中,因此我将只读取播放器移动范围内的.csv地图线,并防止整个地图被加载到变量中玩家移动的时间。但是,这仍然可以是11x1000网格,每个图块中包含21个字符代码。在找到每个动作的结果后,我将取消设置数组。

即使采取了我的预防措施,我担心如果许多用户同时玩,这将成为将来太多的资源负担,我不知道是否应该将地图信息存储在数据库中。 / p>

我的其余用户和游戏数据存储在几个大型数据库中。当我开始处理我的游戏时,我并不相信这些地图网格数据集足够复杂,可以将它们放入自己的数据库中,而且使用数组进行移动似乎很容易({{1} })。但是,现在我想知道使用.csv文件是否会损害我的表现。

1 个答案:

答案 0 :(得分:0)

从csv读取文件肯定会更多,特别是如果你增加地图大小。我只看到部分csv用于加载的问题是你仍然需要解析数据以获得玩家的x,y坐标。在(或同时)解析每个字符串以查明它是否包含在近播放器集中。

正如你所说,随着时间的推移,你期待更多的球员。打开/解析文件所需的读取驱动器读取量将快速增长并导致问题,除非您有某种形式的缓存可用。

所以,我会说使用数据库,越快越好。是的,使用csv会损害性能。