一个NPC村庄通常有两种结局。一种是你绘制了200个头像,另一种是每个人都有着相同的六张面孔。两种方式都花费了我不少钱,所以我停止把脸当作一个资产,而是把它当作一个随机数种子生成的函数。一个完整的人可以用一个整数来表示。
第一版从一个随机数流中提取了所有特征。首先你要给种子,然后再画头部、头发、眉毛、鼻子、嘴巴。看起来一个人脸上是没有问题的。
然后我将前40个村民绘制成一张表格,他们的嘴巴是可见的。不同种子的差值很小,后续的轴会保持相关性。你在每个脸上都看不到这一点,但是在看整个群体时就能看出来。
后来出现了一个更严重的问题。添加一个新特征轴会改变所有轴后的值。所以当我在更新中添加了耳朵时,所有现有的保存文件中的NPC都会改变脸。玩家加载游戏时,铁匠长得完全不一样了。
解决这个问题的方法是停止使用流。每个轴都取一个标签和种子生成的哈希值。例如,“头部:” + 种子哈希32,“头发:” + 种子哈希32,依此类推。每个轴都是独立的,而随着人口的增长,稳定性也会提高。接下来一个月添加耳朵时,铁匠的脸不会改变。
这也使得老化、情绪和伤害变得便宜。他们重新生成相同的脸,而不是用不同的精灵来换。人还会保持可识别性。
披露:这个社区可能知道我在使用AI辅助来开发这个项目,并且这个资产是由AI写的。
我将这个系统打包成Effigy,如果它对任何人有用的话,可以在itch上下载。https://csaf.itch.io/effigy-gamemaker
欢迎在评论中讨论如何组合这些内容。
评论 (0)