Scratch Arcade 创客版 ESP32S3 可编程游戏机开发板 是一款基于高性能 ESP32-S3 芯片 的多功能创客平台,集成了图形化编程支持、丰富的交互接口和便携式游戏控制系统。它不仅适用于 创意游戏开发,还广泛应用于 物联网项目、STEAM 教育教学、智能硬件实验 等多个领域,是青少年、教师、创客和开发者的理想选择。


开发故事
本人(空想君)从小就热爱玩游戏,并从事游戏开发工作十多年,自2018年开始接触到Scratch少儿编程,一开始只是完成由游戏开发者到少儿编程教育工作者转型。由于工作关系接触到了开源硬件micro:bit, 偶然发现micro:bit V2加上LCD屏幕可以使用MakeCode Arcade图形化工具来开发游戏。任何人真的可以通过图形化的工具给自己制作开发游戏还可以下载到游戏机里面去玩。接触这个软件后对我一个传统游戏开发者来说是非常震惊的,于是立马淘宝上买了一个回来玩,玩了一阵子后,职业的原因让我发现了一些用户体验问题,MakeCode Arcade编程所有的游戏场景,背景,元素全部在一个主程序里面,并且控制器都要依赖游戏机本身的硬件,这样导致游戏程序的编写难度偏大。别说是小朋友和新手用户,就算是我这个游戏开发多年的人来说都感觉有点绕,MakeCode Arcade还是有一种程序员在做游戏开发的影子在里面。相比而言Scratch游戏编程就显得简单很多,常用图标,声音元素可以直接使用自带的或者电脑上传,不需要全部靠编程去实现。不同角色可以独立模块化编程,无论是编程框架还是编程思想,用户都能很容易理解。我在实际教学应用中也验证了这点,教学难度Scratch远低于MakeCode Arcade。
随着工作的深入了解,发现国内大部分少儿编程机构使用的教学软件和大家熟知的编程平台比如mind+,openblock,mblock……大都是基于原生Scratch做的二次开发。早期用户也几乎都是通过Scratch开展少儿编程教学发展起来的,还有国内Scratch普及程度非常高。MakeCode Arcade在国内用户就显得少了。于是我就萌生了一个想法,是否可以开发一款可以运行Scratch游戏的编程游戏机呢?
带着这个想法我开始做了如下尝试:
首先我想到的第一个方案是找直接运行Scratch原生格式的硬件,但是很快发现一个问题,其实原生Scratch是非常吃硬件CPU和内存的,即便是在树莓派上这样配置的设备上去运行原生Scratch也不是非常流程,那么选择能运行Linux带UI系统的硬件(比如全志/RK方案),但是最低成本也到了200RMB。显然这个方案就像把scratch放到了移动端来运行一样,虽然可行,但是硬件成本过高,但是做出来无论是价格上还是优势并不明显,还不如做手机APP来得简单。
很快我又构思了第二个方案,就是设备上不需要去执行原生Scratch应用软件,参考Scratch源码写一个类似可以解析运行sb3格式的程序。但是这里又有问题,原生Scratch除了执行程序外还有很多元素,图标等资源文件,这些资源文件大概有几十兆得先内置到硬件里面,如果上位机增加修改了资源文件,那么下位机就必须升级固件才能同步。并且同样对硬件内存依然也还要求比较高,且编写这个软件难度真不小。
通过前面两次思考论证,我重新总结需求,做了一些调整,把核心需求列出来:
硬件最好是现在主流开源硬件,硬件BOM成本控制在100内,方便制作和复刻,兼容性要强,方便开发固件,扩展功能等。
其实大家喜欢是Scratch编程方式,比如mblock,mind+,编程猫……这些类似Scratch方式大家都能很快适应。那么我们只需要尽可能地保持Scratch编程方式,不必执念一定要去运行原生Scratch格式。
有了前面得总结,很快我在MakeCode软件里面micro:bit主板模拟器里找到了灵感,Scratch舞台本质上也是一个模拟器,想通这一点,我的硬件运行的游戏就不需要是原生Scratch的sb3文件,我可以自己定义游戏运行方式,再在Scratch软件重写一个对应我硬件的模拟器替代原本的Scratch舞台。这样Scratch软件只有舞台相对于原生的有些变化之外,其他几乎一摸一样。
为了实现这些想法,我重新创建了一个新的Scratch框架(原生的Scratch框架不在适合做扩展,所以我从头搭建了一个新的框架)——我称之为BlockCode框架。当时手里有一块Pico:ed(基于RP2040主控)主板硬件,于是我在BlockCode框架里面做了可以模拟Pico:ed按键和显示功能:

但是我们是要做游戏,肯定需要带屏幕,于是我又做了一个基于RP2040带LCD屏幕的硬件(自学硬件设计,第一次画PCB板)。

当时这个项目也有开源https://gon.gyeq.in/#/2023/0617/,现在已经删了。
在使用RP2040做主控时,很快我又发现了新的问题。RP2040主频只有133M,在做图片刷新时有点吃力,RP2040在外设扩展时时开源资料并不多,后续扩展功能也有些费劲,于是我把目光放到了ESP32-S3上,240M主频,支持WiFi/蓝牙可扩展功能足够多。于是我重新做了新的基于ESP32-S3的新硬件:

历时半年基本实现了基本功能,但是还是觉得这个不像游戏机,于是加大了LCD屏幕,改成了游戏机模样,最后就是大家见到的开源的样子。好了其实在整个开发验证过程中花费时间一年半,有非常多的技术细节,也遇到了非常多的技术挑战点,大致有如下:
编程方式要原封不动兼容原生Scratch然后用模拟器替代舞台
游戏运行流程程度,在单片机的主控上LCD屏幕刷新速率
联网功能,录音功能,播放声音功能也要在游戏机上实现
目标要能打开sb3游戏格式
为了致敬MakeCode Arcade和Scratch这两个经典且强大的平台,于是本游戏机叫做——
Scratch Arcade
上一代开源版
项目连接
立创开源硬件平台: https://oshwhub.com/blockcodelab/arcade_lite
GitHub: https://github.com/BlockCodeLab/arcade-lite
Gitee: https://gitee.com/blockcodelab/arcade-lite


Scratch Arcade 创客版 ESP32S3 可编程游戏机开发板的核心优势:
1、强大主控:ESP32-S3 支持 AI 加速、Wi-Fi 和蓝牙双模通信,适合边缘计算与联网应用。
2、图形化编程:支持 Scratch Arcade、Blockly 等图形化编程环境,降低编程门槛。
3、游戏交互设计:内置方向键与功能键,支持自制街机风格游戏或交互式动画。
4、物联网扩展性:可连接传感器、LED、蜂鸣器等模块,轻松构建智能硬件项目。
5、教学友好:适配课堂教学,支持项目式学习与创客课程,激发学生创造力。


创客版处理器与内存:
采用乐鑫 ESP32-S3-WROOM-1-N8R8 模组,搭载双核 Xtensa®32-bit LX7 微处理器,主频高达 240MHz。板载 512KB SRAM 和 384KB ROM,同时配备 8MB Flash 和 8MB PSRAM,能够为游戏程序的运行和数据存储提供充足的空间。

屏幕
2.0寸大屏幕(创客版)的TFT高清彩色屏幕,支持多达 65536 种丰富的颜色(16位色),分辨率达到 320×240 像素,可以呈现游戏广阔的舞台,结合 TileMap(敬请期待) 实现庞大的 2D 游戏世界。
网络
ESP32-S3 带来的强大网络功能,支持 802.11b/g/n Wi-Fi 和 Bluetooth 5 (LE),结合网络 AI 服务,轻松实现语音识别(使用板载麦克风)、图像识别(使用图传摄像头)、智能家居、智慧校园等等功能,掌握前沿科技知识,多台游戏机还可以实现多机互联,实现联网互动。
交互
超薄摇杆或方向按钮(⇧/⇩/⇦/⇨)、游戏按钮(A/B/X/Y)和功能按钮(Fn)。通过编程赋予摇杆和按钮不同的功能,实现各种游戏玩法,丰富程序交互能力,更可作为遥控手柄通过物联网控制其他设备(敬请期待)。
板载的MEMS麦克风可以实时录音,结合网络就可以进行语音控制、语音识别、AI 对话等功能。
接口
- Type-C USB 接口进行充电和程序下载。
- 2.5mm耳机口连接耳机可听音乐,无声音外放(喇叭)可以避免教学中产生噪音。
- 多功能扩展口实现连接更多的外设硬件模块,可以连接通用的舵机模块、超声波模块、颜色识别模块等等,丰富游戏程序的互动方式和功能。
评论