開發基礎:第一個擴展
- 詳細內容
- 分類:smartfoxserver
- 發佈:2014-02-04, 週二 23:02
- 點擊數:1926
» 寫出第一個擴展
在SmartFoxServer 2X中,擴展是一個基本的要素。擴展開啟了無限的可能性,讓開發者能夠建立他們的客製化的遊戲邏輯,以及整合其他支援專案的技術。以一個平行的概念來說,擴展就相等於網頁中的伺服端程式碼,也又是所有的"業務"邏輯開發的地方。
假如你對Java或是其他物件導向語言(ActionScript 3, C#, C++,等等)有中等程度的了解,寫出第一個擴展是非常簡單的。
» 使用IDE輔助開發
首先我們需要一個IDE,用來幫助我們寫出程式碼、編譯程式碼以及建立二進位套件(jar 檔案),這些程式碼會佈署在SFS2X中。
有許多我們知道的Java IDE可以取得,包含免費以及商業用途的。我們通常建議:
在這份教學中我們使用Eclipse,但是在其他IDE中建立一個新的專案的過程是很相似的,特別是當使用你最熟悉的IDE時。
» 建立一個新的專案
讓我們啟動Eclipse,並且從檔案選單中選擇New > Project... 從Java資料夾中選擇Java專案,然後按下Next按鈕。
在新的視窗中,我們給專案一個名字,譬如說 MyJavaExtension,然後繼續下一個畫面。
現在是時候加入編譯我們的擴展時所需要的程式庫(libraries)了。按下Libraries分頁標籤,然後選擇 Add External JARs...按鈕,然後瀏覽你的檔案系統到{sfs-install-dir}/SFS2X/lib/ 資料夾。
選擇兩個檔案sfs2x-core.jar以及 sfs2x.jar然後按下主要視窗中的Finish按鈕。
新的專案會出現在套件瀏覽(Package Explorer)面板中,預設情況下它會是位在你的介面的左上方的欄位。現在你可以在src資料夾上按下右鍵來建立一個新的Java類別。
接下來我們繼續進行,為類別輸入名稱,譬如說MyExtension,然後在這個例子中,套件名稱是my.test。請注意,使用Extension作為擴展名稱的後綴字是被強烈建議的。因為在AdminTool 中,這可以讓指派擴展到伺服器的區域或房間中變得容易(參閱在區域設置文件中的Zone Extension 分頁標籤或是 Room Extension 分頁標籤中的關於Type 參數的額外注意事項)。
最後我們建立我們主要的擴展類別;現在我們可以繼續加入一些非常基本的程式碼,像下面圖片顯示的。
這在篇文章中我們並不深入如何撰寫程式碼的細節。要學習伺服端編碼,可以參考涵蓋了大部分的其他的許多資源:
- Extension API 教學
- Server-side Extensions 深入文章
- Advanced Extension topics 文件
- Java server-side API 文件,特別是 SFSApi 類別,代表著與伺服器互動的進入點。
- Tris (井字)遊戲, 所有支援的平台取得,包含伺服端程式碼。
- BattleFarm 與 Space Race ActionScript 3 遊戲,包含客戶端與伺服端程式碼。
»部屬擴展
部屬需要遵循著一組簡單的規則。每個擴展都必須要放在 {sfs-install-dir}/SFS2X/extensions/ 資料夾下的一個資料夾。你選擇的資料夾名稱在你要激活擴展時,會決定在AdminTool中顯示的擴展名稱。
比如說,我們在 extensions/下建立一個名為MyFirstExtension的資料夾。在這個路徑下,我們可以部屬jar檔案,其中包含我們的伺服器程式碼類別,以及任何其他可能包含擴展中所需要的的jar檔案。
重要注意事項
主擴展的jar檔案名稱必須要以Extension作為結尾,譬如說是MyExtension.jar。這點是重要的,因為AdminTool只會顯示使用此慣例的jar檔案中的類別。更多的訊息請參考區域設置模組( Zone Configurator module)文件中的Zone Extension分頁標籤與Room Extension分頁標籤中的theUse naming convention設定的額外注意事項。
在Eclipse中編譯完的類別通常都存放在bin/資料夾中,位置就在你的專案下src/資料夾旁邊。 不過依照下面的步驟,你可以直接將編譯完的程式碼匯出的jar檔案放到SFS2X的佈署資料夾中。
在套件瀏覽(Package Explorer)中的專案資料夾上按下右鍵 ,選擇匯出(Export....)。在下一個對話框中開啟Java資料夾,並且選擇JAR檔案,然後按下下一步(Next)按鈕。在新開的視窗中按下中間的Browse...按鈕 ,然後切換到SFS2X佈署資料夾 (就像我們說的一樣),為要建立的jar檔案指定一個名稱(要記得上面提到的命名規則)。
按下下一步(Next)到下一個畫面。在這裡你可以儲存匯出設定,這樣下一次你需要重新佈署你的擴展時,只需要按下你的專案資料夾的一個檔案,就可以快速完成匯出。
開啟 Save the description... 旁邊的副選框並且按下Browse....。你將看到所有你的Java專案列表,選擇你自己的,並且為匯出設置提供一個名字;按下ok已關閉面板然後按下Finish以結束過程。
這時候,你已經將你的jar檔案佈署到SFS2X擴展資料夾中,並且儲存了匯出設定以利於未來的重新佈署。
SFS2X可以主動監控所有的擴展文件夾的變化,只要它檢測到一個更新的jar文件,它會重新啟動您的擴展。這是適用於所有區級擴展(Zone-level Extensions),但不適用於房間級擴展(Room-level Extensions 維克:官網好像少寫一個m)。
為了切換此功能,您需要啟動在AdminTool中的服務器配置,並且開啟擴展檔案監測(Extension file monitor)選項。
» 指派擴展到區域或房間中
將擴展插入區域或是房間中的最簡單的方法是透過AdminTool。啟動Zone Configurator,選擇一個區域然後進入編輯模式。你會看到區域擴展的分界標籤(Zone Extension tab),在這裡你可以設置一些參數。基本上,唯一要做的事情是選擇擴展名稱以及主擴展類別(繼承SFSExtension的類別)。
現在你可以儲存,重新開啟伺服器,然後擴展就會啟動。房間擴展也是相同的做法:在在區域設置中的房間設置面板中,選擇房間擴展分頁標籤( Room Extension tab)。
» Python 擴展
我們也要快速地提及撰寫Python腳本並且將其當成擴展來運作是可行的。雖然這並不建議使用在產品上。理由是解釋Python程式碼效率比不上純粹的Java程式碼。我們建議只使用在快速原型建立,概念的證明,測試例子等等。
建立Python擴展與我們已經描述過的幾乎相同,但還是有一些小差異。
- 你不需要Eclipse或是其他類似的IDE來撰寫程式碼。你可以直接在擴展資料夾下佈署你的Python程式碼(.py),不需要做其他事情。伺服器就會載入程式碼,在執行階段編譯並且執行程式碼。
- 你需要在AdminTool 中指定擴展類行為PYTHON來取代JAVA 然後在設置中以腳本名稱作為主類別設定。
» 下一步是什麼
Now that you have gained the basic understanding of how to create an Extension, it is time to learn more about the features offered by the server-side framework. Make sure to continue the learning process byfollowing the links we recommended in the early stages of this document.
現在你已經有基本的了解如何建立擴展,是時候學習更多由伺服端框架提供的更多的功能了。跟隨著我們在這篇文章前面所建議的連結以繼續後續的學習過程。
按個讚!~支持本站!~