你好,来自西班牙的独立开发者。今年大部分时间都在开发《Omniforgers》——一款基于一个核心理念打造的集换式卡牌游戏:你不需要打开预制的卡牌包。当你打开卡包时,里面的卡牌会当场为你锻造生成,包括美术和故事内容。你只需选择卡包大小。我想分享实现这一功能所需付出的努力,并请教一个我自己无法决定的问题。
先说问题。谷歌的生成式AI条款可能会迫使我改为按需求批量预铸卡牌,而非实时生成。这些卡牌仍然是独一无二且从未被任何人见过的,但它们是在你打开卡包之前就锻造好的,而不是在你等待时生成的。你会在意吗?你能察觉到吗?“等待时锻造”是魔力的组成部分吗?还是说“从未有人见过这张卡牌”就足够了?我也在咨询谷歌,但我更信任那些开发和玩这类游戏的人。
目前的流程是这样的:当卡包打开时,服务器会随机生成每张卡牌的类别(生物、动物、机器、类人形态、星界实体),并基于保底机制决定其美术稀有度,然后从该稀有度中抽取具体实体,同时避免重复玩家最近获得的实体,以保证卡包内容多样化。图像来自Gemini的图像模型,裁剪成3:4比例后从Cloudflare R2提供,并配有Google Storage镜像;西班牙的ISP在足球比赛期间会屏蔽Cloudflare——我是在吃了苦头后才发现的:每到周日晚间游戏就会失去所有美术资源。
世界观设定才是真正的挑战。游戏依据五大世界的正史编写,每类卡牌对应一个世界,每个世界都有独立的纪元、命名事件(附使用配额以免事件被滥用),以及世界间的对抗关系。初稿文风浮夸且千篇一律,所以现在有一组验证器(检查焦点、物理缺陷、避免冗余、禁止“因此它战斗至今”式的结尾、逐句结构调整),以及一个“裁判”来阅读解说文本并与图像比对,拒绝不匹配的内容。之后会通过术语对照表翻译成14种语言,确保名称和事件在各个版本中保持一致。命名过程让我学到了一点:模型能写出名字,但如果让它“变化”,结果总是陷入同样的两种模式。现在代码会从9个加权模板中随机抽取名字结构(一个生造词、两个普通词、“The”+名词、等级+名称……),然后交给模型。连字符的使用率从52%降到了24%。
每张卡牌都是独一无二的:锻造者保留“创造者版”,其他人只能克隆它,而创造者版可以通过游戏内的拍卖行交易。围绕这一核心,还有1v1对战(包含被动技能、道具和“共鸣”——后两者是小游戏)、250层的高塔、每日借卡挑战、好友和私密对战,以及通过融合克隆体升级卡牌等级。从本周开始,每张创造者版卡牌都有动画效果。
如果你也在开发类似项目,这里有一些仍然棘手的问题:首次锻造时,理解验证器会拒绝全部三个候选解说文本,负载过高时会出现超时,以及需要在两台同路径的主机上保存所有资源。我很乐意深入探讨任何细节。我不会分享提示词,但其他内容都可以交流。
如果你想尝试:封闭测试现已上线Google Play,仅限Android、18岁以上、位于欧盟、英国、美国、加拿大、大部分拉丁美洲国家、澳大利亚、新西兰、日本、韩国、台湾和香港。我需要有人告诉我哪些地方缓慢、令人困惑或无聊;创始成员将获得永久头衔和欢迎礼物。私信或评论附上你在手机上使用的Gmail账号,我会当天添加你并发送Play链接。
最后两件我想听听你看法的事:作为玩家,什么样的AI生成卡牌美术让你觉得舒服?以及什么能让你在第三天还愿意回来玩?
评论 (0)