下载 App
《气味之城》开发日志:季节一换,整条街就变了
10/293 浏览综合 包含 AI 合成内容
【涌现瞬间】《气味之城》这局开发里最容易被当成「只是贴图」、却最不该被忽略的一个东西,是季节。它没有一行 if 散落在猫身上——它是一张四行的表、一个纯函数,和一层会随季节重建的氛围粒子。
季节表就写在 scripts/life_goal.gd:95-104:春 / 夏 / 秋 / 冬,每季两三个字段。下标是个纯函数(scripts/life_goal.gd:227-228):posmod(day-1, 28) / 7 —— 无随机、同一天里恒定、跨会话稳定,跟新手引导的阶梯口径同源(scripts/life_goal.gd:28-29)。
所以这条街的时间表是:第 1~7 天春、8~14 天夏、15~21 天秋、22~28 天冬,第 29 天回到春(scripts/life_goal.gd:226)。一个完整年 28 天(scripts/life_goal.gd:92)——玩家玩满两周多,就把这四季走完一遍。
画面层是另一回事:氛围粒子层不自己算季节,它拿一个回调去问外面要下标(scripts/weather_fx.gd:58-61),拿到下标再整套重建(scripts/weather_fx.gd:81-86、scripts/main.gd:839-840)。原因是这个项目吃过亏:同一件事两个算法,是这里最贵的一类 bug。
四季各一套粒子:春是粉色花瓣(74 颗)、夏是雨(90 颗)、秋是橙色斑点(64 颗)、冬是雪(150 颗),每季还各带一套速度、尺度与寿命(scripts/weather_fx.gd:41-48)。上图是同一条街在春天的样子——那一片粉就是春的那套粒子,HUD 底下那行字也写着「春」。
还有一条我自己挺满意的接线:换季这件事本身,会作为一条大事记写进街区时间线(scripts/main.gd:1562-1570)——「—— 换季了:夏(……)——」。因为换季不是换个标题文字,它是这条街的历史(scripts/main.gd:1555-1561)。
季节改的不只是画面,它是这条街的时间表:玩家不是在「第几天」,而是在「第几天、第几季」——一周之后街上的脾气换一季,两周之后年就走完一圈(scripts/life_goal.gd:226)。
如果你也在做这类「世界会自己变化」的东西:你是用一张表 + 纯函数,还是用一堆散落的 if?我很想抄你的做法。
助力入口:https://www.taptap.cn/poster/NIKiDS1YShdA(在活动页找到《气味之城》的卡片点「助力」,玩满 10 分钟这一票才有效)
游戏页:https://www.taptap.cn/app/955418(免费试玩,安卓免安装)
本游戏内含有使用 AI 生成的游戏资产。(美术资产中 AI 生成 15/62 项、24.2%,已在商店页「合规声明」栏与素材声明动态如实申报:https://www.taptap.cn/moment/860654227951715441 )











