Nebula3中的Message

最近心情不好, 一直没学习-_-

今天是近期最后一个双休, 玩够了就看看代码吧

本来是计划看模型部分的, 无奈现阶段N3中的模型还是用的N2的, 作者又说N3的新版本近期内会出来, 所以先放一放, 新的版本很可能包含N3的模型/动画部分, 到时再看也不迟

Message嘛, 我觉得是整个N3中最为核心的部分, 虽然没几个类, 但可以是说整个N3的精华所在. 为什么这么说呢? 看看它有多少多少类从Port派生的(这图不全):

可以说, 每个部分都与它息息相关.

那, Port是什么? 看下图:

Message比较好理解, 它就是一个事件, 或是一个操作. 其实就是设计模式中的Command模型, 但N3中的Command成了脚本库和数据库的指令了, 所以只好改叫Message(xoyojank: 我瞎猜的).

 有Message必须有Handler来进行处理, 那Port就好说了, 它就是Message的接收器, 包含了一堆的Handler来处理消息. 有一个异步的Port实现叫AsyncPort, 它是所有Fat线程子系统接口(XXXInterface)的基类, 有自己的线程而已. 功能上来说, 跟Port一样的.

还有个Dispatcher. 其实它也是一个Port, 但是包含了许多个别的Port. 存在的意义在于把复杂的消息处理机制隐藏掉, 给外界留一个简单的外表. 这个在逻辑部分(即N3的Application层)用的比较多, 能把逻辑部分抽像成这样的游戏我还真没怎么见过. (题外话: 我觉得这也是N3跟OGRE之流差别最大的一个地方: 它是一个游戏引擎, 不仅仅是图形引擎)

还有一点值得注意, 那就是Message预留了二进制序列化的接口, 这意味着可以把消息写入流进行转输. Sep2008版本中加入的Remote子系统就是它的应用, 可以远程操控应用程序, 很酷的一个特性.

其实, 我感觉N3中所有的模块都是基于一个思想, 那就是任何的操作, 都有一些相关的消息, 和对应的处理者来执行. 可能有人会觉得这样不如直接编码一个函数调用来得简单, 但是扩展性和可复用性大大地增强了. 无论对于脚本化还是多线程化来说, 这都是非常方便的.

期待N3未来的表现, 因为它不输于任何一个商业引擎! 商业引擎强大在配套的工具上, 但是架构上跟N3相比, 还是有些差距的(至少UE3和GB个人认为不如它)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Kirito的技术分享

一个DDD指导下的实体类设计案例

终于开通原创功能了,大家以后可以在文章下方留言了,欢迎交流。 1 前言 项目开发中的工具类代码总是随着项目发展逐渐变大,在公司诸多的公用代码中,笔者发现了一个...

3577
来自专栏CSDN技术头条

架构之路(六):把框架拉出来

【编者按】本文作者自由飞,具有 传奇般的人生经历: 98年读大学-国际贸易专业 03年11月英语培训机构当英语老师 04年2月-05年6月律师...

1779
来自专栏理论坞

中字·C4D官方出品快速入门系列教程(1-17期)

本系列视频是由青之巅字幕组木木翻译的一套官方系列视频,主要是通过每一期介绍C4D的基本功能。本系列视频非攻略向,主要是为大家对Cinema 4D这一款软件有一个...

933
来自专栏架构师之旅

3个面试中遇到的问题《JAVA面试题》

面试官:“一个http 请求,接受json数组,数组内容是id,返回用户信息,在测试上是ok的,到预生产就报错了,可能是什么问题?” 我想了想说:“代码一致吗?...

3625
来自专栏一个会写诗的程序员的博客

函数式编程与面向对象编程[5]:编程的本质函数式编程与面向对象编程[5]:编程的本质编程的本质

函数式程序员在洞察问题方面会遵循一个奇特的路线。他们首先会问一些似有禅机的问题。例如,在设计一个交互式程序时,他们会问:什么是交互?在实现 基于元胞自动机的生命...

732
来自专栏温安适的blog

3个面试中遇到的问题

6月是个忙碌的月份,结完婚,处理完家事,也换了份工作。以至于6月都没有写blog,今天闲来无事,将之前面试的问题,以及一些感悟分享给大家。

1583
来自专栏恰同学骚年

操作系统核心原理-1.操作系统导论

PS:操作系统原理是大学计算机专业最为重要的一门专业基础课程之一,对于操作系统核心原理的理解对于一个合格的程序员来说十分重要,于是我继续我的“三大原理,两个协议...

922
来自专栏csxiaoyao

USTC高级软件工程课程学习心得

35910
来自专栏即时通讯技术

移动端IM开发者必读(二):史上最全移动弱网络优化方法总结

本系列文章引用了腾讯技术专家樊华恒《海量之道系列文章之弱联网优化 gad.qq.com/article/detail/29546》的章节,感谢原作者。

1033
来自专栏养码场

一位资深Java的阿里系公司实战面试经验,套路还是面试官的多

占小狼:一位奋斗在魔都的资深Java开发。去年6月在简书上发第一篇技术文章,已坚持发表76篇技术文章,粉丝数突破4000。

1727

扫码关注云+社区