创作者在输入框里打下八个字:“做个街头篮球游戏”,然后按下回车。对人来说,这句话的意思似乎很清楚——几个人在路边的铁丝网球场里斗牛,节奏快,动作花,输了下一拨人上。可是交给AI,这八个字能直接落到代码里的信息其实只有两条:运动是篮球,氛围是街头。几个人打、打多久、投进一球算几分、打到几分结束、电脑对手是陪练还是高手、玩家用摇杆还是点屏幕,一个字都没有。
所以这篇文章要回答的问题并不是“AI能不能读懂这句话”,而是:当一句话本来就不完整时,AI应该怎样处理这份不完整。
Prompt:八个字里缺了多少东西
先把这句话拆开看。一个能玩的篮球小游戏,至少需要以下这些字段都有确定值,否则生成流程的某一层一定会卡住,或者被某个隐含的默认值悄悄填上:
- 人数:1v1、3v3 还是 5v5。它决定了场地大小、镜头距离、AI队友数量和传球逻辑是否需要存在。
- 场地:全场双篮筐还是半场单篮筐。它决定了攻防是否需要转换过半场,也决定了地图生成的范围。
- 计分方式:正式比赛常见的2分/3分,还是街头常见的1分/2分。
- 胜负条件:打满时间比分数,先到某个分数直接获胜,还是两者并存。
- 比赛时长:一局是3分钟、5分钟还是10分钟。
- AI难度:电脑对手的命中率、抢断积极性、协防反应时间。
- 操作与模式:单人对电脑,还是两个人在同一台设备上对打。
这七项里任何一项缺失,生成结果都会“有东西”,但未必是创作者想要的东西。最危险的情况不是AI问得太多,而是AI一个问题都不问,把自己的猜测当成用户的原话,直接生成了一个5v5全场、每节12分钟的“街头篮球”——技术上没有错,氛围上完全错了。
Design:先分清哪些能猜,哪些不该猜
处理模糊需求的第一步,是给每个缺失字段打上标签:这个字段能不能从已有信息里安全推断?所谓安全,指的是推断依据足够强、猜错的代价足够低、改起来足够便宜。
“街头”这个词其实携带了不少信息。街头球场绝大多数只有一个篮筐,所以“半场”几乎可以直接推断;路边斗牛最常见的就是三对三,国际篮联也把3x3设为独立的正式项目,所以“3v3”是一个有依据的默认值;三人制街头篮球普遍采用弧内1分、弧外2分的计分方式,先到21分可以提前结束比赛。这些推断即便错了,创作者一眼就能看出来,一次修改就能纠正。
而另一些字段,“街头”两个字完全帮不上忙。比赛打3分钟还是10分钟,取决于创作者想做一个碎片时间里的小游戏,还是一个认真比拼的对战;电脑对手是让新手爽快地赢,还是让老玩家苦战,取决于这个游戏给谁玩。这类字段猜错了,创作者未必第一时间发现,往往要试玩好几局才会意识到“怎么总是打不完”或者“怎么总是输”,返工成本明显更高。
以一个模拟场景为例,乐鱼体育的生成流程在收到这句话之后,内部会形成类似下面这张字段表(数值均为设计参考):
| 字段 | 默认值 | 推断依据 | 是否需确认 |
|---|---|---|---|
| 人数 | 3v3 | 街头斗牛最常见形式,3x3有成熟规则可参照 | 推断,显示可改 |
| 场地 | 半场、单篮筐 | 街头球场多为单篮筐半场 | 推断,显示可改 |
| 计分 | 弧内1分,弧外2分,罚球1分 | 三人制街头篮球通行计分 | 推断,显示可改 |
| 胜负条件 | 先到21分提前获胜;时间到则比分高者胜 | 与3x3规则一致,兼顾节奏 | 推断,显示可改 |
| 平局处理 | 加时,先得2分者胜 | 避免出现无法结束的比赛 | 推断,显示可改 |
| 进攻时限 | 12秒 | 三人制常见设置,保证快节奏 | 推断,显示可改 |
| 比赛时长 | 5分钟(候选:3/5/10分钟) | 无直接依据,按小游戏单局时长取中值 | 建议确认 |
| AI难度 | 中等(候选:简单/中等/困难) | 无直接依据 | 建议确认 |
| 对战模式 | 单人对电脑 | 无直接依据,但影响输入和AI队友 | 建议确认 |
| 视觉风格 | 涂鸦墙、铁丝网、傍晚路灯 | “街头”的常见视觉联想 | 推断,显示可改 |
这张表最重要的不是默认值本身,而是最后一列。它把“AI替你决定的”和“AI觉得应该由你决定的”明确分开了。
追问要克制:最多问两到三个
既然有三个字段建议确认,是不是应该把整张表都甩给创作者,让他逐项勾选?答案是否定的。一句话生成的价值就在于门槛低,如果输入八个字换来十二个问题,创作者感受到的是在填一份表单,而不是在和一个懂行的助手合作。
比较合理的做法是只问那些同时满足两个条件的问题:一是推断依据弱,二是猜错之后返工代价高。按这个标准,街头篮球场景里值得问的只有三个:
- 一局打多久?3分钟 / 5分钟 / 10分钟(默认5分钟)
- 电脑对手多强?简单 / 中等 / 困难(默认中等)
- 一个人对电脑,还是两个人同屏对打?(默认一人对电脑)
每个问题都附带默认选项,创作者可以直接点“用默认值开始”,也可以只改其中一项。问题的措辞要用玩家能理解的语言,而不是“请设置AI对手决策延迟参数”。而人数、场地、计分这些已经推断出来的字段,不必再问一遍,只需要在设计单里清楚地显示出来——创作者看到“3v3、半场、先到21分”,如果不满意,自然会去改。
关于确认问题的优先级排序,我们在一句话生成体育游戏以后AI最应该先确认的问题里对足球、赛车、高尔夫、网球等不同运动做过更系统的整理,这里只讨论街头篮球这一个具体场景。
Map:街头球场不是一张背景图
确认完关键字段,生成进入地图层。很多人会以为“街头球场”就是一张有涂鸦和铁丝网的背景图,把球员和篮筐放上去就行。实际上,地图在这里要承担的是规则的空间载体。
以半场3v3为设计参考,场地可以按15米宽、11米深来组织,篮筐高度3.05米,2分线距篮筐中心约6.75米。这些数字不是为了追求真实,而是因为后面的规则层要引用它们:一次投篮算1分还是2分,取决于出手点在弧内还是弧外;防守方抢到篮板后要把球带到弧外“清球”才能发起进攻,这条弧线就必须是地图里一个可被检测的区域,而不只是画在地上的一道白线。
街头元素也不能随便摆。长椅、消防栓、围观人群可以强化氛围,但它们必须位于边界线以外;如果生成时把一个垃圾桶放进了底角,球员跑到那里会被卡住,底角投篮点就等于被删掉了。铁丝网的碰撞体要和出界判定一致:球碰到铁丝网算出界,而不是像弹球一样弹回场内继续比赛。这些检查点在地图层就要完成,不能留到试玩时才发现。
Rules:默认值之间也会打架
规则层把前面所有字段组合成可执行的判定逻辑:什么时候计分、什么时候换发球权、什么时候比赛结束。单个字段都合理,组合起来却可能出现矛盾,而这种矛盾往往是创作者在修改时带进来的。
一个典型例子:创作者觉得5分钟太长,改成了3分钟,同时在描述里补了一句“必须打到21分才算赢”。3分钟里双方合计打出42分以上并不现实,如果系统照单全收,要么生成一个时间到了却不结束的游戏,要么生成一个时间到了强行结束、但没人达到胜利条件的游戏。正确的处理是在规则层检测到这组冲突,并提示创作者选择判定优先级:以时间为准(时间到时比分高者胜),还是以分数为准(取消计时,打到21分为止),或者把目标分数下调到11分。这类冲突检测在无代码编辑中尤其常见,无代码创建篮球规则时如何发现矛盾条件一文有更多例子。
另一个容易被忽略的细节是平局。如果只设置了“时间到比分高者胜”,却没有定义平局怎么办,比赛就会在平分时停在一个无法判定的状态。默认值表里的“加时先得2分者胜”就是为了堵住这个出口。
Playable Build:生成的是初始版本,不是最终答案
规则和地图都就位之后,系统会拼出第一个可玩版本。在交给创作者之前,更稳妥的做法是先让AI自己打几百局:让两支电脑球队按默认设置互相对抗,统计平均比分、平均比赛时长、先到21分提前结束的比例、12秒进攻时限被触发的频率。如果模拟结果显示绝大多数比赛在5分钟时比分只有9比7,说明默认的21分目标在这个时长下形同虚设,可以提示创作者考虑下调目标分数;如果进攻时限被频繁触发,可能是AI进攻逻辑过于保守,需要回到AI层调整出手倾向。
交到创作者手里之后,第一次生成就应该被明确标记为V1。创作者试玩后说“电脑盖帽太多了”,系统调低AI对手的封盖概率生成V2;再说“想加一个扣篮得3分的规则”,生成V3;觉得V3节奏被打乱了,可以一键回到V2。在乐鱼体育的创作流程里,人数、场地、计分、时长、难度这些字段在生成之后都保留为可编辑项,而不是烘焙进最终包里无法再动的常量。更多这类从一句话到可玩版本的创作方式,可以在AI体育游戏创作栏目里看到。
AI到底知不知道玩家想要什么
回到标题的问题:输入一句“做个街头篮球游戏”,AI真的能知道玩家想要什么吗?坦白说,不能。八个字承载不了一个游戏的全部设计决策,任何宣称能从一句话里读出完整意图的系统,都是在把自己的猜测包装成用户的意愿。
AI能做的,是把不完整这件事处理得体面:能从“街头”推断出来的,就大胆给出默认值;推断不了的,挑两三个最关键的问题直接问;所有默认值都摆在设计单上,标明是“推断”还是“已确认”;地图和规则同时生成,彼此引用,出现冲突时让创作者选优先级;生成出来的版本随时可改、可回退。做到这几点,创作者拿到的就不是一个“AI觉得你想要的游戏”,而是一个看得清来龙去脉、可以继续打磨的起点。乐鱼体育在设计一句话生成流程时,关注的正是这个起点是否足够透明。