浅谈《守望先锋》中的 ECS 构架

  |  

转载自云风的 BLOG

今天读了一篇 《守望先锋》架构设计与网络同步 。这是根据 GDC 2017 上的演讲 Overwatch Gameplay Architecture and Netcode 视频翻译而来的,所以并没有原文。由于是个一小时的演讲,不可能讲得面面俱到,所以理解起来有些困难,我反复读了三遍,然后把英文视频找来(订阅 GDC Vault 可以看,有版权)看了一遍,大致理解了 ECS 这个框架。写这篇 Blog 记录一下我对 ECS 的理解,结合我自己这些年做游戏开发的经验,可能并非等价于原演讲中的思想。

C#反射和特性

  |  

反射(Reflection)可以理解为镜像或者映像

  • 反射可以在不知道类型或者用new操作符进行实例化的情况下创造出一样的目标对象,并且还能够访问该对象中的内部成员,因此反射的耦合几乎可以小到忽略不计。
  • 当程序的某些逻辑只有处在运行状态中,且用户进行交互时才能确定的情况下,程序员就要对用户行为进行枚举,这样就容易写出大量的if-else,从而造成代码的臃肿和难以维护,还容易漏掉用户行为。

Shader渲染流水线

  |  

综述

什么是流水线

  • 一个产品拆分成多个部分,每个部分由专人制作。
    • 在流水线中决定最后生产速度的时间由最慢的那道工序(瓶颈(bottleneck))所决定。

因此在理想情况下把一个生产流程分为N个步骤,且每个步骤花费的时间相同的话会使得整个流程速度提高N

本站到访 | |