人类:开天辟地
Go to file
2025-08-22 18:14:18 +08:00
.github/workflows feat: baseURL改为 ./ 2024-05-12 20:55:12 +08:00
.vscode feat: add eslint 2024-12-30 22:34:17 +08:00
docs docs: 动画指南 2025-08-22 18:14:18 +08:00
packages feat: 浏览地图 2025-08-19 15:06:34 +08:00
packages-user docs: 常见需求指南 2025-08-22 16:45:47 +08:00
public refactor: dev.ts 2025-08-20 21:07:12 +08:00
script docs: 常见需求指南 2025-08-22 16:45:47 +08:00
src chore: 更新依赖 2025-07-15 19:02:07 +08:00
.gitignore docs: 修复构建问题 2025-08-20 15:31:11 +08:00
.madgerc refactor: src/core/main 全部移入 monorepo 2025-03-05 21:16:37 +08:00
.prettierignore feat: add eslint 2024-12-30 22:34:17 +08:00
.prettierrc fix: prettier格式化会将光标移至文件末尾 2023-10-13 21:28:37 +08:00
babel.config.json 更新地图,配置插件 2023-02-27 20:39:59 +08:00
components.d.ts fix: 杀戮光环 & feat: 注册新图块 2024-04-26 21:24:12 +08:00
eslint.config.js chore: 添加 == != xxx={true} 的 eslint 限制 2025-06-23 16:57:43 +08:00
index.html refactor: 完全修改dom结构 2024-11-19 22:28:48 +08:00
LICENSE chore: 更换为 LGPL 协议 2025-03-12 17:13:37 +08:00
package.json docs: 动画指南 2025-08-22 18:14:18 +08:00
pnpm-lock.yaml refactor: dev.ts 2025-08-20 21:07:12 +08:00
pnpm-workspace.yaml refactor: src/game 全部移入 monorepo 2025-03-09 15:49:11 +08:00
README.md docs: update readme 2025-08-16 17:28:23 +08:00
tasks.md docs: 更新 todo 列表 2025-06-21 15:35:41 +08:00
tsconfig.json chore: 将样板类型声明修改到 src/types 文件夹 2025-06-17 14:42:16 +08:00
tsconfig.node.json refactor: 继续删除一些无用的东西 2024-10-04 12:06:43 +08:00
update_record.md readme.md与更新记录 2023-04-27 17:58:58 +08:00
vite.config.ts refactor: dev.ts 2025-08-20 21:07:12 +08:00

魔塔 人类:开天辟地

游戏地址:https://h5mota.com/tower/?name=HumanBreak

项目结构

public: mota-js 样板所在目录。 packages: 核心引擎代码 monorepo。 packages-user: 用户代码 monorepo。 src: 游戏入口代码。

由于样板由此项目分离而来(类似于 vscodemonaco-editor 的关系),因此将用户代码部分与核心引擎分开编写。不过由于旧样板限制与重构的不完全,引擎中还有部分内容会引用旧样板内容。

packages packages-user 可以单独打包为库模式,src 单向引用 packages-userpackages-user 单向引用 packagessrc 为游戏的入口代码。

开发环境

  • node.js ^18.0.0 || ^20.0.0 || >=22.0.0
  • pnpm >= 10.0.0
  • 任意支持 ES2024 特性的浏览器

建议使用 vscode,搭配 prettier eslint 插件

开发说明

  1. 将项目拉取到本地。
  2. 运行 pnpm i 安装所有依赖,如有要求运行 pnpm approve-builds,请允许全部。
  3. 运行 pnpm dev 进入开发环境。

构建说明

  • pnpm build:packages: 构建所有 packages 文件夹下的内容,使用库模式。
  • pnpm build:game: 构建为可以直接部署构建包。
  • pnpm build:lib: 构建所有 packages packages-user 文件夹下的内容,使用库模式。

开发原则

  • 模块无副作用原则:
    • 所有模块不包含副作用内容,全部由函数、类、常量的声明组成,不出现导出的变量声明、代码执行内容,允许但不建议编写类的静态块。
    • 如果需要模块初始化,编写一个 createXxx 函数,然后在 index.ts 中整合,再逐级向上传递,直至遇到包含 create 函数的 index.ts,所有初始化将会统一在顶层模块中执行。
  • 命名规则:
    • 变量、成员、一般常量、方法、函数使用小驼峰。
    • 类、接口、类型别名、命名空间、泛型、枚举、组件使用大驼峰。
    • 不变常量使用全大写命名法,单词之间使用下划线连接。
    • 专有名词缩写如 HTTP, URI 全部大写。
    • 会被 implements 的接口使用大写 I 开头。
    • id, classHTML/CSS 内容使用连字符命名法。
    • 不使用下划线命名法。
  • 注释:
    • 常用属性成员、方法、接口、类型必须添加 jsDoc 注释。
    • 长文件可使用 #region 分段,非必要则不写 #endregion
    • TODO 使用 // TODO:// todo: 格式。
    • 单行注释的双斜杠与注释内容之间添加一个空格,多行注释只允许出现 jsDoc 注释,如果需要多行非 jsDoc 注释,使用多个单行注释。
  • 类型:
    • 不允许出现非必要的 any 类型。
    • 所有类的成员必须显式声明类型。
    • 如果有无法避免出现类型错误的地方,使用 // @ts-expect-error 标记,并填写原因。
    • 没用到的变量、方法使用下划线开头。
    • 合理运用 readonly protected private 关键字。
    • 函数不建议使用过多可选参数,如果可选参数过多,可以考虑换用对象。
  • 代码格式:
    • 严格遵循 eslint 配置,不允许出现 eslint 报错。