zoukankan      html  css  js  c++  java
  • LPC及MudOS简介(一)

    天下盛境这个项目让我萌生退意了,拖延了一个多月,没想到公司居然先解散了。接着是面试,入职新公司,回头看来,还是感慨人算不如天算阿。

    新公司也是游戏行业的,初看了下项目的架构,与以前的有较大差别,是一套脱胎于MudOS的异步IO、多进程的游戏架构。于是最近在研究Mudos的相关知识。刚刚入门,挑了最简单的Lil Mudlib进行学习,Mudos的版本为v22.2b14,既能够成功跑起来接受玩家的链接,又不会有复杂的功能阻碍理解,正好动手边改边学。

    LPC是一门专门为Mudos而设的脚本语言,类c语法,而且后缀名均为c(这点比较让我困惑,搞不清什么是c什么是LPC)。已经习惯了Python的我不太适应变量声明,幸好最近用go做了点小东西,不至于对类型系统太生疏。这门脚本语言主要是用来写逻辑的,所以很多接口都是基于底层用c写就的mudos接口。基本的hash表,字符串处理等都有了,可惜提供的库实在太少,不利于基于这门语言自身去了解它。比如说,python里用globals()和locals()就可以查看当前的变量空间,有比较丰富的反射机制。而LPC不是没有,而是没有直接提供出来供调用,它是利用mudos做解释器的,类似的反射功能都需要调用mudos来完成。进一步来说,LPC是用来定义和管理对象的,而这些对象的相互作用最终还是要通过mudos来完成。

    LPC的OO跟go语言有点相似,就是函数和变量组成。函数就是可以用名字来引用的一组指令,而变量则是供函数使用的储存信息用的容器,一个lpc文件对应的就是一个类的定义(这点非常喜欢)。它的类型系统还提供了一个特殊类型mixed,类似于go语言的万能接口,可以存放任意类型的变量,同时可以在后期查到该变量的真正类型。

    LPC的虚拟机,即Mudos,还提供了一个有用的功能,任何对象的执行都会被进行统计,同一调用链中,若某对象用完了所分配的时间线,就会被强制停止。这个功能有点类似python的gil,任何线程都不能长期占用gil,即使只有单线程,还是有gil的获取和释放过程。

  • 相关阅读:
    淘宝质量属性场景分析
    关于软件架构师如何工作(阅读架构漫谈感悟)
    06有效需求设计阅读笔记之六
    05有效需求设计阅读笔记之五
    xxx征集系统项目目标文档
    04有效需求设计阅读笔记之四
    03有效需求设计阅读笔记之三
    02有效需求设计阅读笔记之二
    01有效需求设计阅读笔记之一
    问题账户需求分析
  • 原文地址:https://www.cnblogs.com/Lifehacker/p/lpc_and_mudos_part1.html
Copyright © 2011-2022 走看看