main
Yogi 2023-10-28 14:23:18 +08:00
parent 95c7ff99a8
commit 3ef14f7ded
8 changed files with 55 additions and 24 deletions

View File

@ -13,13 +13,26 @@
"state": {
"type": "markdown",
"state": {
"file": "Godot 中文教程.md",
"file": "TODO模板.md",
"mode": "source",
"source": false
}
}
},
{
"id": "a2149cf1fbaf30db",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "目的达成流程PDCA.md",
"mode": "source",
"source": false
}
}
}
]
],
"currentTab": 1
}
],
"direction": "vertical"
@ -85,7 +98,7 @@
"state": {
"type": "backlink",
"state": {
"file": "Godot 中文教程.md",
"file": "目的达成流程PDCA.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
@ -102,7 +115,7 @@
"state": {
"type": "outgoing-link",
"state": {
"file": "Godot 中文教程.md",
"file": "目的达成流程PDCA.md",
"linksCollapsed": false,
"unlinkedCollapsed": true
}
@ -125,7 +138,7 @@
"state": {
"type": "outline",
"state": {
"file": "Godot 中文教程.md"
"file": "目的达成流程PDCA.md"
}
}
}
@ -149,14 +162,24 @@
"workspaces:Manage workspace layouts": false
}
},
"active": "5e6e04e0870d7cdb",
"active": "a2149cf1fbaf30db",
"lastOpenFiles": [
"Aseets/Pasted image 20231028133136.png",
"Aseets/Pasted image 20231028133035.png",
"TODO模板.md",
"目的达成流程PDCA.md",
"TMP.md",
"Godot 中文教程.md",
"lazygit.md",
"Linux Setup.md",
"linux安装与应用.md",
"Lunarvim.md",
"README.md",
"Think in UML.canvas",
"TODO.md",
"积极心理.md",
"dwm桌面.md",
"WorldTreeModule.md",
"TODO模板.md",
"Watching List.md",
"Godot 中文教程.md"
"Watching List.md"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

View File

@ -18,7 +18,7 @@
4. 在Theme中把字体进行设置, 动态字体, 赋予字体与Fallback字体, 保证字体可以正常显示
5. 脚本中调用 LocalxxServer.xxx 传入语言的key 可以切换不同语言
## Reference
### Reference
[Internationalize Your Game Using Godots Localization Tools | Lets Learn Godot 3.5 - YouTube](https://www.youtube.com/watch?v=1Pxa5WgVLio)
[Browse Fonts - Google Fonts](https://fonts.google.com/?preview.text=hello&sort=popularity)

View File

@ -5,9 +5,9 @@
- [x] 队伍面板
- [ ] 商店,钓鱼,采集,等面板
- [x] 战斗UI
- [ ] 本地化功能模块
- [ ] 探索
- [ ] 拓展
- [x] 本地化功能模块
- [x] 探索
- [x] 拓展
- [ ] 存档模块分析
- [ ] 编辑器开发
- [ ] 类似实现标签模块

View File

@ -16,4 +16,3 @@
## 思考与反思
> 做完后, 反思下次遇到这个问题, 如何能更快的提升工作效率, 减少工作时间

View File

@ -2,32 +2,32 @@
"nodes":[
{"id":"295515b74130b4c1","type":"group","x":60,"y":-360,"width":940,"height":1440,"label":"基于需求开发(面向对象开发)"},
{"id":"f7a5a05e3b3adbee","type":"group","x":-880,"y":-360,"width":907,"height":1440,"label":"基于顺序流程开发 (面向流程开发)"},
{"id":"01381dfb0d849945","type":"group","x":177,"y":120,"width":707,"height":180,"label":"节点(对象)"},
{"id":"5598149665daee13","type":"group","x":-96,"y":-840,"width":246,"height":380,"label":"现实因果"},
{"id":"01381dfb0d849945","type":"group","x":177,"y":120,"width":707,"height":180,"label":"节点(对象)"},
{"id":"e55941a9e3bc5761","type":"text","text":"节点A","x":218,"y":-100,"width":111,"height":60},
{"id":"3dd7047c8798b5be","type":"text","text":"因","x":98,"y":-320,"width":67,"height":60},
{"id":"e151bed3b296b893","type":"file","file":"WorldTreeModule.md","x":2080,"y":-352,"width":1120,"height":2132},
{"id":"43c25dad51fed755","type":"text","text":"## 流程划分\n- 进入游戏\n- 新建存档\n- 配置角色存档\n- 读取存档\n- 进入主场景\n- 打开战斗场景\n- 关闭战斗场景\n- 退出主场景\n- 写入存档\n- 游戏结束","x":1760,"y":-352,"width":192,"height":363},
{"id":"c38d1a12d50745c6","type":"text","text":"## 大地图解决方案\n\n## 必做方案\n- 从美术那里获得`大地图`(比如一个种族的地图)\n- 程序切图变成`小地图`且批量命名\n\n### 普通 2D 方案\n- 详情参考`2DPathFindExample'\n- 配置流产\n\t- 一张`小地图` 可以作为一个 `场景` 使用\n\t- 每个场景中, 配置 `物理碰撞` `AI寻路` `城池` `副本` 等等\n- 此做法类似我们早期使用Unity实现的方法思路, 但是他有更方便的 2D 功能\n#### 优劣分析\n- 优: 自定义能力极强\n- 劣: 相比较其他方案, 批量修改处理不易\n- 劣: 相比较其他方案, 需要实现大地图编辑器, 从而实现游戏内配置, 方便进行直观的配置 (运行增删查改, 动态加载等等)\n\n### Tile Map方案\n- 详情参考 `TileMapExample`\n- 配置流程\n\t- (笔刷) 先配置 每个网格资源 本身的属性 (比如 可以AI导航区域, 碰撞区域, 颜色, 材质, 高度 等等)\n\t- (底色) 用`小地图`做背景\n\t- (画图) 再在把网格刷在地图上\n- 网格中的物体: 1. 可交互 2.可挡路 3.可以动态消失和增加\n\n### 优劣分析\n- 优: 性能不错, 我测试下来性能可以接受\n- 劣: Godot在编辑时, 有可能会闪退 具体原因不明\n- 劣: 因为是基于网格的, 所以具体的网格都是以格子为基准的, 比如 \"材质\" \"高度\" \"导航区域\" \"碰撞区域\". 没有其他方式的那种自定义的方式自由 (必须是格子图)\n","x":3280,"y":-352,"width":960,"height":1090},
{"id":"56c4798c604b529d","type":"text","text":"## Route Map\n- 游戏框架分析\n- 代码架构分析\n- 游戏模块分析\n- 游戏模块 UML 图制作\n- 代码实现\n\t- 大地图解决方案\n\t- 战斗模块\n\t\t- 战斗模块配置功能(能力与效果)\n\t- 存档初始化模块\n\t- 大地图模块\n","x":1203,"y":-352,"width":517,"height":732},
{"id":"7dc171478dd606af","type":"text","text":"战斗角色是使用的回合计数\n大地图角色使用时间计数\n\n是否可以\n战斗时 时间暂停\n一个回合结束时, 增加对应游戏时间\n(这样会有一些意想不到的效果, 比如当前回合结束后, 刚好经过了一天, 一天一时间一过, 角色某个效果会触发, 比如回复满血)","x":1308,"y":420,"width":412,"height":300},
{"id":"1e71eae3e8ab4dd7","type":"text","text":"果","x":44,"y":-540,"width":67,"height":60},
{"id":"20e8d9b9baff4d3d","type":"text","text":"因","x":-76,"y":-540,"width":67,"height":60},
{"id":"a1a7be26d20eaca1","type":"text","text":"抽象","x":-19,"y":-660,"width":96,"height":29},
{"id":"3749392e088d5fa1","type":"text","text":"现实","x":-19,"y":-820,"width":96,"height":29},
{"id":"c33ab99b87004926","type":"text","text":"果","x":898,"y":-320,"width":67,"height":60},
{"id":"4ae0834068c8c432","type":"text","text":"封装/特性/继承/聚合/多态","x":584,"y":220,"width":280,"height":50},
{"id":"6ecc964c9042cafe","type":"text","text":"结果","x":744,"y":140,"width":120,"height":50},
{"id":"02979079622fc748","type":"text","text":"节点D","x":731,"y":-100,"width":111,"height":60},
{"id":"be3e0105f3877ef9","type":"text","text":"- 对象眼界狭窄, 只关心和自己相关的几个对象, 不关心和自己无关的\n- 没有特性的可以称之为类, 被赋予特性后, 可以被称之为实例\n- 需求发生改变时, 一般是直接新增类. 不会大幅度的影响其他对象.\n- 举例\n\t- 面向对象就像是把建造一辆车这个目标, 分解成建造每一个零部件后组装\n\t- 当车辆更新换代的时候, 用于组装的类会发生变更(可以重载或是继承), 也会新增一些新的对象类型(同样可以是继承和承载)","x":233,"y":660,"width":583,"height":260},
{"id":"b78f0a5a2d476e66","type":"text","text":"``` python\nfunc main(i)\n\ta = nodeA.do(i)\n\tb = nodeB.do(a)\n\te = nodeE.do(a)\n\tf = nodeF.do(b,a,e)\n\tc = nodeC.do(b)\n\to = nodeD.do(c,f)\n\treturn o\n```","x":233,"y":360,"width":583,"height":280},
{"id":"ccc50c45875e8121","type":"text","text":"节点F","x":550,"y":-45,"width":111,"height":60},
{"id":"baeb4b1fe957ac3e","type":"text","text":"节点C","x":550,"y":-175,"width":111,"height":60},
{"id":"6e4257fdd05e9ae8","type":"text","text":"功能计算","x":444,"y":140,"width":160,"height":50},
{"id":"7aab729a19843255","type":"text","text":"节点B","x":358,"y":-175,"width":111,"height":60},
{"id":"301c14f628e0d44e","type":"text","text":"节点E","x":390,"y":15,"width":111,"height":60},
{"id":"67cc784857841adc","type":"text","text":"特性","x":320,"y":220,"width":160,"height":50},
{"id":"e55941a9e3bc5761","type":"text","text":"节点A","x":218,"y":-100,"width":111,"height":60},
{"id":"6cd0aa5fd7e08b73","type":"text","text":"数据","x":197,"y":140,"width":131,"height":50},
{"id":"3dd7047c8798b5be","type":"text","text":"因","x":98,"y":-320,"width":67,"height":60},
{"id":"1e71eae3e8ab4dd7","type":"text","text":"果","x":44,"y":-540,"width":67,"height":60},
{"id":"20e8d9b9baff4d3d","type":"text","text":"因","x":-76,"y":-540,"width":67,"height":60},
{"id":"a1a7be26d20eaca1","type":"text","text":"抽象","x":-19,"y":-660,"width":96,"height":29},
{"id":"3749392e088d5fa1","type":"text","text":"现实","x":-19,"y":-820,"width":96,"height":29},
{"id":"be3e0105f3877ef9","type":"text","text":"- 对象眼界狭窄, 只关心和自己相关的几个对象, 不关心和自己无关的\n- 没有特性的可以称之为类, 被赋予特性后, 可以被称之为实例\n- 需求发生改变时, 一般是直接新增类. 不会大幅度的影响其他对象.\n- 举例\n\t- 面向对象就像是把建造一辆车这个目标, 分解成建造每一个零部件后组装\n\t- 当车辆更新换代的时候, 用于组装的类会发生变更(可以重载或是继承), 也会新增一些新的对象类型(同样可以是继承和承载)","x":233,"y":660,"width":583,"height":260},
{"id":"b78f0a5a2d476e66","type":"text","text":"``` python\nfunc main(i)\n\ta = nodeA.do(i)\n\tb = nodeB.do(a)\n\te = nodeE.do(a)\n\tf = nodeF.do(b,a,e)\n\tc = nodeC.do(b)\n\to = nodeD.do(c,f)\n\treturn o\n```","x":233,"y":360,"width":583,"height":280},
{"id":"67cc784857841adc","type":"text","text":"特性","x":320,"y":220,"width":160,"height":50},
{"id":"150aa8c33533e9d6","type":"text","text":"果","x":-215,"y":-335,"width":67,"height":60},
{"id":"a86a7ac36ae3f4f0","type":"text","text":"``` python\nfunc main(i)\n\ta = get(i)\n\tb = ClacA(a)\n\te = ClacE(a)\n\tf = CalcF(b,a,e)\n\tc = CalcC(b)\n\to = CalcO(c,f)\n\treturn o\n\n# 需求变更时, 新写方法, 插入/删除流程\n```","x":-728,"y":-245,"width":583,"height":285},
{"id":"a5b1c2cce5f1efbb","type":"text","text":"功能计算","x":-519,"y":-333,"width":160,"height":50},

View File

@ -0,0 +1,9 @@
![](Pasted%20image%2020231028133035.png)
![](Pasted%20image%2020231028133136.png)
- PDCA可以区分为两个大类, PD计划中的思考与行动, CA是总结下的思考与行动
- 就像阅读经典, 先P, 比如让自己每天粗略阅读100page, 然后执行D. 完成后, 开始C, 判断这本书的整体价值, 如果满足重读精读价值, 那么再次精读. 设定精读计划, 最后再次A执行.
- 然后上述的阅读举例的外部或内部还可以继续细分PDCA, 从而实现 知行合一, 优化提升, 从而避免行而不思, 思而不行, 过而不省,闭门造车等情况.
## Reference
[PDCA循环——思维模型分享第27期_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1Va411G7s3/?spm_id_from=333.999.0.0&vd_source=ba468568caebc92479698e83c28be8b0)