无人深空如何通过程序生成 18,446,744,073,709,551,616 个不同的星球?

1 条评论


  • 14

    noneN/A

    skream假面女仆卫士Yoge 等 14人赞同

    null

    更新于 2023-09-21 22:23:44 1 条评论


  • 6

    木落python用户,开发者,独立游戏爱好者

    木落Yogenone 等 6人赞同

    其实很简单,有这样一个函数 f(x) = [a, b, c, d, e, f, ....]

    根据不同的x,产生的abcdef等也不同

    那么x就是某一星球的特征值,abcdef是星球的具体数据

    发布于 2016-07-25 19:02:44 2 条评论


  • 3

    拉普拉斯的饿膜苦逼程序员/游戏品鉴师

    本人并不知道其真正的原理,仅此作推测:

    最近有个比较火的东西,是使用以太币币养猫,每只猫都是随机生成的,并且都是独一无二的,这是因为每只猫都有着独一无二的基因图谱。而基因图谱可以用一串很长的数字字符串来进行记忆,例如,第一位控制毛发颜色,1代表白,2代表黑,3代表红;第二位代表眼睛颜色;第三位......以此类推。之后需要展示的时候再根据这串数字进行对应的渲染。

    无人深空可能也是同理,第一位代表星球总体颜色,1代表红,2代表绿,3代表......,第二位主产资源数等等。当这串数字足够长时(18,446,744,073,709,551,616 = 2^64  64位其实足以),例如256位,你将基本不可能碰见一模一样的星球。

    你可能会觉得2^256长度,这CPU能跑的动?我给你举个栗子,你上奶牛关所用得到上网协议是HTTPS的,其中包含TLS,加密算法为AES长度是256位的,MAC算法一般选用SHA128(128位),再安全一点的选用SHA256(256位),然而这些都并没有拖慢你电脑上网的速度,甚至都感觉不到使用HTTP和HTTPS的差别。

    发布于 2018-06-18 11:18:28 5 条评论


  • 3

    像素杆菌

    像素杆菌AustinMoeShan 赞同

    http://gaming.stackexchange.com/a/280904

    18,446,744,073,709,551,616 = 2^64  (2的64次方) 他们游戏生成星球的算法大概是基于一个 数值类型为 64位的 随机数种子,所以能生成64位的可能性…… 

    发布于 2017-02-21 20:37:55 0 条评论


  • 0

    聪明的豆芽即时策略游戏爱好者,坦克世界大神级玩家

    去看看“机器学习“,或许你能有收获。


    通过不断的输入数据,获得一个规律,然后用这个规律生成N多结果。

    发布于 2017-02-24 11:32:46 0 条评论

  • 登录奶牛关账号即可参与讨论

{{question['follower_count']}} 个玩家关注

...

相关元素

相关游戏

相关问题

游戏主机更新换代速度太快会对开发者造成什么影响?

8人关注 5个回答

预算有限的情况下如何解决游戏中文配音?

8人关注 2个回答

网上有哪些免费、优质的音效库?

25人关注 1个回答