• ECS杂想


    昨晚敲代码时突然想到,为什么ECS架构能降低复杂度
     
    比如之前老出问题的死亡流程:
    、战斗系统的Loop里,扣血空了
    调Death接口
    、调统计计算
    、外部注册的战斗结束回调
    很可能Death的逻辑流牵扯很远,同“外部战斗回调”互斥了
    代码层级很难察觉到这类冲突
     
    为什么会有这种互斥呢?怎么发生的?
    常见的一种:Death中清理了某些数据,战斗结束回调的逻辑流里仍持有该数据的引用
    想想看,这一系列的动作(死亡、统计、各种回调)实际上发生在一条逻辑流中,互相间极易穿插
    PS:顺序式编程的思路下,逻辑流从搜集数据那就开始了,因为后续调用不会重新搜集那份数据(ECS最大的优点了吧),而这份数据的“中途更新”……没有很好的方式捕获到
     
    同一条逻辑流之中,我要主动去找寻“本次修改影响到的点”,依赖程序员对整体业务的熟悉度、细心度
    一旦没有找全受影响点……~囧
     
    ECS将这条逻辑流拆分了
    比如战斗扣血空了,就只是血量空了,不在本处调用Death逻辑,交给“Death System”处理
    这样战斗就是一条独立完整的逻辑流了,等它完毕后,再跑“Death System”的逻辑
    新的逻辑流起始于“遍历检查空血对象”
    ……
    每条逻辑流起始,均会重新搜集所需数据,接下来只跑本逻辑相关的一小部分,“修改影响点”不仅少了,且集中了

     

  • 相关阅读:
    纯javascript遮罩层原理
    artDIalog 弹出层
    键盘对应ASCII码
    SQL Prompt 4安装步骤
    VSS2008 安装silverlight3.0步骤
    Jquery循环显示图片
    借助一般处理程序做验证码
    Socket编程原理及属性
    完整的HttpRequest讲解 createXmlHttpRequest Ajax请求
    年月日三级菜单 jquery
  • 原文地址:https://www.cnblogs.com/3workman/p/7160350.html
Copyright © 2020-2023  润新知