跳转至内容
  • 欢迎
  • 版块
  • 最新
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
品牌标识

Hellclient 社区

  1. 主页
  2. Script脚本
  3. 深入浅出制作全自动Mud机器人-数模转换

深入浅出制作全自动Mud机器人-数模转换

已定时 已固定 已锁定 已移动 Script脚本
mud机器人全自动架构
1 帖子 1 发布者 16 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • jarlyynJ 离线
    jarlyynJ 离线
    jarlyyn
    编写于 最后由 jarlyyn 编辑
    #1

    数模转换其实是一个很古早的概念了。

    就是将原始的模拟信号,转换成数字信号,然后数字化的系统才能根据数字信号进行操作。

    首先,从严格意义上说,服务器返回的文字信息本质是ansi控制文本,是一种带显示控制的控制,目的是进行一种美观的带格式的外观描述,这的确是一种 数字化程度很高的 模拟信号。

    其次,对于实际的复杂业务来说,把数据抽象成业务数据,将代码隔离为业务层和交互层也是很通用的一种处理技巧,在实际需求上,的确有分割交互层(模拟信号)和业务层(数字信号)的意义。

    所以,进行数模转换是一种我很推荐的架构形式。

    数据标准化

    数模转换而第一步是信息标准化。

    也就是,将所有的信号,转为一种有约定格式和共性的基础信号。

    很多时候,处理程序还需要对信号做一个2次处理,抽取和判断后生成原生信号的衍生信号。

    在这个背景下,处理业务数据的代码才能做到信号形式的无关性。

    具体到代码的例子。我在newhelljs里引入了

                App.LineEvent = function (name) {
                    return App.Engine.LineEvent(name)
                }
                App.FilterLineEvent = function (filtername, eventname) {
                    return App.Engine.FilterLineEvent(filtername, eventname)
                }
    

    两个方法。

    • App.LineEvent是直接将一个mud行的出发,抛出为一个制定name的event
    • App.FilterLineEvent是定义一个处理器,在处理器里做预处理和判断,然后确定没问题的话再以eventname抛出事件

    App.FilterLineEvent的应用范例:

        //处理房间名
        App.Engine.SetFilter("core.normalroomname", function (event) {
            let words = App.History.CurrentOutput.Words
            if (words.length == 1 && words[0].Color != "" && words[0].Bold == true) {
                App.RaiseEvent(event)
            }
        })
    

    接到可能是房间名的信号后,判断是否符合条件,符合条件再抛出事件。

    信号数据采样

    在mud中,除了根据行进行分析的时间外,还有很多直接的数据信号取的护理。比如hp,score,skills,i等指令。

    这时候需要将传输来的模拟信号(一般是固定格式的表格列表)转换为合适的数据模型,再加以保存。

    对于能够主动触发的数据,也要做好缓存的处理。

    工作重点

    对于根据数模转换对代码进行分层,我们要明白主要的工作重点,这样能更好的根据实际情况进行合理规划。

    我们的数模转换的核心目的是

    • 让代码更清晰,易于维护,代码出现问题时能快速定位到相应模块
    • 将业务与实际表现剥离,这样在Mud进行更新/更改界面时,不会需要对业务层进行调整。比较表现层比业务层测试快的多。
    1 条回复 最后回复
    • jarlyynJ jarlyyn 被引用 于这个主题
    回复
    • 在新帖中回复
    登录后回复
    • 从旧到新
    • 从新到旧
    • 最多赞同


    • 登录

    • 没有帐号? 注册

    • 登录或注册以进行搜索。
    Powered by Herbrhythm.
    • 第一个帖子
      最后一个帖子
    0
    • 欢迎
    • 版块
    • 最新
    • 标签
    • 热门
    • 用户
    • 群组