我正在创建一个基于伪回合制的在线策略浏览器游戏,许多人在很长一段时间(几个月)内在同一个世界中玩游戏。为此,我想要一张64000x64000瓦片= 40亿瓦片的地图。我每个磁贴需要大约6-10个字节的数据,总共大约30GB的数据用于存储地图。
每个瓷砖应具有类型(水,草,沙漠,山),资源(木材,奶牛,黄金)和playerBuilt(道路,建筑)等属性
客户端只需要同时访问大约100x100个磁贴。
我已经在客户端处理了地图。我面临的问题是如何在服务器端存储,检索和修改此地图中的信息。
所需功能:
到目前为止我所考虑的事项:
我打算在这个项目中使用java + mysql作为后端。我还处于早期阶段,如果需要,我们愿意改变技术。
我的问题是:上述三种方法中哪一项似乎可行和/或是否有其他方法可以做到这一点我还没有考虑过?
答案 0 :(得分:0)
取决于:
如果是稀疏的,请使用散列图而不是2D数组。
如果密集,那将更具挑战性,您可能需要使用数据库或一些特殊的数据结构+缓存。 您可以检测到热区并将其保留在内存中一段时间,死区(没有玩家,没有活动......)可以存储在数据库中并按需读取。 您也可以在几个过程中加载数据:首先是地形,然后是其他对象......每个层都可以以不同的方式存储。例如,地形可能是生成的perlin噪声+另一个可以修改的层。