我正在开发一款足球世界模拟游戏,游戏可以跑到100到1,000个游戏年,覆盖大约60个国家。由于游戏不断生成新球员,老一辈退役后,我正在试图计算出每个国家的名池需要多大才能避免重复出现。我的当前系统比较简单:

  • 每个国家都有一个单独的名池和姓氏池。
  • 名字和姓氏被独立选择。
  • 大多数国家使用名字+姓氏,例如中国、韩国和越南使用姓氏+名字。
  • 我们目前不阻止两个球员拥有相同的全名。
  • 名池中没有频率权重,所以每个条目都有相同的选择概率。

当前数据在国家之间有很大差异。给定名池的范围从70到1,000个名字,而姓氏池的范围从70到1,000个姓氏。因此,某些国家有数十万个可能的组合,而较小的池子则会更快出现重复。

我知道重复名字在某些国家是合理的,尤其是在有几个非常常见的姓氏的国家。然而,我想避免游戏重复生成相同的全名,使不同的世代感觉相同。

你如何处理这个问题?

  • 只阻止活动球员之间的重复名字?
  • 阻止重复使用直到所有可能的组合都被使用?
  • 允许重复,但减少最近使用的组合的概率?
  • 使用真实世界的频率权重而不是均匀选择?
  • 在原始名池耗尽后程序生成变体?

我还在寻找可以用作给定名、姓氏、国家信息和频率数据的合法数据库。维基数据和政府统计似乎是可能的起点,但我没有找到一个覆盖的国家数量一致的来源。

为了背景,游戏名为《足球虚拟世界模拟器》。它模拟了国内联赛、洲际比赛、国家队、转会和整个虚拟足球世界的长期记录。它不是传统的管理游戏——主要吸引力是让世界发展并跟随它创建的故事和记录超过几十年或几百年。我已经在Reddit的r/FootballWorldSim发布了开发更新,如果有人感兴趣。

我很想知道其他模拟开发者如何处理大型、长期的名池。