十二月开发《宝贝涂鸦先生》:意外发现元胞自动机,实现像素加粗处理! 十二月开发成果概述十二月的大部分时间用于开发专为幼儿设计的极简合作绘图应用《宝贝涂鸦先生》Mr. Baby Paint还意外发现基于泛洪填充的元胞自动机并为位图字体开发像素加粗算法。为幼儿设计软件《宝贝涂鸦先生》十二月成功开发并发布《宝贝涂鸦先生》。开发者三岁的孩子想参与使用电脑但现有写字板和画图软件对孩子来说挫折多于乐趣因孩子鼠标操作无章法常需开发者介入。找不到合适软件于是开发者决定自己开发。《宝贝涂鸦先生》需求最小可行产品是全屏空白画布无菜单和工具栏点击拖动鼠标绘图。开发者让孩子坐腿上控制鼠标自己用左手操作键盘快捷键。为鼓励孩子绘图每个操作有回报。具体操作包括左键绘图、滚动滚轮撒“沙子”、右键填充。绘图速度快溅出颜料多。因幼儿鼠标移动快开发者用 Catmull - Rom 样条曲线连接点创建平滑曲线沿曲线绘图对大画笔绘制距离加以限制。《宝贝涂鸦先生》用户界面利用不稳定鼠标移动光标移到屏幕边缘可更改设置屏幕左侧边缘分 16 个区域控制画笔大小和选择字体底部边缘分 16 个区域选颜色顶部边缘分 64 个区域选字符右侧边缘分两个区域选圆形和方形画笔。《宝贝涂鸦先生》合作绘图这是家长和幼儿的合作绘图应用复杂功能由家长用键盘快捷键激活幼儿专注绘图。如孩子难按住鼠标左键家长可按 Alt 键触发绘图功能。其他键盘快捷键包括绘图、填充、撒“沙子”、暂停、保存、擦除、撤销、恢复、闭合线条、选择画笔、更改颜色、打开/关闭菜单等操作。填充工具与意外发现的元胞自动机受《马里奥画板》启发《宝贝涂鸦先生》的泛洪填充实时进行且向左和向右扩展允许多个填充和绘图操作同时进行。实现此功能时意外发现基于泛洪填充的元胞自动机在扩展的泛洪填充区域内边缘附近启动新填充因共享“扩展预算”和扩展上限新填充扩展快与旧填充边缘碰撞、融合形成图案状态半稳定。技术上在单线程 CPU 上计算虽慢但有趣朋友阿德尔建议尝试不同填充图案开发者做了演示。操作说明为点击开始填充在第一个填充区域内边缘附近开始另一次填充或点击“自动”按钮可设计和自定义填充图案右键点击画布可下载图像。该应用已卖出约 30 份支持 Mac、Windows 和 Linux 系统售价 4.99 美元。像素加粗处理《宝贝涂鸦先生》有 16 种字体部分来自老式计算机开发者也想自制字体。单笔画字体编辑器有位图渲染器但 1 像素笔画太细开发者编写十几个实验性像素加粗脚本。尝试多种方法包括对每个像素采样放置方块、跳跃泛洪算法JFA距离场结合不同处理方式等最终选择方法 4 并在 Aseprite 中手动编辑和清理。该方法对绘图和图像有效也用在了 Ruusut 宣传材料上。开发者对此满意有了完整的基于位图的字体处理流程。