Skip to content

Commit 78a7e79

Browse files
committed
chore: add README
1 parent cebaf35 commit 78a7e79

File tree

5 files changed

+70
-18
lines changed

5 files changed

+70
-18
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# 如何运行代码
2+
3+
不能运行
Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
1+
# 如何运行代码
12

2-
这里与之前一样,我们将一个GameObject的数据保存在一个state中,然后用一个索引与其关联。具体就是:
3-
gameObject其实就是一个number类型的id值,
4-
gameObjectState保存了一个GameObject的数据
5-
gameObject与gameObjectState一一关联,这个关联体现在前者是WorldState->gameObjects这个Hash Map的Key,后者是它的Value
3+
```js
4+
npm run client
5+
```
66

7-
<!-- World封装了操作GameObject和组件的API -->
7+
# 代码说明
88

9+
跟之前一样,我们将一个GameObject的数据保存在一个state中,然后用一个索引与其关联。具体就是:
910

11+
- gameObject其实就是一个number类型的id值
12+
- gameObjectState保存了一个GameObject的数据
13+
- gameObject与gameObjectState一一关联,这个关联体现在前者是WorldState->gameObjects这个Hash Map的Key,后者是它的Value
1014

15+
<!-- World封装了操作GameObject和组件的API -->
1116

1217
组件与GameObject一样,我们将它的数据保存在一个state中,只是不需要索引。所以一个组件就等于一个组件state
Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
1-
我们将一个英雄的数据保存在一个state中,然后用一个索引与其关联。具体就是:
2-
normalHero、superHero其实就是一个number类型的id值
3-
normalHeroState、superHeroState分别保存了一个普通英雄、一个超级英雄的数据(比如position、velocity)
4-
normalHero与normalHeroState一一关联,这个关联体现在前者是WorldState->normalHeroes这个Hash Map的Key,后者是它的Value
5-
同理,superHero与superHeroState关联
1+
# 如何运行代码
2+
3+
```js
4+
npm run client
5+
```
6+
7+
# 代码说明
8+
9+
我们将一个英雄的数据保存在一个state中,然后用一个索引与其关联。具体就是:
10+
11+
- normalHero、superHero其实就是一个number类型的id值
12+
- normalHeroState、superHeroState分别保存了一个普通英雄、一个超级英雄的数据(比如position、velocity)
13+
- normalHero与normalHeroState一一关联,这个关联体现在前者是WorldState->normalHeroes这个Hash Map的Key,后者是它的Value
14+
- 同理,superHero与superHeroState关联
615

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1+
# 如何运行代码
12

2-
值得注意的是:
3-
将“gameObject挂载了哪些组件”的数据放在哪里?
4-
它们可以放在GameObjectManager中,也可以分散地放在各个组件的Manager中。
5-
考虑到为了方便组件直接就近获得GameObject挂载的其它组件,所以我们选择后者
6-
组件的Manager可以通过“挂载的gameObject”、“gameObject挂载了哪些组件”这两个数据来获得GameObject挂载的其它组件
3+
```js
4+
npm run client
5+
```
76

7+
# 代码说明
88

99

10+
值得注意的是:
1011

11-
TODO remove?
12-
值得注意的是:
13-
因为“gameObject挂载了哪些组件”的数据(如这里的gameObjectPositionMap)是放在组件的Manager(如这里的PositionComponentManager)中的,所以挂载组件的代码也放在组件的Manager(如这里的PositionComponentManager)而不是GameObjectManager中
12+
- 将“gameObject挂载了哪些组件”的数据放在哪里?它们可以放在GameObjectManager中,也可以分散地放在各个组件的Manager中。考虑到为了方便组件直接就近获得GameObject挂载的其它组件,所以我们选择后者。组件的Manager可以通过“挂载的gameObject”、“gameObject挂载了哪些组件”这两个数据来获得GameObject挂载的其它组件
13+
- 因为“gameObject挂载了哪些组件”的数据(如gameObjectPositionMap)是放在组件的Manager(如PositionComponentManager)中的,所以操作“GameObject和挂载的组件”的代码也放在组件的Manager(如PositionComponentManager)而不是GameObjectManager中

README.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# 《3D编程模式》
2+
3+
本书是开源书,罗列了我从自己的实战项目中提炼出来的关于3D编程(主要包括“3D引擎/游戏引擎”、“编辑器”开发)的各种编程模式
4+
5+
本书作者:杨元超
6+
7+
**[在线阅读](TODO)**
8+
9+
10+
## 源码索引
11+
12+
要想运行源码,请在Clone本仓库后,先在仓库根目录执行下面的命令:
13+
```js
14+
npm install
15+
npm run bootstrap
16+
```
17+
安装了yarn的同学可以执行下面的命令来替代上面的命令:
18+
```js
19+
yarn
20+
yarn bootstrap
21+
```
22+
23+
24+
下面是各个模式的源码索引:
25+
26+
- ECS模式源码
27+
- [普通英雄和超级英雄](./ECS模式代码/story_before/README.md)
28+
- [基于组件化的思想改进](./ECS模式代码/story_after/README.md)
29+
- [使用ECS模式来改进](./ECS模式代码/story_improve/README.md)
30+
- [抽象代码](./ECS模式代码/ecs_pattern_role_abstract/README.md)
31+
32+
33+
## 版权许可
34+
35+
本书采用“保持署名”创意共享 4.0 许可证。只要保持原作者署名,您可以自由地阅读、分享、修改本书。

0 commit comments

Comments
 (0)