軟程式碼

軟程式碼是一種簡單的程式語言,專為 TinyMUD 衍生性商品(例如 MUX、PennMUSH、TinyMUSH 和 RhostMUSH)的遊戲內開發而建立。我們的想法是,透過提供一種精簡、簡約的語言供遊戲內使用,您可以快速輕鬆地進行構建和遊戲開發,而構建者無需學習這些伺服器的「硬程式碼」語言(C/C++)。還有一個額外的好處是不必向所有開發人員授予 shell 存取許可權。軟程式碼中的許可權可用於緩解許多安全性問題。

編寫和安裝軟程式碼是透過 MUD 用戶端完成的。因此它不是一種格式化語言。每個軟程式碼函式都是不同大小的一行。有些函式可能有半頁長或更長,這顯然不是很容易閱讀,也隨著時間的推移(容易)維護。

軟程式碼範例

這是一個簡單的「Hello World!」指令:

    @set me=HELLO_WORLD.C:$hello:@pemit %#=Hello World!

將其貼到 MUD 用戶端,將其傳送到 MUX/MUSH 伺服器並輸入「hello」理論上會產生「Hello World!」(假設您的帳戶物件上未設定某些標誌)。

在 Softcode 中設定屬性是透過 @set 完成的。軟程式碼也允許使用 & 符號 (&)。這個較短的版本如下所示:

    &HELLO_WORLD.C me=$hello:@pemit %#=Hello World!

我們也可以從發出時檢索的 attribute 讀取文字:

    &HELLO_VALUE.D me=Hello World
    &HELLO_WORLD.C me=$hello:@pemit %#=[v(HELLO_VALUE.D)]

v() 函式傳回指令所在物件的 HELLO_VALUE.D attribute(me,在本例中是您自己)。這應該會產生與第一個範例相同的輸出。

如果您對 MUSH/MUX Softcode 的工作原理感到好奇,請檢視一些外部資源:

軟程式碼問題

軟程式碼非常適合它的用途:簡單的事情。它是製作互動式物件、具有氛圍的房間、簡單的全域性指令、簡單的經濟和編碼系統的絕佳工具。 然而,一旦您開始嘗試編寫複雜的戰鬥系統或高階經濟之類的東西,您可能會發現自己被埋在橫跨整個程式碼中的多個物件的函式山下。

更不用說,軟程式碼本質上並不是一種快速語言。它不會被編譯,而是在每次呼叫函式時進行解析。雖然 MUX 和 MUSH 解析器比以前進步了好幾光年,但如果設計不當,它們仍然會在更複雜的系統的重壓下出現問題。

此外,軟程式碼不是標準化語言。不同的伺服器都有自己的細微差別。程式碼工具和資源也僅限於這些伺服器的文件。

時代變遷

現在開始基於文字的遊戲很容易,即使是技術最不懂的人也可以選擇,新專案比比皆是。人們每天都以不同程度的承諾和能力開始新的MUDs。由於從數量較少、規模較大、人員配備齊全的遊戲向一堆小型、一兩個開發者遊戲的轉變,軟程式碼的優勢逐漸消失。

軟程式碼的偉大之處在於,它允許大中型員工在同一個遊戲上工作,而無需在沒有 shell 訪問許可權的情況下互相打擾。然而,現代程式碼協作工具(例如私人 github/gitlab 儲存庫)的興起使得程式碼協作變得微不足道。

我們的解決方案

Evennia 避開磁碟上 Python 模組的遊戲內軟程式碼。 Python是一種流行、成熟、專業的程式語言。 Evennia 開發人員可以直接存取整個 Python 模組庫 - 更不用說大量可用的線上說明資源了。 Python 程式碼不會繫結到物件上的單行函式;複雜的系統可以整齊地組織成真正的原始程式碼模組、子模組,甚至根據需要分解成整個Python套件。

因此,Evennia 中包含的是 MUX/MOO- 之類的線上玩家編碼系統(又稱軟程式碼)。 Evennia 中的高階編碼主要是在遊戲之外、在成熟的 Python 模組中完成的(MUSH 稱為「硬編碼」)。高階建置最好透過使用您自己的複雜建置指令擴充套件 Evennia 的指令系統來處理。

在 Evennia 中,您可以像開發任何現代軟體一樣開發您的 MU - 使用您最喜歡的程式碼編輯器/IDE 和線上程式碼共享工具。

您的解決方案

為您的遊戲新增高階且靈活的構建指令非常簡單,並且可能足以滿足大多數創意構建者的需求。然而,如果您真的、真的想要提供線上編碼,當然沒有什麼可以阻止您將其新增到 Evennia 中,無論我們的建議如何。如果您雄心勃勃,甚至可以在 Python 中重新實現 MUX’ 軟程式碼。

在預設的 Evennia 中,Funcparser 系統允許根據需要簡單地重新對映文​​件,而無需成為完整的軟程式碼語言。在新增更複雜的遊戲內建置時,contribs 有多種工具和實用程式可供使用。