以状态栈驱动游戏流程,状态实现 OnEnter、OnExit、OnRender、OnUpdate 接口,通过 push/pop 切换
state-driven-game-template — HTML 游戏站模板
作者 brookesb91
基于 HTML5 Canvas、TypeScript 与 Webpack 的游戏开发起步模板,用状态栈组织帧循环,内置精灵与精灵表工具,并附带 PWA 配置。
看看你的网站会是什么样
浏览真实页面截图,比较内容排版与手机效果。点击下方缩略图切换,放大查看整页细节。
目前只有 1 张可用预览,尚未找到可用演示站,暂无法补充内页和手机端截图。
目前有 1 张原始预览,可打开完整图片查看设计细节。
截图用于了解视觉与布局,交互效果请以实际项目为准。
值得关注的模板亮点
从已有项目资料中,快速了解它的特点。
使用 HTML5 Canvas 2D 上下文进行逐帧渲染,配合 TypeScript 编写游戏逻辑
内置 Sprite 与 SpriteSheet,支持从单张图片定义多个精灵并按名称获取
Webpack 负责编译打包,Express 开发服务器运行在 localhost:5000,源码变更触发重新编译
包含 PWA 相关文件(manifest.webmanifest 与 service-worker.js)
模板详细介绍
state-driven-game-template 是一个用于在 Web 上启动现代游戏开发的模板仓库,技术栈为 HTML5 Canvas、TypeScript 与 Webpack,并包含 Node.js/Express 开发服务器以及 PWA 相关文件(manifest 与 service worker)。它的核心组织方式是“状态驱动”:每个游戏状态实现 OnEnter、OnExit、OnRender、OnUpdate 接口,通过 push 与 pop 操作状态栈来切换游戏流程,从而获得逐帧的渲染与更新能力。
模板在 src/lib 下划分了 core、models、sprites、state、utils 等目录,并提供 Sprite 与 SpriteSheet 两类工具:Sprite 负责把图片渲染到 Canvas 2D 上下文,支持指定源尺寸、原点位置以及渲染坐标和缩放;SpriteSheet 则从单张图片定义多个精灵并按名称取用。开发时运行 npm run start 在 localhost:5000 查看效果,源码变更会触发重新编译;构建产物输出到 /dist。仓库还给出了井字棋示例项目的链接,便于对照理解状态与精灵的用法。
适合你的项目吗?
适用场景
- 想用 TypeScript 和 Canvas 从零搭建网页游戏项目结构
- 需要一个带状态切换(如菜单、游戏中、暂停)的帧循环骨架
- 在项目中复用精灵与精灵表来渲染图片资源
- 希望本地开发时通过开发服务器即时查看编译结果
适合人群
- 熟悉 TypeScript 并希望以状态机方式组织游戏逻辑的开发者
- 需要轻量 Canvas 游戏起步模板、不想从零配置 Webpack 与开发服务器的人
- 想参考状态栈与精灵工具实现方式的学习者
上手与定制指南
结合仓库当前版本的说明,按下面的资料检查内容、配置与运行要求。
- 1
需要 node >= 14 与 npm >= 6
- 2
安装依赖使用 npm i,启动开发服务器使用 npm run start,浏览器访问 localhost:5000
- 3
构建使用 npm run build,输出位于 /dist
- 4
源码变更会触发重新编译,需刷新浏览器查看变化
授权与来源资料
使用条件与限制
免费使用 · 保留许可声明MIT许可,允许免费使用、修改、分发和商用,仅需保留版权与许可声明。
使用时需要遵守
- 保留原作者版权声明和 MIT 许可证声明。
- 保留版权声明和许可声明于所有副本或实质部分
额外费用与待核对事项
- README未说明示例图片、图标等素材的授权范围
查看原文依据
Permission is hereby granted, free of charge, to any person obtaining a copy
许可证原文
The above copyright notice and this permission notice shall be included in all
许可证原文
https://github.com/brookesb91/state-driven-game-template/blob/master/LICENSEhttps://github.com/brookesb91/state-driven-game-template/blob/HEAD/README.mdPermission is hereby granted, free of char
许可证原文
DeepSeek 根据仓库许可证和 README 整理 ·2026-09-24。结果仅覆盖已读取资料,依赖、图片、字体及后续条款变更以各自原文为准。
项目核对记录与介绍依据
模板资料
- 来源平台
- GitHub
- 资料与维护参考分
- 资料较少 · 50 / 100
- 技术栈
- HTML
- 网站类型
- 游戏站
这个分数如何计算
本站按许可资料(最高30分)、演示链接(12分)、预览图(10分)、Star数(15分)、记录的维护时间(15分)、描述完整度(8分)、功能记录(5分)和分类资料(5分)计算。它不是代码、安全或性能测试,也不是 Google 评分;有链接不代表已实测可用。
这个项目需要核对什么
- 记录的仓库更新时间
- 2024-03-08
- 截图检查日期
- 2026-09-14
目前没有记录演示链接。请依据仓库说明在本地评估;仅凭截图无法确认交互行为。
目录记录的主要技术栈是 HTML。请通过依赖清单和锁文件核对实际版本与托管要求。这些说明基于收录资料,不代表代码审计或部署实测。
查看具体选型方法 →介绍的制作与核对状态
介绍由 AI 辅助整理目录与仓库资料。仓库作者不等于这篇介绍的审核者。
当前版本没有可核对的编辑审核记录;旧的应用时间不代表已完成事实审核。
这条历史介绍未保存固定版本的来源快照。请对照当前仓库,发现不一致可反馈。
反馈内容错误看看同类模板
对比同技术栈与用途的模板,找到更适合的视觉与内容结构。

cube composer
cube composer 是一个将函数式编程概念融入益智玩法的开源网页游戏。 它用 PureScript 编写,核心机制是让玩家通过组合一系列“变换器”(如 map、filter 等)将初始的彩色方块墙转换为目标形态。
HTML · 游戏站

phaser-project-template
phaser-project-template 是一个面向 Phaser 3 的 TypeScript 启动模板,集成了 webpack 构建工具,旨在为浏览器和移动端 HTML5 游戏提供干净的开发起点。
HTML · 游戏站

dynamic pong wars
Dynamic Pong Wars 是一个基于 Canvas 的网页小游戏,源自经典的 Pong Wars 项目,但加入了更直观的交互控制。 整个页面只有一个 HTML 文件,不依赖任何外部库,打开即可运行。
HTML · 游戏站

wasm tetris
wasm tetris 是一个用 Rust 编写、编译为 WebAssembly 的俄罗斯方块游戏项目。
HTML · 游戏站

th08 web
TH08 Web 是一个将《东方永夜抄》原版游戏逻辑编译到浏览器的开源项目,适合作为 WebGL 游戏界面、交互与部署的参考起点。
HTML · 游戏站

solid chess
solid chess 是一个基于 Solid 协议构建的去中心化国际象棋游戏,核心思路是摆脱中心服务器:对局数据和个人信息都存放在玩家的 Solid POD 中,加入对局的请求直接发送到对手的收件箱。
HTML · 游戏站
