6. Evennia 庫概述¶
有幾種探索 Evennia 庫的好方法。
本文件包含從來源自動產生的 Evennia-API 檔案。嘗試點選一些條目 - 一旦您足夠深入,您將看到每個元件的完整描述及其檔案。您也可以點選
[source]檢視每個事物的完整 Python 原始碼。如果您需要更詳細的解釋,每個元件都有單獨的檔案頁。
您可以瀏覽github上的evennia儲存庫。這正是您可以從我們這裡下載的內容。
最後,您可以將 evennia 儲存庫克隆到您自己的電腦並閱讀原始程式碼。如果您想真正瞭解正在發生的事情,或幫助 Evennia 的開發,這是必要的。如果您想執行此操作,請參閱擴充安裝說明。
6.1. 它在哪裡?¶
如果安裝了Evennia,您可以簡單地從它匯入
import evennia
from evennia import some_module
from evennia.some_module.other_module import SomeClass
等等。
如果您使用 pip install 安裝了 Evennia,則庫資料夾將安裝在 Python 安裝的深處;你最好在 github 上檢視。如果您克隆了它,您應該有一個 evennia 資料夾可供檢視。
您會發現這是最外層的結構:
evennia/
bin/
CHANGELOG.md
...
...
docs/
evennia/
此外層用於Evennia的安裝和軟體包分發。該內部資料夾 evennia/evennia/ 是 actual 程式庫,API 自動檔案涵蓋的內容以及執行 import evennia 時獲得的內容。
evennia/docs/資料夾包含本文件的原始碼。看 如果您想了解有關其工作原理的更多資訊,請為檔案做出貢獻。
這是Evennia庫的結構:
evennia
__init__.py- Evennia 的「平坦 API」位於此處。settings_default.py- Evennia 的根設定。將設定從此處複製到mygame/server/settings.py檔案。commands/- 指令解析器和處理程式。default/- 預設指令 和 cmdsets。
comms/- 用於遊戲內通訊的系統。contrib/- 可選外掛程式對於核心 Evennia 來說太特定於遊戲。game_template/- 使用evennia --init時複製成為「遊戲目錄」。help/- 處理說明條目的儲存和建立。locale/- 語言檔案 (i18n)。locks/- Lock 用於限制對遊戲內實體的存取的系統。objects/- 遊戲內實體(所有型別的物品和角色)。prototypes/- 物件原型/生成系統和 OLC 選單accounts/- 遊戲外 Session 控制的實體(帳戶、機器人等)scripts/- 遊戲外實體等同於物件,也具有計時器支援。server/- 核心伺服器程式碼和 Session 處理。portal/- Portal 代理程式和連線協定。
typeclasses/- typeclass 儲存和資料庫系統的抽象類別。utils/- 各種有用的編碼資源。web/- Web 資源和 webserver。初始化時部分複製到遊戲目錄。
雖然所有實際的 Evennia 程式碼都可以在各個資料夾中找到,但 __init__.py 代表整個套件 evennia。它包含實際位於其他地方的程式碼的“快捷方式”。如果您在 Evennia-API 頁面上向下滾動一點,則會列出大多數快捷方式。
6.2. 探索圖書館的例子¶
在上一課中,我們簡要介紹了 mygame/typeclasses/objects 作為 Python 模組的範例。讓我們再次開啟它。
"""
module docstring
"""
from evennia import DefaultObject
class Object(DefaultObject):
"""
class docstring
"""
pass
我們有 Object 類,它繼承自 DefaultObject。模組頂部附近是這一行:
from evennia import DefaultObject
我們想弄清楚這個 DefaultObject 到底能提供什麼。由於這是直接從 evennia 匯入的,因此我們實際上是從 evennia/__init__.py 匯入的。
檢視 evennia/__init__.py 的第 160 行,你會發現這一行:
from .objects.objects import DefaultObject
您也可以檢視API 首頁的右側部分,然後按一下檢視程式碼。
由於 DefaultObject 在這裡被匯入到 __init__.py 中,因此即使該類別的程式碼實際上並不在這裡,也可以將其匯入為 from evennia import DefaultObject 。
因此,要查詢 DefaultObject 的程式碼,我們需要檢視 evennia/objects/objects.py。以下是在檔案中尋找它的方法:
開啟API首頁
找到 evennia.objects.objects 的連結並點選它。
您現在位於 python 模組中。向下捲動(或在網頁瀏覽器中搜尋)找到
DefaultObject類。現在您可以閱讀它的作用以及它的方法。如果您想檢視完整的原始程式碼,請點選旁邊的[原始程式碼]連結。
6.3. 結論¶
這是一個重要的教訓。它教您如何為自己找到資訊。瞭解如何遵循類別繼承樹並導航到您需要的內容是學習像 Evennia 這樣的新程式庫的一個重要部分。
接下來,我們將開始利用迄今為止所學到的知識,並將其與 Evennia 提供的構建塊結合。