• 由引擎接口自顶向下的设计引擎结构


    从我的理解,一款引擎从功能上划分大致分为:基础系统,资源管理,io管理,内存管理,场景管理,材质管理,GUI,物理系统,渲染器,脚本接口层等,当我尝试将这些系统一个个的拼凑起来的时候,发现接口设计很费劲,就算把各个子系统之间的关系用图表示出来,也经常出现这样设计出来的接口却不是希望要的接口。

    “自顶向下”的设计在这里就显得很对症,引擎的实际用户实际上是脚本程序员,因此根据用户的需要定制接口是个好方法。

    比如:一个最简单的脚本demo是这样的:

    1 --创建一个角色
    2 player = CPlayer:new()
    3 player:Load("aaaa.player")
    4
    5 --创建一把武器
    6 weapon = CWeapon:new()
    7 weapon:Load("aaaa.weapon")
    8
    9 --创建一个特效
    10 effect = CEffect:new()
    11 effect:Load("aaaa.effect")
    12
    13 --特效设置给武器
    14 weapon:AddChild(effect)
    15
    16 --武器加到角色上
    17 player:AddChild(weapon)
    18
    19 --创建一个场景
    20 scene = sceneMgr:CreateScene("aaa.scene")
    21 --角色加到场景中
    22 scene:AddChild(player)
    23
    24 --角色跑路
    25 player:Move(scrPoint, dstPoint, speed)

    这里的CPlayer、CEffect、CWeapon之类的不一定是引擎导出类,也可以使脚本封装的。从这样一个脚本实例来看,就希望引擎的场景管理的节点树结构大致是个什么模样,也可以决定资源加载接口的大致模样。

    以此类推,也可以先写一些脚本实例来推广到其他各个子系统,以此来制定各个子系统的对外接口。引擎对外的脚本接口确定之后,再依据各子系统之间的关系,确定各子系统的内部关联接口。

  • 相关阅读:
    BP反向传播
    神经网络基本概念理解
    梯度下降算法理解(梯度的含义)
    ResNet
    残差是什么?拟合是什么?
    Perceptual Losses for Real-Time Style Transfer and Super-Resolution 论文理解
    java动手动脑之多态
    java 动手动脑之父子继承
    java动手动脑
    java验证课上代码
  • 原文地址:https://www.cnblogs.com/konlil/p/2011224.html
Copyright © 2020-2023  润新知