mirror of
https://github.com/motajs/template.git
synced 2026-05-02 12:23:13 +08:00
docs: 文档调整
This commit is contained in:
parent
eaa725553b
commit
4d9c6720aa
61
dev.md
Normal file
61
dev.md
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
# 魔塔样板开发说明
|
||||||
|
|
||||||
|
## 项目结构
|
||||||
|
|
||||||
|
`public`: mota-js 样板所在目录。
|
||||||
|
`packages`: 核心引擎代码 monorepo。
|
||||||
|
`packages-user`: 用户代码 monorepo。
|
||||||
|
`src`: 游戏入口代码。
|
||||||
|
|
||||||
|
`packages` `packages-user` 可以单独打包为库模式,`src` 单向引用 `packages-user`,`packages-user` 单向引用 `packages`,`src` 为游戏的入口代码。
|
||||||
|
|
||||||
|
## 开发环境
|
||||||
|
|
||||||
|
- `node.js ^20.0.0 || >=22.0.0`
|
||||||
|
- `pnpm >= 10.0.0`
|
||||||
|
- 任意支持 `ESNext` 特性的浏览器
|
||||||
|
|
||||||
|
**建议使用 `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`, `class` 等 `HTML/CSS` 内容使用连字符命名法。
|
||||||
|
- 不使用下划线命名法。
|
||||||
|
- 注释:
|
||||||
|
- 常用属性成员、方法、接口、类型必须添加 `jsDoc` 注释。
|
||||||
|
- 长文件可使用 `#region` 分段,可以写上 `#endretion` 允许折叠。
|
||||||
|
- TODO 使用 `// TODO:` 或 `// todo:` 格式。
|
||||||
|
- 单行注释的双斜杠与注释内容之间添加一个空格,多行注释只允许出现 `jsDoc` 注释,如果需要多行非 `jsDoc` 注释,使用多个单行注释。
|
||||||
|
- 类型:
|
||||||
|
- 不允许出现非必要的 `any` 类型。
|
||||||
|
- 所有类的成员必须显式声明类型。
|
||||||
|
- 如果有无法避免出现类型错误的地方,使用 `// @ts-expect-error` 标记,并填写原因。
|
||||||
|
- 没用到的变量、方法使用下划线开头。
|
||||||
|
- 合理运用 `readonly` `protected` `private` 关键字。
|
||||||
|
- 函数不建议使用过多可选参数,如果可选参数过多,可以考虑换用对象。
|
||||||
|
- 尽量少地使用 `as` 关键字进行类型断言,一般情况下不建议进行任何 `as` 类型断言
|
||||||
|
- 其他要求:
|
||||||
|
- 严格遵循 `eslint` 配置,不允许出现 `eslint` 报错。
|
||||||
|
- 尽量不使用 `?.` 运算符,一般建议仅在副作用函数调用(如 `this.obj?.func()`,`this.obj.func?.()`),或对象 `Required` 化(如 `{ value: obj?.value ?? 0 }`)中使用 `?.` 运算符
|
||||||
|
- 只进行必要的非空判断,不必要的非空判断直接使用非空断言 `!` 实现。
|
||||||
98
tasks.md
98
tasks.md
@ -1,98 +0,0 @@
|
|||||||
## 第二章 智慧
|
|
||||||
|
|
||||||
### 怪物
|
|
||||||
|
|
||||||
[x] 同化
|
|
||||||
[x] 同化+阻击
|
|
||||||
[x] 电摇嘲讽:到同行或同列直接怼过去,门和墙撞碎,不消耗钥匙,攻击怪物,捡道具,改变 bgm,可吃补给用
|
|
||||||
[x] 乾坤挪移:平移光环位置
|
|
||||||
[x] 加光环的光环
|
|
||||||
|
|
||||||
### Boss
|
|
||||||
|
|
||||||
音游,音乐为一个被遗忘的夜晚,可选简单与困难,困难可获得成就冰与火之舞
|
|
||||||
|
|
||||||
玩法:一个会转动的圆盘,带有一个伸出去的把手,boss 从四面八方射子弹,当子弹恰好落到把手前端时,点击按键或屏幕,可以抵挡子弹,简单难度 3 条命,困难 1 条。简单难度音符密度低。困难难度为冰与火之舞的节奏。简单难度判定时间为前后各 100ms,困难为 50ms
|
|
||||||
|
|
||||||
### 技能
|
|
||||||
|
|
||||||
[x] 铸剑为盾:主动技能,减少攻击,增加防御
|
|
||||||
|
|
||||||
### 机制
|
|
||||||
|
|
||||||
[x] 苍蓝之殿 1: 红蓝黄门转换
|
|
||||||
[x] 苍蓝之殿 2: 乾坤挪移、杀戮光环等
|
|
||||||
[x] 苍蓝之殿 3: 传送门
|
|
||||||
[x] 苍蓝之殿 4: 同化
|
|
||||||
[x] 苍蓝之殿中: 让我们把这些东西结合起来...
|
|
||||||
|
|
||||||
### 成就
|
|
||||||
|
|
||||||
[x] 虚惊一场:打完山洞门口的怪只剩 1 滴血
|
|
||||||
[x] 真能刷:勇气之路的刷血怪刷到 15w 以上的血
|
|
||||||
[] 冰与火之舞:通过第二章特殊战的困难难度
|
|
||||||
[x] 你是怎么做到的?!:山路地图与勇气之路地图中与若干个神秘的木牌对话
|
|
||||||
|
|
||||||
## 第三章 战争
|
|
||||||
|
|
||||||
移入飞书文档。
|
|
||||||
|
|
||||||
## 第四章 和平
|
|
||||||
|
|
||||||
移入飞书文档。
|
|
||||||
|
|
||||||
## 零散 TODO
|
|
||||||
|
|
||||||
[x] 成就系统
|
|
||||||
[] 自动宝物规划,选中两个或更多宝物后自动在本地图中规划出最优拾取路线,原则是尽量减少其余宝物的捡拾,自动切换主动技能,怪物造成的伤害最低的路线
|
|
||||||
[x] 临界显示方式,宝石数还是数值
|
|
||||||
[x] 怪物目标设定
|
|
||||||
[x] 木牌查看系统(百科全书)
|
|
||||||
[] 每个怪物加一个怪物说明
|
|
||||||
[] 歌词展示系统
|
|
||||||
[x] 小地图显示框,可以选择是否显示剩余怪物数量等
|
|
||||||
[x] 怪物死亡特效
|
|
||||||
[] 区域名称显示特效,3D 粒子特效
|
|
||||||
[x] 单独的工具栏,可以自定义按键
|
|
||||||
[x] 完全 ts 化
|
|
||||||
[] 平行光(待定)
|
|
||||||
[] 视角控制系统
|
|
||||||
[x] 重构设置界面
|
|
||||||
[] 优化开头动画
|
|
||||||
[x] 玩家可以设置字体大小
|
|
||||||
[] 完全删除 functions.js
|
|
||||||
[x] 优化插件加载系统
|
|
||||||
[] 重写技能控制系统
|
|
||||||
[x] 自定义快捷键
|
|
||||||
[x] 优化 ui 控制系统
|
|
||||||
[x] 优化游戏进程与渲染进程间的通讯
|
|
||||||
[x] 优化资源分离,音乐放到 bgm 目录下
|
|
||||||
[] 一次性道具拾取与清怪
|
|
||||||
[] 重构数据统计
|
|
||||||
[] 优化路径显示,瞬移可以闪一下再熄灭
|
|
||||||
[] 勇士身上显示攻防血
|
|
||||||
[] 优化地图拖动
|
|
||||||
[x] 加入随机小贴士
|
|
||||||
[x] ui 中如果元素发生改变,那么做出背景亮一下再熄灭的效果
|
|
||||||
[] 双击怪物手册拐点可以直接在拖动条上定位
|
|
||||||
[x] 重构技能树结构
|
|
||||||
[] 技能树允许自动升级
|
|
||||||
[] 重构装备系统
|
|
||||||
[x] 弹幕系统
|
|
||||||
[x] 优化各种 ui
|
|
||||||
[] 怪物脚下加入阴影
|
|
||||||
[x] 着色器特效
|
|
||||||
[x] 完全删除 core.plugin,采用 Plugin.register 的形式进行插件编写
|
|
||||||
[x] 完善加载系统
|
|
||||||
[] 不同怪物可以在怪物手册中添加一些不同的边框
|
|
||||||
[] 按住一个按键时显示怪物的攻防血
|
|
||||||
[] 新的事件系统,并丰富自定义事件
|
|
||||||
[] 事件、eval 内容预编译
|
|
||||||
[x] 渐变切 bgm
|
|
||||||
[] 新的 Flag 系统,使用 for 申请变量,dispose 释放变量,可设为渲染进程与游戏进程共通变量
|
|
||||||
[] 机关门显示绑定怪物
|
|
||||||
[x] 复写 api,rewrite()
|
|
||||||
[x] Box 组件右下角添加 resize 按钮
|
|
||||||
[] 被光环加成的怪显示受到了哪些加成
|
|
||||||
[x] 鼠标放到光环怪上时高亮它产生的光环
|
|
||||||
[] 删除 unplugin-vue-components 插件,换用 import 引入
|
|
||||||
@ -1,15 +0,0 @@
|
|||||||
## 更新记录
|
|
||||||
|
|
||||||
此处会列出每次更新的更新记录。
|
|
||||||
|
|
||||||
## 1.0.0-alpha
|
|
||||||
|
|
||||||
1. 新增第二章的前半部分,包含两个区域 - 智慧小径和冰封高原
|
|
||||||
2. 重构大部分 ui,包括 怪物手册、楼层传送器、装备栏、道具栏、状态栏、开始界面、商店 等
|
|
||||||
3. 新增成就系统
|
|
||||||
4. 新增怪物标记功能
|
|
||||||
5. 新增定点查看功能与快捷查看怪物属性功能
|
|
||||||
6. 新增百科全书
|
|
||||||
7. 新增自动切换技能
|
|
||||||
8. 新增全屏游戏
|
|
||||||
9. 修复录像
|
|
||||||
Loading…
Reference in New Issue
Block a user