大家好,这段时间我完成了“积木模式”、“管道模式”、“多线程模式”、“依赖隔离模式”的初稿

目前我已经完成了所有模式(7个模式)的初稿,下面会给出它们的定义和使用场景,如果您正好能用到,请联系我提前阅读模式的初稿,欢迎大家给出反馈建议,您的大名有机会出现在《3D编程模式》的书中,感谢!

我的QQ号:

395976266

我的微信号:

chaogex

这里是所有的的写书记录:

《3D编程模式》写书记录

模式的概况

积木模式

定义

系统由积木搭建而成

使用场景

多人开发的大型系统

具体场景如下:

  • 多人开发的引擎
  • 多人开发的编辑器

管道模式

定义

将连续的、有一定执行顺序的逻辑离散化为一个个独立的Job,按照配置数据在管道中依次执行

使用场景

需要按串行或者并行的顺序连续地执行多个逻辑

具体场景如下:

  • 系统的初始化
  • 引擎主循环中的更新、渲染

多线程模式

定义

首先并行运行多个线程,然后同步更新主线程数据

使用场景

需要渲染大型场景或者有并行逻辑的系统

具体场景如下:

  • 需要渲染大型场景
  • 开多个线程来并行地执行一些逻辑,如加载超大模型、进行复杂计算等逻辑

依赖隔离模式

定义

隔离系统的外部依赖,使得外部依赖的变化不会影响系统

使用场景

使用了频繁变化的外部依赖的系统

具体场景如下:

  • 替换编辑器使用的引擎

  • 升级编辑器使用的引擎的版本

  • 增加编辑器使用的引擎

拼接模式

定义

分解包括各种分支的大数据为小块单位,按照配置文件来拼接

使用场景

系统需要构造包括各种分支的数据

具体场景如下:

  • 构造引擎的Shader代码
  • 构造游戏的地图数据

撤销重做模式

定义

操作时保存不可变的state,撤销/重做时取出对应的state来作为当前的state

使用场景

使用函数式编程范式开发的系统,该系统需要撤销/重做功能

具体场景如下:

  • 需要撤销/重做功能的编辑器
  • 需要保存/载入功能的游戏

ECS模式

定义

组合代替继承,集中管理组件数据,分离逻辑和数据

使用场景

适合于大型的游戏,场景中有很多人物,人物的行为很多或者很复杂

具体场景如下:

  • 有很多个种类的游戏人物的游戏
  • 游戏人物有很多的行为,而且还经常会增加新的行为

《3D编程模式》写书-第3次记录的更多相关文章

  1. 《3D编程模式》写书-第1天记录

    大家好,我现在开始写书了,书名为:<3D编程模式> 我会在本系列博文中记录写书的整个过程,感谢大家支持! 这里是所有的的写书记录: <3D编程模式>写书记录 为什么写书 去年我 ...

  2. 3D编程模式:依赖隔离模式

    大家好~本文提出了"依赖隔离"模式 系列文章详见: 3D编程模式:开篇 本文相关代码在这里: 相关代码 目录 编辑器需要替换引擎 设计意图 定义 应用 扩展 最佳实践 更多资料推荐 ...

  3. 为了支持AOP的编程模式,我为.NET Core写了一个轻量级的Interception框架[开源]

    ASP.NET Core具有一个以ServiceCollection和ServiceProvider为核心的依赖注入框架,虽然这只是一个很轻量级的框架,但是在大部分情况下能够满足我们的需要.不过我觉得 ...

  4. 开始3D编程前需注意的十件事

    http://www.csdn.net/article/2013-06-21/2815949-3d-programming 原文作者Vasily Tserekh是名3D编程爱好者,他发表了一篇博文&l ...

  5. Java多线程编程模式实战指南之Promise模式

    Promise模式简介(转) Promise模式是一种异步编程模式 .它使得我们可以先开始一个任务的执行,并得到一个用于获取该任务执行结果的凭据对象,而不必等待该任务执行完毕就可以继续执行其他操作.等 ...

  6. MVC编程模式

    MVC编程模式 MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式: Model(模型)表示应用程序核心(比如数据库记录列表) ...

  7. 游戏编程模式KeyNote

    [游戏编程模式KeyNote] 1.命令模式. 重做在游戏中并不常见,但重放常见.一种简单的重放实现是记录游戏每帧的状态,这样它可以回放,但那会消耗太多的内存.相反,很多游戏记录每个实体每帧运行的命令 ...

  8. 近中期3D编程研究目标

    近几年一直在用业余时间研究3D编程,研究的中期目标是建立一个实用的开源3D编程框架.3D编程技术最直接的应用是开发游戏,所以3D编程框架也就是3D游戏开发框架.在我看来,游戏是否好玩的关键是能否为玩家 ...

  9. [.net 多线程]异步编程模式

    .NET中的异步编程 - EAP/APM 从.NET 4.5开始,支持的三种异步编程模式: 基于事件的异步编程设计模式 (EAP,Event-based Asynchronous Pattern) 异 ...

  10. 跟Evan学Sprign编程思想 | Spring注解编程模式【译】

    Spring注解编程模式 概况 多年来,Spring Framework不断发展对注解.元注解和组合注解的支持. 本文档旨在帮助开发人员(Spring的最终用户以及Spring Framework和S ...

随机推荐

  1. GitHub、Google等镜像加速地址收集

    摘要 本文用于收集GitHub.Google等镜像/加速地址. GitHub GitHub加速地址一览 fastgithub Https://www.fastgithub.com/(推荐) 站源 地址 ...

  2. [CF3C] Tic-tac-toe

    [题目描述] 显然,我们每个人都熟悉Tic-tac-toe游戏. 这个游戏的规则是:两个人依次在3X3的棋盘上下棋. 当一个人有3个棋子连成一行或一列或一纵列时,则这个人已经获得胜利.这时则停止下棋. ...

  3. spring报错-Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 63

    这个错误原因是因为JDK版本过高,改一下版本就行了 把里面的19改成8 这样就行了

  4. parameterType的用法

    在mybatis映射接口的配置中,有select,insert,update,delete等元素都提到了parameterType的用法,parameterType为输入参数,在配置的时候,配置相应的 ...

  5. MinIO客户端之rm

    MinIO提供了一个命令行程序mc用于协助用户完成日常的维护.管理类工作. 官方资料 mc rm 删除指定的对象. 准备待删除的对象,查看对象,命令如下: ./mc ls local1/bkt2/ 控 ...

  6. ElasticSearch之cat nodes API

    命令样例如下: curl -X GET "https://localhost:9200/_cat/nodes?v=true&pretty" --cacert $ES_HOM ...

  7. IIS通过ARR实现负载均衡

    一.实现整体方式介绍 项目中部署在windows服务器上的项目,需要部署负载均衡,本来想用nginx来配置的,奈何iis上有几个项目,把80端口和443端口占用了,nginx就用不了了(因为通过域名访 ...

  8. 川普真会说中文?连嘴型都同步,用VideoReTalking一键生成你的AI播报员

    你能想到这种画面吗?霉霉在节目中用普通话接受采访,特朗普在老家用中文脱口秀,蔡明老师操着一口流利的英文调侃潘长江老师.. 这听起来似乎很魔幻,可如今全部由VideoReTalking实现了 你只需要传 ...

  9. 【csharp】抽象类与接口有哪些不同?什么时候应该使用抽象类?

    抽象类与接口有哪些不同? 抽象类和接口是在面向对象编程中两个不同的概念,它们有一些重要的区别.以下是抽象类和接口的主要不同点: 抽象类(Abstract Class): 成员类型: 抽象类可以包含抽象 ...

  10. Luogu P1298 最接近的分数 做题记录

    算是水紫,不过也学到一些有用的东西. 题意 给定正小数 \(N\).求分子不大于 \(n\),分母不大于 \(m\) 的分数 \(\dfrac{n}{m}\),使得 \(\dfrac{n}{m}\) ...