Skip to content

Commit 819d5a0

Browse files
committed
feat(撤销重做模式): finish update
1 parent ac646fc commit 819d5a0

File tree

32 files changed

+503
-554
lines changed

32 files changed

+503
-554
lines changed

doc/模板.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@
1717
# [解决问题的方案,分析存在的问题]?
1818

1919

20-
## 概述解决方案
21-
## 给出UML
22-
## 结合UML图,描述如何具体地解决问题
23-
## 给出代码
20+
## 概述解决方案
21+
## 给出UML
22+
## 结合UML图,描述如何具体地解决问题
23+
## 给出代码
2424

2525

2626
<!-- ## 请分析存在的问题?
@@ -32,23 +32,23 @@
3232

3333

3434

35-
## 概述解决方案
36-
## 给出UML
37-
## 结合UML图,描述如何具体地解决问题
38-
## 给出代码
35+
## 概述解决方案
36+
## 给出UML
37+
## 结合UML图,描述如何具体地解决问题
38+
## 给出代码
3939

4040

4141
<!-- ## 请分析存在的问题?
4242
## 提出改进方向? -->
4343
## 提出问题
4444

4545

46-
# [给出使用模式的改进方案]
46+
# 使用模式来改进
4747

4848
## 概述解决方案
49-
## 给出UML
50-
## 结合UML图,描述如何具体地解决问题
51-
## 给出代码
49+
## 给出UML
50+
## 结合UML图,描述如何具体地解决问题
51+
## 给出代码
5252

5353

5454

@@ -58,14 +58,14 @@
5858

5959
# 定义
6060

61-
## 一句话定义
61+
## 一句话定义
6262
<!-- ## 概述抽象的解决方案 -->
6363
## 补充说明
64-
## 通用UML
65-
## 分析角色
66-
## 角色之间的关系
67-
## 角色的抽象代码
68-
## 遵循的设计原则在UML中的体现
64+
## 通用UML
65+
## 分析角色
66+
## 角色之间的关系
67+
## 角色的抽象代码
68+
## 遵循的设计原则在UML中的体现
6969

7070

7171

@@ -106,9 +106,9 @@
106106
# 最佳实践
107107

108108
<!-- ## 结合具体项目实践经验,如何应用模式来改进项目? -->
109-
## 哪些场景不需要使用模式
109+
## 哪些场景不需要使用模式
110110
<!-- ## 哪些场景需要使用模式? -->
111-
## 给出具体的实践案例
111+
## 给出具体的实践案例
112112

113113

114114

doc/第五轮.org

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,29 @@
33
# need study markdown specification!
44

55

6-
7-
* TODO 显示图片
8-
9-
![xxx图](相对路径)
10-
11-
文件名为英文
6+
* TODO 交稿给编辑老师,改错(use markdown)
127

138

9+
* TODO 更新代码库,给出索引、how to run
1410

15-
* TODO 如果不是作者原创的图表,请在图表下方用文字说明图片来源。(例如,图片/表格来源:XXX。)
11+
** TODO update and fix README
1612

13+
** TODO give where has code, uml and how to run code and run result for each example
1714

15+
TODO give how to run rescript code(pipeline pattern should mention it!)
1816

19-
* TODO 图片使用黑白色
2017

2118

19+
** TODO 整理每个package代码,给出运行Client的代码的script;并在README中说明如何运行,怎样运行
2220

2321

22+
** TODO 对用Rescript写的package,说明如何编译,以及package.json->main对应哪个src/的.res文件
2423

2524

26-
* TODO 交稿给编辑老师,改错(use markdown)
2725

26+
** TODO 代码示例
2827

28+
https://github.com/nivance/DPModel
2929

3030

3131
* TODO 加入前言等补充章节

doc/第四轮.org

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010

1111

12-
** TODO 角色之间的关系 中增加 x对x 的明确描述
12+
** TODO 角色之间的关系 中增加 x对x 的明确描述
1313

1414
如:
1515
- 因为入口积木依赖多个其它积木,所以Entry Block和Block Protocol是一对多的依赖关系
@@ -135,23 +135,25 @@ engineState = World.registerAllPipelines(engineState)
135135

136136

137137

138-
* TODO 更新代码库,给出索引、how to run
139138

140-
** TODO update and fix README
139+
* TODO 显示图片
141140

142-
** TODO give where has code, uml and how to run code and run result for each example
141+
![xxx图](相对路径)
143142

144-
TODO give how to run rescript code(pipeline pattern should mention it!)
143+
文件名为英文
145144

146145

147146

148-
** TODO 整理每个package代码,给出运行Client的代码的script;并在README中说明如何运行,怎样运行
147+
* TODO 如果不是作者原创的图表,请在图表下方用文字说明图片来源。(例如,图片/表格来源:XXX。)
148+
149+
150+
151+
* TODO 图片使用黑白色
152+
153+
149154

150155

151-
** TODO 对用Rescript写的package,说明如何编译,以及package.json->main对应哪个src/的.res文件
152156

153157

154158

155-
** TODO 代码示例
156159

157-
https://github.com/nivance/DPModel

packages/ECS模式/article.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ worldState的superHeroes中一共有两个超级英雄的数据,其中有一
364364
# [给出可能的改进方案,分析存在的问题]?
365365

366366

367-
## 概述解决方案
367+
## 概述解决方案
368368

369369

370370
<!-- 通过下面的改进来解决重复和继承的问题: -->
@@ -380,7 +380,7 @@ worldState的superHeroes中一共有两个超级英雄的数据,其中有一
380380

381381

382382

383-
## 给出UML
383+
## 给出UML
384384

385385
**领域模型**
386386
![image](https://img2023.cnblogs.com/blog/419321/202304/419321-20230407093910175-912066482.png)
@@ -410,7 +410,7 @@ InstanceComponent没有数据和逻辑,它只是一个标记,用来表示挂
410410

411411

412412

413-
## 结合UML图,描述如何具体地解决问题
413+
## 结合UML图,描述如何具体地解决问题
414414

415415
- 现在只需要实现一次Position组件中的update、move函数,然后将它挂载到不同的GameObject中,就可以实现普通英雄和超级英雄的更新、移动的逻辑,从而消除了之前在NormalHero、SuperHero中共实现了两次的update、move函数造成的重复代码
416416

@@ -419,7 +419,7 @@ InstanceComponent没有数据和逻辑,它只是一个标记,用来表示挂
419419
通过这样的设计,将行为的逻辑和数据从人物移到了组件中,从而可以通过组合的方式使人物具有多个行为,避免了庞大的人物模块的出现
420420

421421

422-
## 给出代码
422+
## 给出代码
423423

424424
首先,我们看下Client的代码;
425425
然后,我们依次看下Client代码中前两个步骤的代码,它们包括:
@@ -899,7 +899,7 @@ worldState的gameObjects包括了4个gameObject的数据,其中有一个gameOb
899899

900900

901901

902-
# [给出使用模式的改进方案]
902+
# 使用ECS模式来改进
903903

904904
## 概述解决方案
905905

@@ -940,7 +940,7 @@ GameObject不再有数据和逻辑了,而只是一个全局唯一的id;组
940940
1.GameObject和组件的数据被移到了Manager中,它们的逻辑则被移到了Manager和System中,其中只操作自己数据的逻辑(如getPosition、setPosition)被移到了Manager中,其它逻辑(通常为行为逻辑,需要操作多种组件)被移到了System中
941941
2.一种组件的Manager只对该种组件进行操作,而一个System可以对多种组件进行操作
942942

943-
## 给出UML
943+
## 给出UML
944944

945945

946946
**领域模型**
@@ -1027,7 +1027,7 @@ Manager层:
10271027

10281028

10291029

1030-
## 结合UML图,描述如何具体地解决问题
1030+
## 结合UML图,描述如何具体地解决问题
10311031

10321032
- 现在各种组件的数据都集中保存在各自Manager的ArrayBuffer中,遍历同一种组件的所有组件数据即是遍历一个ArrayBuffer。因为ArrayBuffer的数据是连续地保存在内存中的,所以缓存命中不会丢失,从而提高了性能
10331033

@@ -1036,7 +1036,7 @@ Manager层:
10361036

10371037

10381038

1039-
## 给出代码
1039+
## 给出代码
10401040

10411041

10421042
首先,我们看下Client的代码;
@@ -1559,7 +1559,7 @@ worldState的positionComponentManagerState的positions有3个连续的值是2、
15591559

15601560
# 定义
15611561

1562-
## 一句话定义
1562+
## 一句话定义
15631563

15641564
组合代替继承;内存中连续地保存组件数据;分离逻辑和数据
15651565

@@ -1576,10 +1576,10 @@ worldState的positionComponentManagerState的positions有3个连续的值是2、
15761576
提出System、Manager、Component+GameObject这三层,其中System层实现行为逻辑,Manager层维护数据,Component+GameObject层的组件和GameObject只是一个扁平的number类型的索引或者id值 -->
15771577

15781578

1579-
## 通用UML
1579+
## 通用UML
15801580
![image](https://img2023.cnblogs.com/blog/419321/202304/419321-20230407093915551-2129951086.png)
15811581

1582-
## 分析角色
1582+
## 分析角色
15831583

15841584
我们来看看模式的相关角色:
15851585

@@ -1647,7 +1647,7 @@ OtherComponentManager的state数据包括多个“value map”字段,它们是
16471647

16481648

16491649

1650-
## 角色之间的关系
1650+
## 角色之间的关系
16511651

16521652
- 只有一个CreateStateSystem
16531653

@@ -1694,7 +1694,7 @@ Component+GameObject层:
16941694

16951695

16961696

1697-
## 角色的抽象代码
1697+
## 角色的抽象代码
16981698

16991699
下面我们来看看各个角色的抽象代码:
17001700

@@ -2044,7 +2044,7 @@ export type component = id
20442044
20452045
20462046
2047-
## 遵循的设计原则在UML中的体现
2047+
## 遵循的设计原则在UML中的体现
20482048
20492049
ECS模式主要遵循下面的设计原则:
20502050
@@ -2153,12 +2153,12 @@ World、System、Manager、Component+GameObject这几个层只能上层依赖下
21532153
21542154
# 最佳实践
21552155
2156-
## 哪些场景不需要使用模式
2156+
## 哪些场景不需要使用模式
21572157
21582158
如果游戏的人物种类很少,行为简单,那么就可以使用最开始给出的继承方案,使用一个人物模块对应一种人物,通过继承实现多种人物,这样最容易实现
21592159
21602160
2161-
<!-- ## 给出具体的实践案例 -->
2161+
<!-- ## 给出具体的实践案例 -->
21622162
21632163
<!-- 对于GeometryComponent组件,它的ArrayBuffer会保存顶点数据,如顶点、法线之类的数据。
21642164

packages/ECS模式/draft.md

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -213,11 +213,11 @@ RenderInstancesSystem:all
213213
# 主问题:给出直接的解决方案
214214

215215
- 请给出直接的解决方案?
216-
- 概述解决方案
216+
- 概述解决方案
217217
Add SuperHero
218-
- 给出UML
219-
- 给出代码
220-
- 结合UML图,描述如何具体地解决问题
218+
- 给出UML
219+
- 给出代码
220+
- 结合UML图,描述如何具体地解决问题
221221

222222

223223
# 主问题:分析存在的问题
@@ -233,13 +233,13 @@ move
233233
# 主问题:给出可能的改进方案
234234

235235
- 请给出可能的改进方案?
236-
- 概述解决方案
236+
- 概述解决方案
237237
组件化
238238

239239

240240
- 给出UML ?
241-
- 给出代码
242-
- 结合UML图,描述如何具体地解决问题
241+
- 给出代码
242+
- 结合UML图,描述如何具体地解决问题
243243

244244

245245
# 主问题:分析存在的问题
@@ -269,25 +269,25 @@ GameObjectManager?
269269

270270

271271
- 遵循哪些设计原则
272-
- 给出UML
272+
- 给出UML
273273
VelocityComponentManager, FlyComponentManager与PositionComponentManager类似(但是没有batchUpdate函数),故省略它们的数据和函数
274274

275275

276-
- 给出代码
277-
- 结合UML图,描述如何具体地解决问题
276+
- 给出代码
277+
- 结合UML图,描述如何具体地解决问题
278278

279279
# 主问题:提出模式
280280

281281

282282
- 设计意图?
283283
- 定义
284-
- 一句话定义
284+
- 一句话定义
285285
- 描述定义?
286-
- 通用UML
287-
- 分析角色
288-
- 角色之间的关系
289-
- 角色的抽象代码
290-
- 遵循的设计原则在UML中的体现
286+
- 通用UML
287+
- 分析角色
288+
- 角色之间的关系
289+
- 角色的抽象代码
290+
- 遵循的设计原则在UML中的体现
291291

292292

293293
- 应用
@@ -321,9 +321,9 @@ GameObjectManager?
321321
# 主问题:最佳实践
322322

323323
- 结合具体项目实践经验,如何应用模式来改进项目?
324-
- 哪些场景不需要使用模式
324+
- 哪些场景不需要使用模式
325325
- 哪些场景需要使用模式?
326-
- 给出具体的实践案例
326+
- 给出具体的实践案例
327327

328328

329329
<!-- reallocate gameObject Maps

0 commit comments

Comments
 (0)