Questions tagged «minecraft-modding»

有关修改Minecraft的问题。

5
我如何实现Minecraft的制作网格之类的东西?
Minecraft中的制作系统使用2x2或3x3网格。您将食材放在网格上,如果将正确的食材放入正确的图案中,它将激活配方。 有关设计的一些有趣之处: 有些食谱可以将某些成分替换为其他成分。例如,镐头用棍棒作柄,头用木板,鹅卵石,铁锭,金锭或钻石宝石。 模式中的相对位置很重要,而不是网格上的绝对位置。也就是说,您可以通过将杆和煤(或木炭)以正确的模式放置在3x3网格上的六个位置中的任何一个位置来制作手电筒。 图案可以水平翻转。 我可能想得太多,但这似乎是一个有趣的搜索/减少集的问题。那么,从算法上来说,这是如何(或可能)起作用的呢?

7
如何提高Voxel / Minecraft类型游戏的渲染速度?
我正在编写自己的Minecraft副本(也用Java编写)。现在效果很好。在40米的可视距离下,我可以轻松地在MacBook Pro 8,1上达到60 FPS。(英特尔i5 +英特尔高清显卡3000)。但是,如果将可视距离设为70米,则只能达到15-25 FPS。在真实的《我的世界》中,我可以毫无问题地将视距扩大到256m。所以我的问题是我应该怎么做才能使我的游戏变得更好? 我实现的优化: 仅将本地块保留在内存中(取决于玩家的观看距离) 视锥剔除(首先在块上,然后在块上) 只画出真正可见的方块面 对包含可见块的每个块使用列表。可见的块将自己添加到此列表中。如果它们不可见,则会自动从此列表中删除。通过构建或销毁相邻的块,块变得(不可见)。 每个包含更新块的块使用列表。与可见阻止列表相同的机制。 new在游戏循环内几乎不使用任何语句。(我的游戏运行大约20秒钟,直到调用了垃圾回收器) 我目前正在使用OpenGL呼叫列表。(glNewList(),glEndList(),glCallList())一类块的每个侧面。 目前,我什至没有使用任何照明系统。我已经听说过VBO。但是我不知道到底是什么。但是,我将对其进行一些研究。他们会提高性能吗?在实施VBO之前,我想尝试使用glCallLists()并传递呼叫清单列表。而是使用了千次glCallList()。(我想尝试一下,因为我认为真正的MineCraft不使用VBO。对吗?) 还有其他提高性能的技巧吗? VisualVM配置文件向我展示了这一点(仅33帧配置文件,可视距离为70米): 用40米(246帧)进行分析: 注意:我正在同步许多方法和代码块,因为我正在另一个线程中生成块。我认为在游戏循环中进行大量操作时,获取对象的锁是性能问题(当然,我所说的是只有游戏循环而没有新块生成的时间)。这是正确的吗? 编辑:删除一些synchronised块和其他一些小的改进之后。性能已经好得多了。这是我对70米的新分析结果: 我认为这很明显selectVisibleBlocks是这里的问题。 提前致谢! 马丁 更新资料:经过一些额外的改进(例如,使用for循环代替每个循环,在循环外缓冲变量,等等...),我现在可以很好地查看距离60。 我想我将尽快实施VBO。 PS:所有源代码都可以在GitHub上找到:https: //github.com/mcourteaux/CraftMania

5
如何产生类似于Minecraft的洞穴?
我已经在3D程序世界中工作了一段时间,并且想开始添加洞穴系统。我目前正在使用2D / 3D Perlin Noise来生成地形,并结合使用Marching Cubes来实现更平滑的地形。当涉及到相互连通的山洞时,我感到很困惑。 我希望能得到更多类似于Minecraft的洞穴系统的东西。它们似乎是非常紧密的联系,几乎可以在任何方向随机分支,并且洞穴中的几乎任何点都将具有相当圆形的外观,并且整个半径范围都相等(不是最好的措词,但是不确定如何放置它) 。 生成我想要的洞穴的最大挑战是,我要动态生成世界。当前,世界是逐块生成的,从玩家所在的地方开始,然后从那里向外生成。我不想产生任何世界,然后使用游荡模式,细胞自动机等将洞穴挖出来。 是否有任何众所周知的算法可用于此目的?如果是这样,是否有人想分享他们如何做类似的事情?我将不胜感激任何帮助。 一个很好的例子:

3
地图生成的随机种子函数?
我正在寻找一个函数来生成随机的,基于图块的地图,因为地图的视觉边界发生了变化(通过地图)。我希望地图无限大,并具有迷宫般的结构。 但是,如果世界是无限的,那么回到玩家之前所处的位置会带来问题。游戏必须记住那里所有东西的实际外观。 所以,我在想-“我的世界如何解决这个问题?” 我以为自己必须使用某种带有种子的随机数函数,该函数既可以向前又可以向后移动,这样就可以像以前一样完全重新生成旧的图块,但是在新的实例中。 您对此有何想法?


6
如何使用3d perlin噪声函数生成地形?
我可以使用2d perlin杂讯功能来产生高度值,但我不明白为什么要使用3d perlin杂讯功能。在Notch的博客中,http ://notch.tumblr.com/post/3746989361/terrain-generation-part-1,他提到在我的世界上使用3d perlin噪声函数生成地形。有谁知道该怎么做以及为什么会有用吗?如果传递x,y和z值不表示您已经具有高度?

3
如何为类似Minecraft的引擎生成漂浮的陆地块?
我正在XNA中创建类似于Minecraft的引擎。我想要做的是创建类似于此视频中所示的浮岛: http://www.youtube.com/watch?v=gqHVOEPQK5g&feature=related 我将如何使用世界生成器复制它?我必须使用一些Perlin噪声算法吗?我不知道这将如何帮助我取得这样的土地质量。 这是我正在使用的perlin噪声发生器的代码: private double[,] noiseValues; private float amplitude = 1; // Max amplitude of the function private int frequency = 1; // Frequency of the function /// <summary> /// Constructor /// </summary> /// public PerlinNoise(int freq, float _amp) { Random rand = new Random(System.Environment.TickCount); noiseValues = new double[freq, …

3
对于基于分形的程序化城市布局,有什么好的算法?
背景 我运行的是我的世界服务器,在这里我将设计一个规模相当大的入门城市。我有一系列东西,例如尺子标志和暴民笼子,我想在那儿放建筑物。这个城市本身将非常庞大且分布广泛,最大规模可达1000 x 1000街区。 建筑物本身将具有基于某个基本立方体的立方体或矩形足迹,例如3块的所有倍数。街道和建筑物之间的距离最好为5-11块宽,具体取决于街道的重要性。 当我开始制定城市规划时,我将确切地知道我想要多大的建筑物以及将要建造的建筑物。 问题 问题在于设计城市的布局。显然,由于规模如此之大,而且我来自编程领域而不是城市规划者背景,因此即使开始思考这个问题也颇具挑战。 具体来说,问题是我希望这座城市看起来尽可能自然。当然,在简单的网格模式上构建起来会相当容易,但是我要尽可能避免使用网格或任何看起来像网格的东西。 问题 我可能会追求哪些算法来帮助我使用代码进行设计?我当时以为,如果我以某种方式使用分形,那将是最自然的,因为我的世界在地形生成中已经使用了分形,而一个城市似乎自然以分形的方式成长。 我认为它在某种程度上与俄罗斯方块播放算法相似,因此,如果有人在该方向上存在解决方案,那么它也会有所帮助。我在想象可以在其中定义我要使用的形状的东西,然后该软件进行迭代,直到找到最“最佳”的解决方案来均匀分配建筑物。 是否已经存在帮助我使用python(最好是使用pygame以可视方式)解决此问题的方法? 自然,这在整个游戏设计中也对城市一代产生了有趣的影响,因此我很高兴看到最佳解决方案是什么。 编辑 为了清楚起见,我现在正在寻找布局,因为建筑物将在游戏中设计和建造。

1
如何向Minecraft添加自定义生物?
基本上决定自己动手,我有: 创建了我的暴民的实体类 创建了我的暴民模型班 绘制模型 在EntityList类中添加了对addMapping的函数调用 我被困在下一步该怎么做。我曾尝试找到处理被动动物产卵的代码,但是似乎找不到。 帮助极大的赞赏。

5
为什么块大小通常是2的幂?
我的世界有很多Minecraft克隆版本,我正在着手自己的实现。地形渲染的原理是将整个世界分成固定大小的块,以减少局部更改的工作量。 到目前为止,在Minecraft中,块大小为16 x 16 x 256。在克隆中,我也总是看到块大小为2的幂。 是否有任何原因,可能与性能或内存有关?我知道2的幂在二进制计算机中起特殊作用,但与块大小有什么关系?

5
如何获得玩家看到的方块?
我正在使用Ogre引擎编写类似于Minecraft的游戏,但遇到了问题。我必须优化游戏,因为当我尝试绘制10000个图块时,我有2 FPS ...因此,我想到了显示平面图块并隐藏不可见的图块的想法。但是我有一个问题-如何知道播放器一次可以看到哪些块? 并且-如果您知道此类游戏的其他优化方法,请在Ogre中编写内容以及如何使用它们。

4
如何在Minecraft风格的游戏中实现具有遮挡的基于体素的照明?
我正在使用C#和XNA。我当前的照明算法是一种递归方法。但是,这样做很昂贵,以至于每5秒计算一个8x128x8块。 还有其他照明方法会产生可变暗度阴影吗? 还是递归方法好,也许我只是做错了? 似乎递归的东西从根本上来说是昂贵的(每个块被迫遍历约25k块)。我当时正在考虑使用一种类似于光线跟踪的方法,但是我不知道这将如何工作。我尝试的另一件事是将光源存储在一个列表中,并为每个块获取到每个光源的距离,并使用该光源将其照亮到正确的水平,但随后照明将穿过墙壁。 我当前的递归代码如下。在清除并重新添加阳光和手电筒之后,从不具有零光照水平的块中的任何位置调用此方法。 world.get___at是一个可以在该块之外获取块的函数(该块位于块类内部)。Location是我自己的结构,类似于Vector3,但是使用整数而不是浮点值。light[,,]是该块的光照图。 private void recursiveLight(int x, int y, int z, byte lightLevel) { Location loc = new Location(x + chunkx * 8, y, z + chunky * 8); if (world.getBlockAt(loc).BlockData.isSolid) return; lightLevel--; if (world.getLightAt(loc) >= lightLevel || lightLevel <= 0) return; if (y < 0 || …

2
我可以将Minecraft克隆设为开源吗?
我在业余时间开发Minecraft之类的游戏。事实上,这不是“ 喜欢我的世界”,因为我想使它成为一个接近的,可以复制(意为锻炼我自己在16岁的时候,只是因为它是有趣的我)。当然,我不是使用Minecraft Coder Pack(MCP)复制代码。我使用OpenGL在Java中从头开始游戏。 因此,我的问题是:是否可以将我的源代码在线存储在GitHub,Google Code等公共源代码版本控制主机上(这使我的代码开源,因为我不想支付使用私有代码的费用)主办)?当然,我不想出售该游戏,因为该游戏来自Notch。 可能很重要的一个细节是,我正在使用自定义纹理包(因此,不是真正的Minecraft附带的那个)。 如果允许,是否有任何规则?我看了一下这个页面,但似乎他对此没有说什么:http : //www.minecraft.net/terms 编辑:有一个来自Begla的名为Terasology(以Blockmania命名的游戏)的游戏。这是一个不错的项目,但它并不意味着它与Minecraft尽可能接近。该项目是开源的。

3
Minecraft动画是否已硬编码到游戏中?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 5年前关闭。 我想知道动画系统在《我的世界》中的运作方式。我觉得所有小怪都是硬编码到游戏中的。刻痕真的坐在那里,用手为所有动画骨骼创建矩阵吗? 我喜欢重新创建有趣的游戏,所以我想知道他是如何做到的。另外,如果他确实对它们进行了硬编码,还有更好的方法吗?

2
用Perlin蠕虫产生洞穴
我目前正在尝试使用3D Simplex Noise生成类似于Minecraft的体素地形,并且还希望实现洞穴。 我在此线程中找到了Perlin Worms的方法,该方法产生了非常好的结果。但是,我不知道如何逐块生成它。这是否可能,或者有其他替代方法可以逐块地产生类似洞穴的蠕虫吗? 编辑:这是我不知道如何解决的问题。 编辑2:这是将2D脊状多重分形噪声与“单纯形噪声”高度图组合而成的结果。仍然需要一些调整,但这几乎是我想要的结果。感谢Byte56。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.