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的獲取和釋放過程。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM