问题标签 [procedural-generation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
procedural-generation - 如何将运行时程序生成的世界划分为块
我一直在考虑制作一个带有伪无限运行时程序生成世界的自上而下的 2D 游戏。我读过几篇关于程序生成的文章,也许我误读或误解了它们,但我还没有遇到一篇解释如何将世界划分为块的文章(就像 Minecraft 显然那样)。
显然,我只需要生成玩家当前可以看到的世界的一部分。例如,如果我的游戏是基于图块的,我可以将世界划分为 n*n 个块。如果玩家在这样一个块的边界,我也会生成相邻的块。
我无法弄清楚我究竟如何采用程序世界生成算法并且一次只在一个块上使用它。例如,如果我有一个算法可以生成一个分布在许多块中的大结构(例如城堡、森林、河流),我该如何调整它以只生成一个块,然后再生成相邻的块?
如果我完全错过了明显的事情,我深表歉意。先感谢您!
algorithm - 这种多线程过程生成算法的潜在问题是什么?
我知道这是与游戏设计相关的,但我已经阅读了 StackOverflow 常见问题解答,其中指出可以在此处询问软件算法问题。如果这在游戏设计中更好,那么我希望有人可以帮助我移动它,谢谢!
我正在设计一个多线程程序地牢生成器。但是,我想知道我可能会遇到什么样的问题——我无法找到许多清楚地显示多线程的算法。
我有三个必须创建的不同对象。一个包含多个“房间”的“世界”,每个房间都将容纳潜在的“对象”。
当前算法的工作原理如下:
World 包含一个房间列表和一个“可用对象列表”。Room 创建方法将生成房间并将它们添加到 World 的房间列表中。-- Object 创建过程不会以任何方式与 Room 过程通信。相反,对象创建过程将从世界的房间列表中选择随机房间并在房间中生成随机对象。
我看到的唯一问题是——如果对象创建过程过早完成。换句话说,房间列表中只有一些房间会在其中创建对象,因为房间创建过程晚于对象创建过程完成。
是否还有更多问题,是否有人对开发此类算法有任何建议或经验?
algorithm - 如何实现菱形平方算法?
我在读这个:http ://www.gameprogrammer.com/fractal.html#diamond
它说:
这是迭代细分例程的起点,分为两个步骤:
菱形步骤:取四点正方形,在正方形中点生成一个随机值,两条对角线相交。中点值是通过平均四个角值加上一个随机量来计算的。当您在网格中排列多个正方形时,这将为您提供钻石。
平方步:取每个菱形的四个点,在菱形的中心生成一个随机值。通过平均角值计算中点值,加上与菱形步骤相同范围内生成的随机量。这又给了你正方形。
我不明白这一点。取每个正方形的中点如何形成钻石?取每颗钻石的中点如何形成正方形?
有人可以为如何做到这一点提供与语言无关的代码吗?
编辑:
第 1 步:你有一个网格并使四个角的高度一致:
第 2 步:取正方形的中点并将其设置为所有 4 个角的平均值加上一个随机值:
怎么办?我在任何地方都没有看到钻石
javascript - JavaScript 单纯形 / perlin 噪声
我正在尝试在 JavaScript 中创建一个 perlin / simplex / value 噪声函数,该函数将给出类似于以下结果:
(注意:此图像已经应用了阈值。我想要没有阈值。)
我已经在互联网上搜索了 2 天了。有很多链接解释噪音和大量代码,但在 JavaScript 中没有,每当我尝试转换它时,我都会得到奇怪的结果。以下是我的一些尝试:
- http://jsfiddle.net/GZCye/
- http://jsfiddle.net/Lk56f/(基于此)
- http://pastebin.com/nMA40SrL(由于某种原因不在 Fiddle 中运行,基于此
我认为部分问题可能源于 JavaScript 中位运算符的使用,在这种情况下很难强制执行数字的类型。
我正在寻找的是一个工作的例子,JavaScript 噪音(无论类型)。
我也愿意为与可能导致类似于我发布的图像(阈值之前)的模式或任何优化提示的参数有关的任何信息提供赏金,因为我需要它尽可能快地运行(在 JavaScript 中)。
java - 程序生成一个巨大的宇宙
我正在创建一个基于文本的游戏,并尝试实现程序世界生成。
我最初的计划有点随意:每个宇宙都有一个星系、太阳系的 3D 阵列,然后依次通过随机天体传播。我计划单独生成实际的本地区域,但我不确定目前是否有可能完成我拥有的任务。
然后,所有这些都将被写入数据文件以供稍后读取。
现在看,如果我没记错的话,这需要 (((ClassSize^3)^3)^3) 个字节,即使 ClassSize 只有 4 个字节,也无法存储。
我最初使用数组数组的目的是能够有效地将集群组合在一起,并更好地帮助识别玩家在宇宙中的位置。
我的问题是:我怎样才能更有效地创造一个如此规模的世界?
c# - C# XNA 生成 MIDI
我希望从 C# XNA 程序中播放类似 MIDI 的音符。我实际上不需要构建 MIDI 文件,只需能够开始和停止音符或在给定的时间内播放它们。
image-processing - HTML5 Canvas:旋转图案填充
作为一个学习项目,我正在尝试使用 HTML5 画布从 Tiny Wings 重新创建程序生成的山丘。我的目标是在这张图片中生成像山一样的纹理:
到目前为止,我已经生成了一个无缝重复的纹理。它看起来有点像这样:
如您所见,这是其中的一部分,但是在 Tiny Wings 中,正弦曲线图案通常以一定角度旋转。我的问题是:是否可以采用无缝重复的图案,旋转它,然后将其剪辑成一个矩形并且仍然具有无缝重复的图案?
我最初认为这是微不足道的,任何裁剪到原始尺寸的旋转重复图案仍然会重复。然而,我的调查使我相信情况并非如此。
如果我所描述的内容是不可能的,我将如何使用我生成的图像的旋转版本作为形状的图案/填充?到目前为止,我能想到的唯一解决方案是使用画布剪辑区域。有没有其他方法可以做到这一点?
相关问题:
java - 程序地图生成
我真的很想开始做一个瓷砖游戏,并且因为它的流行以及教程和资源的可用性而开始了 Cocos2d。但我真的很想尝试一些程序地图生成,但不确定 Cocos2d 是否适合它。
如果涉及到它并且 Cocos2d 不是最好的,那么我的其他选择是 Java 或 Love2D,这不是 iOS,但是哦!
algorithm - 3D随机生成行星
对于一个项目,我正在 3D 空间中创建行星,基于一个中心“家园”,这些行星是从原点向各个方向随机生成的。
我看过程序生成和 Perlin 噪音,但我找不到合适的方法让它们适用,但我对任何类型的随机生成都是新手。
3D 点生成算法的任何良好起点,以原点为中心,最好基于种子(因此相同的种子产生相同的宇宙)。
谢谢!
java - 将元胞自动机数据数组翻转为乐谱(如 WolframTones)
好的,所以使用元胞自动机的一些基本原理,我设法让一个程序运行,该程序生成一组根据规则计算的数据。每个单元格都是一个布尔值。
目前我将它存储为 - boolean[][] 数据 - 其中第一个索引是行,第二个是单元格。
现在我已经到了想将音乐转换为乐谱(存储为数组)的地步。在页面上,它显示了如何从 CA 数据转换的图表 -
给数据打分
我无法理解如何使用我的存储方案以编程方式完成此操作。如果有人可以提供帮助,那就太好了,如有必要,我可以提供更多信息。