Java映射导入类型
我正在用Java创建一个游戏,目前我将ASCII地图(world)导入到2D数组中,例如: world.txtJava映射导入类型,java,arrays,file,vector,ascii,Java,Arrays,File,Vector,Ascii,我正在用Java创建一个游戏,目前我将ASCII地图(world)导入到2D数组中,例如: world.txt ################### #-----------------# #-----###---------# #-----###---------# #-----------------# ################### 在Java中: char[][] world = new char[lines][characters_per_line]; // Import
###################
#-----------------#
#-----###---------#
#-----###---------#
#-----------------#
###################
在Java中:
char[][] world = new char[lines][characters_per_line];
// Import ASCII map into world[y][x] array so that world[2][6] would give: #
然而,我计划创建巨大的地图
(10000 x 10000个瓷砖,其中一个瓷砖代表大约5个像素)。由于这些地图需要由游戏客户端(从游戏服务器)下载,因此需要大量带宽
因此,我考虑使用位图而不是ASCII贴图来导入,但这些贴图也很大,而且随着贴图变大,将很难管理
我正在寻找一种文件类型,它的文件大小相对于位图和ASCII贴图较小,可以在相同的上下文中使用。
(例如,某些矢量文件)根据数据,您可能只希望传输实际放置“#”的位置。此外,还可以对有多少个后续的“#”进行编码。例如:
0 0 21
1 20 2
2 6 3
...
等等。把这个读作
为什么不把地图和游戏一起交给客户呢?只需在登录请求时验证
映射文件
。例如:您将向客户端发送映射名称,在响应中,他将向您发送md5哈希,您将加入或拒绝他。这种方法不需要下载。这是个好主意,但你不认为ASCII映射或位图在这方面效率很低吗?特别是当文件大小变得非常大时?如果您要传输数据压缩,那么使用当前使用的方法就相当容易了,因为这些文件只是普通文件,有很多常见字符。请务必先尝试简单的解决方案。查看使用gzip
压缩地图的效果,然后查看只在服务器上打开gzip
编码是否足够,而不需要在代码中插入代码。