首页 > 解决方案 > 程序生成和排列问题

问题描述

我可能不会追求这个,但我有这样一个想法,即以尽可能最有效的内存方式生成一个程序宇宙。

就像在精英游戏中一样,您可以使用基于种子的随机数生成器,因此每个恒星系统都可以由单个种子数表示,而不是统计数据和其他信息的列表。但是如果每个恒星系统是一个64位的数字,那么银河系就有1000亿颗恒星,也就是6.4TB的内存。但是,如果每个星系统仅使用 8 位,那么您的游戏中将只有 256 个独特的星系统。所以我的另一个想法是让每个恒星系统由 8 位表示,但只需在内存中获取下一个 7 恒星系统的字节,并使用该组合形成行星种子的 64 位数字。显然,最后会有 7 个额外的字节来说明内存中的最后一个星系统。

那么有没有办法组织这些字节中的值,使得整个文件中的每组 8 个字节都覆盖所有 64 位值(假设)而没有重复?还是不可能,我应该接受重复?或者我可以使用字节本身的地址作为种子的一部分吗?那么这将如何在 C 中工作?就像我有一个 1000 亿字节的文件,它实际上占用了 1000 亿字节的内存还是更多,这些字节的地址是如何存储的?在服务器客户端关系中访问这样的大文件(如 100gb+)是否实用?谢谢你。

标签: randompermutationprocedural-generation

解决方案


推荐阅读