游戏机制:快速点击,更快思考
游戏循环
- 每轮游戏时长一分钟
- 食物从空中落下,玩家点击食物
- 血糖仪根据食物选择产生反应
- 健康食物降低血糖值并得分
- 垃圾食物飙升血糖值、扣分并打断连击链
能量道具系统
玩家拥有两种紧急能量道具:
- 运动:血糖值降低50点
- 糖分冲击:血糖值提升25点
两种道具使用次数有限,时机把握至关重要。同时需要密切关注血糖仪:血糖值过低或过高都会显著影响整体表现。
开发起点:提示词与低期望
选择在Lovable.no-code AI平台上构建应用,初始提示词相对简洁:
“开发类似水果忍者的移动触控游戏,主题为2型糖尿病教育。评分系统采用受用户食物选择影响的血糖仪,建立包含不同营养等级的食物库,美学遵循Google Material Design表达性UI规范。”
初期生成版本功能基本但外观简陋,使用表情符号作为食物在基础背景上飞行,没有音效,评分简单累加。但这个基础版本能够运行,为后续迭代奠定了基础。
艺术指导:漫长、繁琐但值得的过程
像素艺术创作
转向8位和16位风格游戏美学,使用Aseprite创建和编辑几乎所有艺术资源。从itch.io购买第三方图标和动画包,修改和重新着色以匹配调色板。最终使用了79个食物资源进行游戏玩法。
所有像素艺术动画都构建为精灵表,便于在代码中控制和操作。字体选择使用ChiKareGo2和Lo-Res两种基于位图的字体,捕捉90年代末操作系统美学。
音效设计:打造沉浸式体验
花费数周在itch.io上寻找合适的8位音乐和UI音效,使用SFX Browser Mac应用管理下载的音效。
AI在构建音频架构方面发挥了重要作用:
- 移动浏览器的池化系统
- 防止快速点击造成声音混乱的去重逻辑
- Web Audio不可用时的回退机制
音频文件需要特定格式(WAV用于某些场景,OGG用于其他场景)、标准化音量和尾部静音以防止剪切。
经典Mac OS界面整合
采用复古Mac OS概念作为游戏框架,主游戏窗口外的所有元素都看起来像桌面图标。游戏本身具有标题栏、像素按钮和90年代末操作系统预期的所有窗口装饰。
使用Figma设计大部分界面,然后通过Figma-to-React插件导出粗略代码,使用Cursor和Copilot清理代码,手动调整不工作的部分。
游戏逻辑与平衡
食物影响系统
每个食物项在foodLibrary中存储bloodSugarImpact值,基于美国糖尿病协会和其他教育资源的研究:
- 非淀粉类蔬菜:-3到+1
- 健康脂肪:-2到0
- 瘦肉蛋白:-1到0
- 低糖水果:+2到+5
- 复合碳水化合物:+5到+8
- 高糖水果:+8到+15
- 精制碳水化合物/加工食品:+16到+40
- 乳制品:+3到+6
连击与能量道具系统
快速连续点击健康食物会提高得分乘数,垃圾食物会打断连击。能量道具平衡成为战略迷你游戏:
- 运动:高风险高回报,大幅降低血糖值,但容易耗尽
- 糖分冲击:安全网,低血糖时小幅提升,但容易过度校正
难度模式与评分系统
难度配置
|
|
智能评分系统
重构评分系统以实时跟踪时间范围百分比,影响最终评估。添加加权bloodSugarAverage:
|
|
正常区域计数为1.0倍,警告区域1.8倍,危险区域2.5倍。两种指标(得分和血糖控制)需要同步才能获得成功消息。
技术经验总结
AI协作实践
- 早期编写清晰的指令文件定义编码方法
- 尽早定义技术栈,防止AI使用未经批准的依赖
- 使用ChatGPT或Copilot进行调试,避免消耗过多信用额
移动端优化
- 使用动态视口单位、安全区域填充和紧凑HUD
- 设置游戏为PWA,但优先确保浏览器体验
- 大触摸目标,不依赖全屏模式
性能与资源管理
- 使用精灵表减少HTTP请求
- 分层预热资源:关键UI优先,效果和较少看到的精灵稍后
- 前瞻系统在食物出现在屏幕前进行解码
音频与跨平台测试
- 移动浏览器音频需要积极的池化处理
- 有时需要双重编码(iOS用WAV,其他用OGG)
- 在不同浏览器上持续测试
项目收获
血糖战士游戏花费三个月时间构建,大部分时间用于工艺制作:制作像素艺术、UI/UX和整体创意指导。
AI使作为独立设计师发布完整游戏成为可能,但没有做出创意决策。它将意图转化为代码,然后通过迭代直到符合愿景。
工具不会(也不应该)取代品味和批判性思维,而是放大它们。