图标、启动画面与音效
Sep 11
图标:Aseprite 出场
这个游戏唯一要"画"的东西。16 像素级别的图标有五条规矩:
- 先画剪影——全涂黑也能认出是蛇
- 1 像素深色轮廓,任何底色上都看得清
- 只用 3 个绿:本色、阴影、高光
- 眼睛 = 2×2 白 + 1 黑,靠前靠上——这是"活"的关键
- 一个识别物(舌头)用对比色
我第一版的问题是头和身子一样粗(剪影读不出"头")、眼睛太大又居中(像贴纸)。第二版把眼睛做大靠上、舌头分叉,就对了。
画可以是 15×15(奇数画布有真正的中心像素,对称好画),但画布用 16:图标的世界按 8 的倍数运转(项目图标 128、ico 要 16/32/48/256),15 放 8 倍是 120,到哪都差一点,会被非整数缩放搞糊。Sprite → Canvas Size → 16,多出的一圈透明。
导出规矩只有一条:游戏里用的按 100% 导出,让 Godot 用 Nearest 放大;游戏外用的(项目图标、网站)在 Aseprite 里按整数倍放大再导——网站和系统放大用的是平滑算法,16×16 交过去必糊。File → Export As,Resize 填百分比,它自带最近邻放大。
项目设置 → 应用 → 配置 → 图标 填 assets/ui/Snake.png,Web 导出会自动拿它当浏览器标签页图标。项目根目录那个 Godot 默认的 icon.svg 删掉。
index.png 不是图标,是启动画面
导出网页版后文件夹里有个 index.png,一看是 Godot 的 logo。它是启动画面(boot splash)——网页壳加载 wasm 那几秒显示的图。项目设置里 show_image = false 只关引擎启动后那一瞬,网页壳照样要一张图,没指定就用默认的。
项目设置 → 应用 → 启动画面:Image 选自己的 logo,Bg Color 填游戏底色,像素图取消勾选「使用滤镜」。
音效:先生成,再找
小游戏的音效优先生成而不是下载:生成的版权归自己,风格天生统一,不用记来源。这次三条音效(吃、星星、撞死)用的是我自己写的一个网页版 8-bit 生成器,原理和 sfxr / ChipTone 一样:波形 → 音高曲线 → 音量包络 → 滤波,一个采样一个采样算出来,拼个 WAV 头下载。
真要下载的话,权威的几个:freesound.org(最大的 CC 库,搜索时先勾 CC0)、Sonniss GDC 音效包(每年免费放出的商业级大包)、Kenney.nl(全 CC0,独立游戏标配)。带 NC(非商用)的一律不用,哪怕游戏免费。
AudioManager 的代码在第 6 章——它只听信号、只负责 play(),不判断该不该播。
字体与 CREDITS
标题那个手写体一开始是用 SystemFont 调的系统字体——只在自己电脑上看得到,别人的电脑、Steam Deck、网页版上都会退回默认字。查了一下它(Caveat)是 Google Fonts 的 OFL 字体,下载 .ttf 放进 assets/fonts/、场景里换成文件,就能合法打包。
按钮用的方舟像素字体也是 OFL 1.1。OFL 要点:可免费商用、可嵌入游戏、可修改;不能单独把字体文件拿去卖;保留版权与许可声明。
CREDITS.md 从第 2 章就建着,规矩是引入素材的同一分钟写这里。三类各一节:
- 美术:谁画的、什么工具、有没有第三方
- 字体:一张表——字体 / 文件 / 作者 / 来源网址 / 协议 / 用在哪
- 音效:生成器产出的一句话说明"版权归本人",列文件和用途。用自制工具生成同理,写工具名和网址;工具自己的代码协议(比如照 jsfxr 改的 MIT)只管工具代码,不管它生成的声音
下一章导出、上架、开源。