Skip to content

RUNUO服务器分析心得 第零章——序章

RUNUO服务器分析心得 第零章——序章 published on RUNUO服务器分析心得 第零章——序章有79条评论

UO-SA_ankh_standard        已经很久没上ICQ了,今天忽然兴起,挂上ICQ(免费那种)。觉得不过瘾,索性QQ,MSN Messager能开的都开了。刚开完MSN Messager,一则消息从ICQ上传来:

        James:Hello,我是James,最近过的好么?很久没看见你了。
(本来是E文的为了大家看着方便,写着也方便就干脆用中文直接写出来了,一直有个感觉,老外问候不太像我们。我们一般是HI过来,然后HI回去,他们一般不,也许关系还没到位吧。一番问候之后,开始入正题了。)

        James:Richard,你最近忙什么,还在碰UO么?我最近在玩RUNUO,挺不错的,你没有么?
(其实不是玩的意思,应该是研究的意思)

        我想:UO?晕哦,大概3、4年没碰了。亏你精神那么好~~~,老外给我一个感觉就是执着。做什么事都不轻易就放弃。     
   
        我:很长时间没有了。怎么样,UO服务端技术还是那样么?

        James:不是了,以前UOX占主导地位,现在基本都少了,很多都在玩RUNUO了。
(以前国内用TUS系列后来叫SPHERE比较多,国外不一样,因为国外都是自己弄来研究,不是用来开站,所以多数在研究开源的UOX)

        我:是吗?那RUNUO怎么样?开源么?性能怎么样?

        James:不,不开源。性能不错,超过UOX系列。
(在国外因为UOX开源,所以除了很多私人版本,而且UOX的性能确实低,下一个源码下来看看就知道了,用ROSE反向工程后,看那乱七八糟的类关系、重定义类型就头大)。 

        我:没源码不太好研究啊,什么写的呢?脚本引擎是自己做的么?还是和UOX一样?
(UOX的脚本引擎是用的JavaScript的,TUS和SPHERE的是自主开发的)

        James:不开源,但是它的脚本很有特色,用的.NET Framework,其实可以说没有用脚本引擎。脚本大多数是C#写的,估计执行程序也是C#开发的。

        我:什么意思?没有引擎,那怎么扩展呢?

        James:说不清楚,你知道.NET吗?

        我想:不至于这么看不起我吧~~~~

        我:知道,以前出来的时候玩过一段时间。是一个平台。开发语言很多,它采用的技术是类似JAVA的中间语言,是语言无关性的,对吧?

        James:你还知道挺多的啊。

        我想:靠~~~分明是洗我嘛。

        James:那你应该知到C#本来就是一种解释性的语言吧。

        我:其实不全是,可以说类似,但运行时它是经过JIT编译的,不能和解释性语言比,它效率要比那种解释性语言高得多。

        James:对,我的意思是类似解释性语言。所以,RUNUO就借助了这个特点,它的脚本也就是C#或VB.NET这种高级语言编写的,所以在运行前就编译过,运行起来效率就以前那些要好了。

        我:哦,这样啊,这到蛮有意思的,可以学习学习。

        James:是啊,我最近在玩,你不妨也去弄个来玩吧。它的接口设计挺好的,以后说不定还可以参考。

        我:嗯,好的。谢谢你告诉我,我去下个试试。那下次再聊,Bye-Bye。

        20分钟后,终于下下来了。安装后,看了一下,真的不的了。这种方法就和我当年想的一样。当年是用C++做的服务端,然后里面留出接口。需要扩展的时候,以插件的形式添加,即可以提高效率又可以防止被盗窃源码。以插件方式添加我觉得有两个好处:

       1、是编译过的,要反编译到原样是不可能的,因为以前在国内开文艺复兴站的时候,因为服务器安全问题,代码被偷过很多次。
       2、既然是编译过的,那就是二进制的,比解释的来得块得多。如果有什么问题,直接替换就可以了,不需要服务器重新加载一次。

        RUNUO居然把我当年想过未曾实现的和未曾想过的都实现了,刚开始我还是不太懂,它是如何在运行前把这一系列的.CS文件编译成Assembly的。我以为因为每台运行RUNUO的机器上都必须装.NET的运行环境,那么就一定有CSC这种东西,莫非从外部调用的???嗯,一定是,我心理这么想。(其实后来我才知道我错了,它用了一种比这个高级得多得方式,在后面的章节我们通过它的IL代码也就是反编译出来的中间代码来分析讨论这个问题

        这时jwh51上来了。

         
我:HI,51大哥。

         jwh51:好啊,最近好么。

         我:还行,很久没看到您啦。最近还在搞破解么?

         jwh51:没有了,没有时间。

         我:哦,最近我准备搞一个网络游戏,到时候客户端和协议加密部分需要您得帮助啊。

         jwh51:没问题,我一直在帮朋友做加密方面得工作。

         我:那先谢谢您了。我还有点事先下了。886

         jwh51:88

        接着我开始考虑刚才的问题,RUNUO怎么实现的利用C#做它的脚本语言的技术。通过反编译,然后又用IL码编译还原,看看中途有没有什么字节损失。还好,完全一模一样,可以开工了…………

原创文章,转载请注明: 转载自游戏无界·达秀的黑暗空间

本文链接地址: RUNUO服务器分析心得 第零章——序章

本站作品除特殊申明外均为原创,采用知识共享署名-非商业性使用-禁止演绎 3.0 Unported许可协议进行许可。如果需转载请保持文章完整性和标明原文出处,禁止商业用途。

  1. Pingback: Chester

  2. Pingback: Perry

  3. Pingback: Enrique

  4. Pingback: Lewis

  5. Pingback: isaac

  6. Pingback: victor

  7. Pingback: Hubert

  8. Pingback: Brandon

  9. Pingback: William