我开始在libgdx中开发terraria克隆,并生成了图块。图块被分成16x16的块,但是生成所有的块需要太长的时间。目前,我正在生成400个块(102400个块)。我是这样产生这些块的:
data = new int[width][height];
for(int y = 0; y < height; y++){
for(int x = 0; x < width; x++){
data[x][y] = 1;
}
}
chunks = new Chunk[chunks_x][chunks_y];
for(int y = 0; y < chunks_y; y++){
for(int x = 0; x < chunks_x; x++){
chunks[x][y] = new Chunk(x, y, this);
}
}
区块类内部的平铺生成代码:
tiles = new Block[World.chunkSize][World.chunkSize];
for(int vy = 0; vy < World.chunkSize; vy++){
for(int vx = 0; vx < World.chunkSize; vx++){
if(world.GetTile(vx + x * World.chunkSize, vy + y * World.chunkSize) >= 1)
tiles[vx][vy] = new Block(vx * 16 + x * World.chunkSize * 16, vy * 16 + y * World.chunkSize * 16, world.data[x * World.chunkSize + vx][y * World.chunkSize + vy]);
}
}
生成一个如此大小的世界大约需要2分钟。我知道这是一个很大的数字,但我很好奇Terraria(或任何其他克隆)是如何设法使时间变小的。谢谢!
编辑:这是块类(http://pastebin.com/SFCkJKur)和实体类(http://pastebin.com/w3ay2nkb).
你在问题中提到了libgdx,这个引擎附带了一个制作良好地图API,可以处理图块地图并提供其他有用的功能:
关于Libgdx官方维基:
性能注意事项
虽然我们试图使渲染器尽可能快,但您可以考虑一些事情来提高渲染性能。
仅使用图层中单个切片集的切片。这将减少纹理绑定。将不需要混合的磁贴标记为不透明。目前,您只能以编程方式执行此操作,我们将提供在编辑器中或自动执行此操作的方法。不要过分使用层数。
在这里查看更多信息
Chunk
和Block
class的目的是什么?它们是用于渲染的吗?因为当你考虑的时候,你不需要这么做。你真的只需要渲染玩家当前可见的瓷砖,而不需要更多。
许多这种性质的游戏所做的就是确定玩家的当前位置,然后准确计算需要渲染哪些图块/块以及在哪里。
这里有两个很好的来源,可以让你开始做这件事:
另一方面,Chunk
和Block
classes是否仅用于包含构成世界的数据?在这种情况下,您也不需要初始化它们。您应该以一种更轻量级的方式存储数据-可能在文件系统中。
我正在开发一个flappy bird克隆,我真的被我想要创建的按钮卡住了。对不起,我知道这是一个基本问题,但我是初学者,我真的需要你的帮助。所以,游戏已经基本完成了,但是我想做一个按钮来做同样的事情,而不是触摸整个屏幕让一只鸟跳起来。这是我的InPurthandler课程: 我在GameScreen类中创建了一个舞台和一个演员(按钮)(它不工作),并在屏幕上显示,但我不知道下一步该怎么做。再一次,
问题内容: 我想知道如何创建JSON(JS)对象然后克隆它。 问题答案: 如何在javascript / jquery中创建JSON对象? 没有什么像JSON 对象 。JSON代表 JavaScript Object Notation ,基本上是一个字符串,它编码类似于JavaScript对象常识的信息。 但是,您可以使用创建这种编码(这将导致 字符串 ),请参见JavaScript中的JSON。
本文向大家介绍js显示世界时间示例(包括世界各大城市),包括了js显示世界时间示例(包括世界各大城市)的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了js显示世界时间的方法。分享给大家供大家参考,具体如下: 对JavaScript时间与日期显示感兴趣的朋友还可以参看本站在线工具: 在线世界各地时间查询 在线万年历日历 网页万年历日历 更多关于JavaScript相关内容可查看本站专题:《J
问题内容: 我如何获得当前时间?(在JavaScript中) 不像您的计算机时间: 但是真实的世界时间呢? 我是否需要连接到服务器(很可能是,是哪一个?以及如何从中获取时间?) 我从Google进行的所有搜索都返回。 编辑: 如果用户的计算机时间错误,我想避免显示不正确的时间。 问题答案: 首先,要获得准确的GMT时间,您需要一个值得信赖的来源。这意味着某个服务器在某处。Javascript通常只
问题内容: 如何克隆 Java并同时在Java中克隆其项目? 例如,我有: 我希望其中的对象与狗列表中的对象不同。 问题答案: 你将需要迭代这些项目,然后逐个克隆它们,然后将克隆放入结果数组中。 显然,要使该方法起作用,你将必须使你的类实现接口并重写该方法。
我想克隆git仓库与TortoiseGit的帮助下,但我得到错误: 错误:SSL证书问题,请验证CA证书是否正常。详细信息:错误:14090086:SSL例程:SSL3\u获取\u服务器\u证书:访问时证书验证失败https://git.assembla.com/pplconnect-PL.webserver.git/info/refs?service=git-上载包致命:HTTP请求失败 git