#第一章 设计游戏机制
游戏机制是游戏核心部分的规则、流程以及数据
定义了玩游戏的活动如何进行、何时发生什么事、获胜和失败的条件是什么
1.1规则定义游戏
游戏是在一个模拟出来的真实环境中,参与者**遵照规则行动**,尝试完成至少一个既定的重要目标的游乐性活动。--ernest adams《fundamentals of game design》
游戏是一个让玩家**在规则的约束下**参与模拟的冲突,最终产生可量化的结果的系统。--《rules of play》
**游戏是一个基于规则的系统,**产生一个不定的且可量化的结果。不同的结果被分配了不同的价值,玩家为了影响游戏结果而付出努力,其情绪随着结果而变化。游戏活动的最终结果有时可转换为其他事物(例如,现实世界中的金钱)。
很多游戏,以及游戏的组成部分,可以理解成状态机
1.1.1 游戏是不可预测的
* 加入偶然因素(骰子)
* 让玩家做选择(包剪锤)
* 设计出能衍生复杂玩法的游戏规则(国际象棋)
1.1.2 从规则到机制
game mechanics
game rules
机制涵盖了影响游戏运作的一切要素。游戏机制必须足够详尽,并明确说明所有的必需细节,以使程序员能够清晰准确的将它们转化为代码
1.1.3机制是独立于媒介的
使得设计师可以只为一个游戏设计机制,然后再移植到不同媒介
1.1.4 五种游戏机制
* 物理
* 内部经济
* 渐进机制
* 战术机动
* 社交互动
1.1.5机制和游戏类型
游戏机制&游戏类型.jpg1.2离散机制 VS 连续机制
1.2.2 物理机制与策略性玩法相结合
1.2.3 利用离散机制进行创新
经济机制上的创造和革新空间比物理机制大得多
1.3 机制和游戏设计过程
1.3.1 设计流程
- 概念设计阶段
快速实验型版本,测试是否有趣有可玩性
这个阶段结束之前,不应该开始设计实际的最终机制 - 详细设计阶段
不要指望每件事情都能第一次就做对,这个阶段你会不得不重新设计许多功能
找目标玩家测试 - 调整阶段
以特性冻结(feature freeze)作为开始,认可游戏已开发完的各种特性,并保证不再添加更多的新特性,从而集中精力打磨和润色已有的东西
调整阶段为减法过程,排期不发正常运作或价值微小的功能,专心设计那些确实能为游戏增彩的东西
做计划时容易低估工作量,打磨和调整游戏所需的时间大约会战区总开发时间的1/3~1/2
1.4 原型制作技术
1.4.1 术语
高保真原型
低保真原型
垂直分片
一种原型,包含了实现一个或若干个游戏特性所需的一切要素(代码、美术、声音等)
垂直分片可用于测试游戏任一时刻的可玩性,使无需展示最终产品就能让别人知道你的游戏大致是什么样子
水平分片
包含游戏某些方面全部组成部分的原型,但完全不设计游戏的其他方面
1.4.2 软件原型
制作软件原型可能会花掉和做真正游戏几乎同样长的时间
便于调整关键的参数值
在游戏里加入简单、随时可用的控制台,供在玩游戏时实时对游戏进行修改
1.4.3 纸面原型
快速、易于修改;对测试玩家来说较难上手
最佳用途是测试离散机制,更适合用于设计游戏的经济机制或渐进机制
1.4.4 物理原型
为了体会物理原型的好处,可以参加(或观察)一场实况角色扮演游戏(LARP,live-action role-play)
1.4.5 原型聚焦点
典型的原型聚焦点,大致按照早期原型到后期原型的顺序排列:
-
技术演示(tech demos)
确认所需的技术是没错的。尝试挑战技术中最困难和陌生的部分 -
游戏经济(game economy)
经济机制与一些关键性资源紧密相关
典型玩测问题: - 游戏是否平衡?
- 是否带有无敌的统治性策略?
- 能否为玩家提供有趣的选择?
- 玩家是否能充分遇见选择所带来的后果?
-
界面&操作方式(interface & control scheme)
软件原型不在于内容丰富和关卡完整,在于为玩家提供一个游乐场,使他们体验到游戏的大多数要素和交互特性
典型玩测问题: - 玩家是否能正确执行游戏中已提供的操作?
- 他们有没有其他想要或需要的游戏操作方法?
- 你是否提供了重要的信息供他们做出正确的决定?
- 操作方案是否直观?
- 玩家是否拥有玩这个游戏必备的信息?
- 他们是否注意到游戏角色正在受到伤害?或者游戏是否已经转变到一个关键性阶段?
-
教程(tutorial)
确保参与测试的玩家对你的游戏一无所知,不要干涉他们的学习过程
最重要的问题:玩家是否理解游戏,并知道这个游戏应该怎样玩
第 2 章 突现&渐进
渐进型游戏(games of progression): 渐进
突现型游戏(games of emergence): 物理、内部经济、战术机动、社交互动
↑构建游戏可玩性的两种重要选择方案
2.1 突现&渐进的历史
简单来说,突现型游戏规则相对简单,但变化多样
桌上游戏、纸牌游戏、策略游戏、动作游戏
渐进型游戏则需要由设计者准备好大量数据或资料,玩家可从任意一点访问它们,随机存取(random access)
提供许多预先设计好的挑战,设计师通常会通过精巧的关卡设计来依序排列这些挑战
渐进现象依靠于一个由设计师紧密控制的事件序列
渐进型游戏(games of progression)≠ 其他涉及游戏中渐进现象的概念(如升级、难度曲线、技能书等)
它提供一些预设的挑战,其中每个挑战仅有一种解决方案,挑战的次序是固定的(或只有很小的可变性)
2.2 突现&渐进的对比
理论上来说,突现是最有趣的结构。 ---Juul
数据密集度&过程密集度
混合型
2.3 突现型游戏
术语突现(emergence)出自复杂性理论。指一个系统的行为特性无法通过它的各组成部分(直接)推导出来的现象
可玩性中的突现特性并非源于游戏单个组成部分的复杂性,而是源于游戏各部分之间互相作用所产生的复杂性
2.3.1 复杂系统中的简单部分
概率空间
2.3.2 游戏玩法&游戏状态
玩家在游戏过程中会经历各种可能状态(即概率空间),有时把玩家经历这些状态时所经过的路线称为轨迹(trajectory)
游戏的可能状态和游玩轨迹属于游戏规则系统的突现特性
可以说,游戏的轨迹越丰富多样,越具乐趣,其可玩性就越高
v
2.3.3 实例:《文明》
单个游戏元素非常简单
离散机制
用相对简单的离散机制产生出了丰富多样的变化性,而且这种机制能够鼓励玩家在策略层面上与游戏互动
让元素尽量简单,但又在各元素之间建立起联系。这样做可以保证游戏的复杂度,但无法担保能生发出有趣的玩法
利用反馈循环之类的结构来引发突现现象是一种不错的方法,如果这个反馈能以不同的规模和速度运转的话则更好
结构(structure)这个词来指代游戏设计师为使多个游戏机制能够相互影响或控制,而设置规划这些机制的各种方式
2.4 渐进型游戏
为关卡设计的一个重要方面
利用它们来指定玩家首先遇到哪些游戏元素、拥有哪些初始资源、为了过关必须完成哪些任务等
决定玩家在游戏中拥有何种能力,并利用关卡布局(如锁、钥匙或其他关键道具的摆放位置)来控制玩家在游戏过程中的进度
通过这样做,使玩家轻松享受游戏
当玩家在游戏中进行探索并学习游戏技能时,它们会逐渐产生一种体验故事的感觉
关卡中发生事件,玩家在游戏中找到各自线索以及在特定位置触发的剧情动画(cut-scene)都是使玩家产生这种感觉的因素
2.4.1 游戏教程
一点一滴教玩家学习游戏规则
早期教学关卡中,玩家可以在一个安全的、受控的环境下试验各种游戏玩法,即使犯错也几乎不会造成什么不良后果
叙事架构
着重于空间的叙事技巧
游戏很适合用来描述空间,而不像文学作品和电影那样适合用来描述时间
2.4.2 游戏中的叙事
轨道引导(railroading)
给予玩家高度自由 & 通过关卡限制玩家的自由度
把握好两者之间的微妙平衡
2.4.3 实例:《塞尔达传说》
《塞尔达传说》系列的所有游戏都是突现型玩法&渐进型机制的结合体
森之神殿任务.jpg
任务中的瓶颈设计
辐射式布局结构
以其中一个中央房间作为辐射的中心区域(hub),由此为起点,玩家可以探索其延伸出的各个子区域(spokes)。完成子区域任务后,玩家会频繁返回中心区域
辐射式布局的有点在于能让玩家自主选择完成任务的先后顺序
中心区域也是设置存档点或地下城入口的良好地点
使用辐射式布局能最大程度地减少玩家重复路过同一区域的情况
锁-钥匙机制
英雄之旅《the writer’s journey:mythic structure for writers》(1998)
2.5 结构差异
在突现型游戏中,复杂度是由规则之间的各种联系和互相作用所产生,而不是由大量的规则堆砌而成
当规则的复杂度超过某一点后,玩法的复杂度会猛然提升--复杂度屏障(complexity barrier)
在越过某一点后,规则之间的交互作用就产生了一种效应--概率空间激增(explosion of the probability space)
游戏中的突现因素会为游戏增加大量的可能状态,较大的概率空间能提高玩家的重玩价值,确保玩家每次游戏经历都不相同
这能提高游戏的吸引力,特别是如果每次过关过程都能带来不可预测的结果时
渐进性要素很少为游戏增添各种不同的状态,但它们对游戏设计师来说易于控制
渐进特性的优点在于设计师可以指定玩家遭遇挑战和学习技能的顺序,并且能把逐渐提升的挑战难度与游戏情节有机结合起来
渐进型游戏的整体体验比突现型游戏的整体体验更已于设计
构建较大的概率空间,突现型机制相当有效
渐进型机制则相反,它通过限制玩家每次可选的选项数目来约束概率空间--在解决某个特定问题之前,玩家无法继续前行
渐进型机制是的设计师能够静心构筑玩家体验,并传达出一个叙事优秀的故事,便于控制游戏难度
2.6 突现&渐进的结合
既拥有自由和开放的突现型玩法,也能提供叙事出色的渐进型体验
《gta》
SC1 → SC2
关卡的重复度降低,故事性提升
玩家对游戏的故事走向有了更高的控制权
自行决定完成任务的顺序,不同的科研路线
第3章 复杂系统&突现结构
游戏外的突现系统: 复杂科学(science of complexity)、混沌理论(chaos theory)
3.1作为游戏突现特性的可玩性
可玩性(gameplay)定义为游戏给予玩家的各种挑战,以及玩家在游戏中所能执行的行动
简单、连贯、并能以各种有趣方式任意组合的机制
一致性应高于写实性
突现型游戏有很高的重玩价值,因为玩家每次玩游戏时遇到的挑战和可能做出的对应行为都不相同
游戏的每一段时期都是玩家与游戏共同协作而产生的独一无二的结果
如果将规则的数量减少,有时更容易创造出一个能产生真正有趣和突现型的可玩性的系统
3.1.1混沌&秩序
复杂系统(complex systems)
根据复杂性科学的研究成果,这些组成部分单个来看一般都很容易理解,也容易模拟出来。但把它们组合在一起后形成的复杂系统大多能表现出无法预测的惊人特性,很难通过单独分析每个组成部分来解释这种现象
复杂系统的行为表现既可能是有序的,也可能是混沌的,或介于两者之间
有序系统(ordered system)很容易预测,混沌系统(chaotic system)即使再你完全理解其系统各部分工作原理的情况下也无法预测。
突现系统是在秩序和混沌之间的某一点处产生出来的
秩序&混沌这两级之间,有两个阶段:周期性系统&突现型系统
复杂系统的四种行为模式.jpg
渐进型游戏属于有序系统,因为所有的挑战次序和行动次序都是预先设计好的
可以通过分析游戏机制来准确预测接下来会发生的事情
桌游中,玩家轮流执行回合的行为产生了一个周期性系统,但具有更多的细微变化性
MMORPG中,离散性的时间单位机制(ticks)影响着玩家所采取的策略
例:《文明》:
各个明确区分开来的发展阶段(扩张、合并、战争、殖民、太空竞赛)则是游戏中突现行为的清晰体现
使用骰子之类的随机数生成工具,以及让其他玩家加入到游戏中来,可以为游戏引入混沌特性
设计师必须确保这些游戏元素互相平衡得恰到好处
3.1.2突现现象是否可以设计?
通常把设计活动看做一个过程
游戏机制中的特定结构通常会产生出特定类型的结果。理解这些结构可以帮助设计师实现出他们想要的效果
在这个过程中,大量的测试工作仍然是必需的
识别这些结构,在字级的游戏和别人的游戏中辨认它的存在,利用它们创造出你所追求的游戏可玩性
3.2 复杂系统的结构特性
3.2.1 活跃并互相关联的组成部分
细胞自动机(cellular automata)
《a new kind of science》(2002) - wolfram:表现出动态行为的系统的三个关键特征:
- 系统必须有简单的单元(cells)构成,这些单元的规则必须是局部性的
- 系统必须支持远程信息传递。复杂系统中的某一个组成部分状态的改变必须要能跨越较远的时间或距离,造成系统其他组成部分的改变
- 系统组成单元的活跃程度能够有效地反映出系统行为的复杂度。如果一个系统中的活跃单元很少,那么它就不太可能生发出复杂的行为
复杂性系统的创建,只要足够多的组成部分以及足够高的活跃性和关联性,相对简单的规则也能产生出复杂的行为
例:塔防游戏
系统元素的活跃度和相互关联度是很好的指示器,可用于将突现型游戏和渐进型游戏区分开来
3.2.2 反馈循环可促进系统稳定也可使系统失稳
反馈循环(feedback loop)
例生态系统中捕食者&猎物的数量平衡
负反馈循环(negative feedback loop)
在电器中有着广泛应用
例恒温器,《文明》城市人口的增长与食物供应的制衡。会使城市最终固定在一个稳定的规模上,规模取决于城市所处的地形和玩家的科技水平
正反馈循环(positive feedback loop)
例国际象棋
3.2.3 不同的规模级别生发出不同的行为模式
《game of life》--John Conway
《pac-man》http://gameinternals.com/post/2072558330/understanding-pac-man-ghost-behavior
3.2.4 对突现进行分类
微小突现(nominal emergence)or 有意突现(intentional emergence)要么不存在反馈,要么反馈至发生在同一规模级别中的各个元素之间
例大多人造机械设备,调速器,恒温器。展现出来的功能是设计者通过设计,有意使机器各部件产生出的突现特性
展现出这种有意突现的机器,其行为是确定性的、可预测的,但缺少灵活性和适应性
弱突现(weak emergence)这种突现类型可以在系统的不同层级之间实现自顶向下的反馈
多重突现(multiple emergence)多种反馈,且反馈跨越不同规模级别
例股市
强突现(strong emergence)
例 基因系统发生突变而产生生命;语言与书写发生突现而产生文化
强突现的产生应归因于各规模级别间的较大差异,以及系统中的中间规模级别的存在
强突现是多层级的突现,其中最高层级所产生的突现行为可与最低层级上的中介体分离开来
3.3驾驭游戏中的突现特性
把以上所学的活跃并相互关联的系统组成部分、反馈循环、系统的不同规模级别的概念看做一个系统,成为游戏的结构特性(structural qualities)
Machinations构造原理 实用性的理论框架,可以直观地处理游戏中的突现特性
一个表现出突现特性的高质量游戏的构建过程是难以掌控、捉摸不定的,而Machinations能使设计师更好的掌控这个过程
第4章 内部经济
经济(economy)使资源得以生产、流通和消费的系统,这些资源的数量是可量化的
游戏中的经济系统由资源和规则组成,资源受游戏控制,规则决定资源如何产生和消耗
要理解一个游戏的可玩性,理解它的经济机制至关重要
《fundamentals of game design》Ernest Adams对游戏内部经济的论述
经济(economy)抽象的代指一切使资源(不论什么类型的资源)得以生产、流通和消费的系统
例:信息经济(information economy)中包含了信息生产者、信息加工者和信息消费者
政治经济学(political economy)研究的是政治力量如何影响政府政策
市场经济(market economy)才是关于金钱的经济
内部经济的构成要素
游戏经济的基本构成要素:资源(resource)、实体(entity)
4.1.1 资源
有形资源(tangible resource)在游戏世界中具有物理性质。存在于某一特定地点,而且一般都能被移动到其他地方
无形资产(intangible resource)在游戏世界中没有物理特性--不占据空间,也不存在于某个具体地点
例: 《WAR3》树木(有形)→木材(无形);《OW》血包(有形)→生命值(无形)
为了理解资源的特性,可以把资源看做抽象的(abstract)或具体的(concrete)
研究学习一个已有游戏的内部经济:
确定主要资源是什么 → 分析哪些具体机制控制着这些资源的互相关系,以及这些资源是如何被生产和消费的
4.1.2 实体
资源的具体数目储存在实体(entity)中(以程序员视角来看,实体本质上是一种变量)
资源是一个笼统的概念,但一个实体可以储存特定数量的资源
仅储存一个数值的实体称为简单实体(simple entity)
若干个互相关联的简单实体的集合称为复合实体(compound entity),因此一个复合实体可以包含不止一个数值
例 SLG中一个单位通常含有多个简单实体,HP,MP等。组合起来构成一个复合实体,作为组成部分的这些简单实体就是俗称的属性(attribute) 例单位的HP就是它的一个属性
4.1.2 经济系统中的四个功能
经济系统普遍含有四个能够影响资源并转移资源的功能,来源(source),消耗器(drain),转换器(converter),交易器(trader)
详细《fundamentals of game design》chapter 10
-
来源(source)
凭空产生出新资源的机制
既可以由游戏中的事件触发,也可以一直持续运转,以固定的生产速率(production rate)生产资源。可以被开启和关闭
例 模拟游戏中,金钱常常由一个来源定期生成,每次生成的量与人口数量成正比;战斗机制中,战斗单位的生命值也会自动随时间恢复 -
消耗器(drain)
与来源正相反:将实体中储存的资源从游戏中永久消除
资源并不是转移到别处,也不是转换为其他东西,只是单纯的消失掉了
例 模拟游戏中,食物的消耗速率与人口数量成正比;射击游戏中,弹药随着开火而消耗掉 -
转换器(converter)
将一种资源变换成其他形式
例 war3 树木(有形资源)在被采伐后变成木材(无形资源)
采伐树木的行为是一种转换器机制,它将树木转换为木材的速率是不变的,因为一定数量的树所产出的木材数量是固定的
例 模拟游戏中的相应科技,研究以后可提高游戏中转换器机制的效率,使转换器能产生更多的资源 -
交易器(trader)
根据一个交换规则将某种资源从一个实体转移到另一个实体,同时将另一种资源转移回来的机制。
交易器机制和转换器机制不同,没有任何东西产生或消失,只是发生物物交换
4.2 经济结构
4.2.1经济走势图
4.2.2一局国际象棋的走势图
4.2.3从机制到走势图
负反馈引发均衡
正反馈引发军备竞赛
- 死锁&互相依赖
正反馈机制可能造成死锁和互相依赖现象 - 破坏性机制中的正反馈
产生的效果有时为下行螺旋(downward spiral) - 破坏性机制中的负反馈
效果是抑制差异,维持均衡
例 FPS游戏中,某个玩家HP较低时,游戏会在地图生产更多的血包
长期投资 vs. 短期收益
《星际争霸》的资源采集部分 - 玩家技巧&资源分布所造成的变化性
动态均衡
由玩家双方所持资源的差异而产生的负反馈机制引起的均衡
这种均衡非固定在某个数值上,而是依赖于游戏中的其他变化因素
皮筋约束(rubberbanding):基于相对位置的负反馈
例 竞速游戏利用一种基于玩家在赛道上前后位置的负反馈机制来维持比赛的激烈性
《马里奥赛车》(Mario kart)落后玩家获得强力道具的概率高于领先者
4.3 内部经济在游戏中的应用
4.3.1 用内部经济补强物理机制
大多数动作游戏仍然引入了内部经济机制,并用这种机制来构建出一套完整的奖励系统或一套依托于资源的增益道具系统
增益道具
4.3.2 用内部经济影响游戏进程
例 动作游戏中的增益道具和特殊武器可以成为游戏经济的一个特殊组成部分,玩家可以利用它们到达新地点
二段跳技能可以使玩家跳到之前无法企及的高处。可以从经济的角度把这类技能看做一种新型资源,假定它们能产生一种叫做路径(access)的抽象资源
路径可作为获取额外奖励的途径,或作为推动游戏进程的必要条件
死锁局面
塞尔达系列用资源重生(例罐子)避免死锁风险。
4.3.3 通过内部经济引入策略性玩法
大多数即时战略游戏的内部经济机制精巧复杂,原因之一在于这些经济机制鼓励玩家进行长远规划和长期投资
要维持游戏的策略性,需要保证它的内部经济机制具有一定的复杂度,而不能让经济机制仅仅成为物理和动作机制的附庸
内部经济机制也能为几乎任何游戏增添策略深度(玩家需要巧妙地规划利用已有资源)
例《星际争霸》、《时之沙》
4.3.4 用内部经济创造出大概率空间
游戏的概率空间会随着内部经济复杂度的增加而迅速扩大。概率空间较大的游戏,重玩价值通常也更高,因为相比单一的通关路线,玩家在探索时拥有了更多的选择
用内部经济机制来管理角色成长、科技发展或座驾升级等要素的游戏,经常通过某种内部货币来为玩家提供选择
负反馈控制最优方案
概率空间足够大,要素不会一次全发掘出来
要是选择真正具有存在价值,一个好方法是使不同选择之间互相排斥
设计关卡时让玩家能用多种方法过关
4.3.5经济构建型游戏的一些设计技巧
例模拟经营游戏中,玩家划分地狱并建造城市设施的行为实际上是在用各种经济构件搭建一个经济结构,这个结构产生出的资源又能反过来用于进一步扩展和巩固结构本身
要考虑经济构件的所有组合方式
掌控游戏的复杂度:
- 不要一次把所有的经济构件都提供给玩家
每次只提供一部分,易于控制概率空间
可以只允许玩家使用一部分指定的经济构件,借此创造出特定的故事和挑战
例《文明》的经济构件需要玩家一个个解锁 - 留意超经济构件(meta-economic structure)
例 《模拟城市》某种区域规划方案在游戏早起可以有效的增加人口,但游戏发展到后期时却会造成严重污染
利用运转缓慢的破坏性正反馈机制 - 利用地图产生变化性并限制概率空间
即使游戏中存在一种经济建设的最佳方案(“统治性超经济结构”),只要对地图设计做调整,就可以使之失效
第5章 Machinations
machinations框架由joris Dormans设计开发,可用于帮助设计师和学习游戏设计构件、记录、模拟和测试游戏的内部经济。框架核心是machinations示意图,将游戏内部经济可视化地呈现出来,并拥有定义明确的语法
在线:www.jorisdormans.nl/machinations
machinations教程:www.peachpit.com/gamemechanics
Machinations框架
驱动machinations框架的理论依据:
游戏可玩性最终是由游戏系统中有形、无形和抽象资源的流动所决定的。
5.1.1machinations工具
规范语法
用于表现游戏机制的视觉化编程语言
5.1.2machinations工具如何运作
时间步长(time step) 迭代(iteration)
一次迭代完成,就在新状态情况下执行下一次迭代,直到发出停止命令(可以人为在示意图中设置条件,触发条件就自动停止迭代)
间隔值(interval)控制每个时间步长的长度
5.1.3machinations的表现范畴和细节程度
5.2 machinations示意图的基本元件
游戏的经济系统由资源的流动所支配
各种节点(node)来推动、牵引、积聚和分类资源
资源通路(resource connection)决定了资源如何和在各元件之间进行流动
状态通路(state connection)决定了资源的当前分配情况如何对示意图中的其他元件产生影响
5.2.1 池和资源
池(pool)最基本的节点类型
积聚资源的地方
空心圆标示池,用堆叠起来的有色小圆表示存储在池内的资源
可以手动设置池中可容纳的小圆数量值
5.2.2资源通路
资源个体可以沿着资源通路(resource connection)从一个节点移动到另一个节点
资源通路可以以不同的速率(rate)转移资源
随机流动速率
D+参数产生随机流动速率
D不加参数,machinations会使用侧边栏中dice一栏的默认值决定速率的变化范围
D6代表一枚六面骰所产生的随机数
D6+3表示上述结果上+3后所得到的数字
2D6代表掷出两枚六面骰后相加得到的范围在2~12之间的数字
2D4+D8+D12 相加
在资源通路label栏中输入25%,表示在每个时间步长张,一个资源沿此通路进行流动的概率为25%
高于100% 例:输入250%表示在一个时间步长中,一定会有两个资源发生流动,而第三个资源发生流动的概率为50%
5.2.3激活模式
5.2.4资源的推送和牵引
IMG_2986.JPGCFEA5844FFF6AFD6389ABC811F873AAD.png
IMG_2954.JPG
D8094D0D59E0720B398F9438F81DC86D.png
47CF90688392931A25593EA927C79105.png
* * * 第6章 常见机制
网友评论