站内搜索
发作品签到
专业版

基于Scratch图形化编程的掌中游戏机(可运行NES游戏)

工程标签

1.1w
0
0
14

简介

Scratch Arcade是一款专为青少年编程而研发可以基于Scratch编程的游戏机,它不同于其他MakeCode Arcade编程游戏机,当然它也可以运行NES游戏。更多功能请加群关注教育版。

简介:Scratch Arcade是一款专为青少年编程而研发可以基于Scratch编程的游戏机,它不同于其他MakeCode Arcade编程游戏机,当然它也可以运行NES游戏。更多功能请加群关注教育版。

开源协议

GPL 3.0

(未经作者授权,禁止转载)
创建时间:2024-07-26 15:31:13更新时间:2025-02-28 11:27:06

描述

开发故事

本人从小就热爱玩游戏,并从事游戏开发工作十多年,自2018年开始接触Scratch少儿编程,一开始只是完成由游戏开发者到少儿编程教育工作者的转型。由于工作关系接触到了开源硬件microbit, 偶然发现microbitV2加上LCD屏幕可以使用Makecode Arcade图形化工具来开发游戏。通过图形化的游戏编程工具,任何人都可以给自己开发游戏,还可以将制作游戏下载到游戏机里面去玩。第一次接触这个软件后,对我一个传统游戏开发者来说内心是非常震惊的,于是立马淘宝上买了一个回来玩,玩了一阵子后,职业的原因让我发现了一些用户体验问题,Makecode Arcade编程所有的游戏场景,背景,元素全部在一个主程序里面,并且控制器都要依赖游戏机本身的硬件,这样导致游戏程序的编写难度偏大。别说是小朋友或新手用户,就算是我这个游戏开发多年的人来说都感觉有点绕,Makecode Arcade还是有一种程序员在做游戏开发的影子在里面。相比而言Scratch游戏编程就显得简单很多,常用图标,声音元素可以直接使用自带的或者电脑上传,不需要全部靠编程去实现。不同角色可以独立模块化编程,无论是编程框架还是编程思想,用户都能很容易理解。我在实际教学应用中也验证了这点,教学难度Scratch远低于Makecode Arcade。
随着工作的深入了解,发现国内大部分少儿编程机构使用的教学软件和大家熟知的编程平台比如mind+,openblock,mblock等大都是基于原生Scratch做的二次开发。早期国内机构也几乎都是通过Scratch开展少儿编程教学的,还有国内Scratch普及程度相对高,很多人接触少儿编程的第一堂课就是Scratch。而Makecode Arcade在国内用户就显得少了。于是我就萌生了一个想法,是否可以开发一款可以运行Scratch游戏的编程游戏机呢?
带着这个想法我开始做了如下尝试

  • 首先我想到的第一个方案是找直接运行Scratch原生格式的硬件,但是很快发现一个问题,其实原生Scratch是非常吃硬件CPU和内存的软件,即便是在树莓派上这样配置的设备上去运行原生Scratch软件也不是非常流程,那么选择能运行linux带UI系统的硬件(比如全志/RK方案),但是最低成本也到了200RMB。显然这个方案就像把Scratch放到了移动端来运行一样,虽然可行,但是硬件成本过高,但是做出来无论是价格上还是优势并不明显,还不如做手机app来得简单。

  • 很快我又构思了第二个方案,就是设备上不需要去执行原生Scratch应用软件,参考Scratch源码写一个类似可以解析运行sb3格式的程序。但是这里又有问题,原生Scratch除了执行程序外还有很多元素,图标等资源文件,这些资源文件大概有几十兆得先内置到硬件里面,如果上位机增加修改了资源文件,那么下位机就必须升级固件才能同步。并且同样对硬件内存依然也还要求比较高,且编写这个软件难度真不小。

通过前面两次思考论证,我重新总结需求,做了一些调整,把核心需求列出来

  • 硬件最好是当前最主流开源硬件,硬件BOM成本控制在100RMB内,方便制作和复刻,兼容性要强,方便开发固件,扩展功能等。
  • 另外其实大家喜欢是Scratch 原生UI界面和编程方式,类似Scratch的软件大家都能很快适应。那么我们只需要尽可能地保持Scratch编程方式,那我也可以不改变编程方式,基于Scratch二次开发一下,不必执念一定要去运行原生scratch sb3格式的文件似乎更好实现。

有了前面得总结,很快我在Makecode软件里面microbit主板模拟器里找到了灵感,我是不是可以把Scratch舞台当作模拟器,这样我的硬件的运行游戏可以在Scratch软件里面就是一个硬件模拟运行器。这样Scratch软件只有舞台相对于原生的有些变化之外,其他几乎一摸一样。
当时手里有一个Pico:ed(基于RP2040主控)主板硬件,于是我在Scratch里面做了可以模拟Pico:ed按键和显示功能

image.png

但是我们是要做游戏,肯定需要带屏幕,于是我又做了一个基于RP2040带LCD屏幕的硬件
picoarcade.jpg
当时这个项目也有开源https://gon.gyeq.in/#/2023/0617/

在使用RP2040做主控时,很快我又发现了新的问题。RP2040主频只有133M,在做图片刷新时有点吃力,RP2040在外设扩展时时开源资料并不多,后续扩展功能也有些费劲,于是我把目光放到了ESP32S3上,240M主频,支持wifi蓝牙可扩展功能足够多。
于是我重新做了新的基于ESP32S3的新硬件
image.png
历时半年基本实现了核心功能,但是还是觉得这个不像游戏机,于是加大了LCD屏幕,改成了最初游戏机模样,最后就是大家见到的开源的样子。
好了其实在整个开发验证过程中花费时间1年半,有非常多的技术细节,也遇到了非常多的技术挑战点,感觉几天几夜也写不完,大致有如下:
1、编程方式要原封不动兼容原生scratch然后用模拟器替代舞台
2、如何将游戏资源下载到游戏机里面,在单片机的主控里面如何尽可能提高LCD刷新速率,确保游戏能够流程运行
3、电脑的联网功能,录音功能,播放声音功能也要在游戏机上实现
4、终极目标要能打开sb3原生格式再转码执行

为了致敬Makecode Arcade和Scratch这两个经典且强大的平台,于是本游戏机叫做Scratch Arcade

接下来详细介绍Scrach Arcade

第一版
3D_PCB2_2024-08-08 (1).png

第二版
3D_PCB2_1_2025-02-03.png

这是一款针对少儿编程可编程游戏机硬件产品,解决当前scratch教学模式单一,程序模版化,没有硬件关联,导致学生兴趣下滑。这款产品将完全弥补这些不足,提升教学内容的丰富性,程序的多样性和变化性,学生的成就感获得完全提升,并且完全不改变现在已有的教学内容和方式,完全拿来即用。

硬件特性

硬件说明
芯片ESP32-S3 Xtensa©双核 240 MHz
8MB SPI flash
8MB PSRAM
屏幕2.0寸 320×240 高清彩屏
网络802.11b/g/n Wi-Fi
Bluetooth 5 (LE)
按钮编程按钮 × 9
声音扬声器 × 1
尺寸100mm × 38mm

> 此为开源版本硬件配置,教育版本硬件介绍点我(arcade.blockcode.fun)查看。

屏幕

2.0寸 大屏幕的TFT彩色屏幕,支持多达 65536 种丰富的颜色(16位色),分辨率达到 320×240 像素,可以呈现游戏广阔的舞台,结合 TileMap(敬请期待) 实现庞大的 2D 游戏世界。

网络

由 ESP32-S3带来的强大网络功能,支持 802.11b/g/n Wi-Fi 和 Bluetooth 5 (LE)。多台游戏机还可以实现多机互联,实现联网最互动

交互

9个按钮——八个标准游戏按钮(上/下/左/右/A/B/X/Y)和一个功能(Fn)按钮,通过编程赋予按钮不同的功能,实现各种游戏玩法,丰富程序交互能力。

实物照片

IMG_1934.jpg

上面是第一版,下面是第二版(改)。第二版增加了一个RGB LED灯和光线强度感应传感器。

IMG_1935.jpg

编写程序

BlockCode Playgrounds 使用图形化(Scratch)或 MicroPython 进行编程。

icon.png

图形化(Scratch)

scratch.png

界面与Scratch完全一样,大部分的编程积木模块也都一样,少部分因为硬件特征有所不同(以后缺少的部分会逐步补全,更贴近原版 Scratch 的积木模块和功能),更方便熟悉Scratch的老师进行教学。

差异
舞台宽高比和原版Scratch保持一致,但分辨率有所减小——320×240,x坐标从-160到160,y坐标从-120到120。
不显示变量,变量内容的显示将在新增的“数据监控”(敬请期待)。
造型造型资源只有位图模式,不支持矢量图模式,Scratch 中的造型都可以使用。
背景除了Scratch中的位图背景,还支持 TileMap背景以及AI背景(敬请期待)。
TileMap背景使用瓦片图制作超大的游戏地图;AI背景使用生成式AI通过文字来生成一副位图背景。
声音只能使用wav格式声音文件,长度不超过10s或大小不超过200kB,单声道音频。

MicroPython

固件基于 MicroPython 1.2x 版本编译,增加了特有的包,更方便开发游戏和小程序。

> MicroPython 编程平台敬请期待,也推荐使用 Arduino Lab for MicroPython 一个轻量化的MicroPython编辑器进行编程。

项目外链

固件下载

  • 最新固件: 去下载最新版本(需下载arcade_lite版本),按住BOOT键(FN键)同时将硬件连接电脑,在终端用下面命令刷固件:
    esptool.py --chip auto --port "串口端口号"  write_flash -z 0 arcade_lite.0.9.7.bin
    

感谢


欢迎大家加群来交流。
本开源项目历时1年半时间的开发和优化,最大的成就是验证了最初想法的可行性,当前只是一个开源版本,教育版有许多有趣且惊喜的功能,比如语音对讲,AI,FPV图传遥控器,硬件实验室等功能。
但也有许多地方需要完善和优化,欢迎大家进群提建议和交流。

qrcode.jpg

> 请先加我企业微信,我会拉您入群。

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
scratch.mp4
43
2
nes.mp4
43
3
scratch模拟器验证.mp4
29
4
arcade_box.mp4
25
5
联机对战.MP4
32
6
联网获取天气信息.MP4
29
7
arcade_lite.v0.9.build-09141500_mpy_v1.23.0.bin
80
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

评论

全部评论(1
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航