上一篇,我們講解了遊戲的大概背景,知道了要做什麼内容。現在已經可以開始搭建遊戲的代碼架構。
整體架構
我們将整個項目命名為idlewow,目前包含以下幾個子產品idlewow-facade, idlewow-core, idlewow-hessianserver, idlewow-rms, idlewow-util, idlewow-game, idlewow-doc。
其中,facade子產品是jar包項目,供内部其他項目引用,主要定義模型類、接口類。core子產品是jar包項目,實作系統的主要業務邏輯以及對資料庫的通路。hessianserver子產品是war包項目,将系統的接口暴露給其他内部項目。rms子產品是war包項目,是背景營運系統或叫資源管理系統,主要給GM使用,進行配置,rms子產品本身不通路資料庫,而是通過調用hessian接口,與底層資料進行互動。game子產品是war包項目,是web形式的遊戲用戶端,部分遊戲邏輯寫在此子產品中,也通過hessian接口通路系統資料。util子產品是jar包項目,主要實作一些工具類,供其它子產品引用。doc項目可有可無,我拿來送出一些sql腳本,策劃表格等内容。整個項目的架構大緻如下圖(其中Rest子產品目前并沒有,僅占位示意):

項目架構圖
操作步驟
1.建立項目
打開Idea,左上角菜單File --> New --> Project, 選擇Maven項目,不使用模闆,GroupId、ArtifactId和Projec name都填寫idlewow即可,JDK選擇1.8。(如沒有1.8版本,可在前言章節中檢視下載下傳位址)
建立項目
建立完畢後,因為是maven項目,IDE檢測到pom.xml會在右下角彈出提示,如下圖,選擇”Enable Auto-Import",開啟自動包下載下傳,後面修改pom.xml後,按Ctrl+S儲存即可自動更新包。
maven提示框
2.添加子產品
idlewow作為根目錄下面不需要寫代碼,src檔案夾可以删掉。右鍵根目錄,選擇 New --> Module 來添加子產品。同樣選擇maven項目,不使用模闆。因為是一個子產品,GroupId預設為idlewow,以core項目為例,ArtifactId填寫 idlewow-core。點選下一步,填寫 module name 時,會預設沒有中劃線,需要手動加上,然後點選完成即可。
然後依次建立各個子產品。完成後如下圖:
各項目子產品
3.添加依賴關系
maven項目通過pom.xml管理依賴,類似于C#裡添加DLL引用,這裡根目錄下的pom.xml暫時無需改動。
首先,在各個子產品的pom裡,artifactId節點後面添加 packaging 節點,如<packaging>war</packaging>,是war包項目的填寫war,jar包項目填寫jar。
在core子產品中,添加依賴如下:
1 <dependencies>
2 <dependency>
3 <groupId>idlewow</groupId>
4 <artifactId>idlewow-facade</artifactId>
5 <version>1.0-SNAPSHOT</version>
6 </dependency>
7 <dependency>
8 <groupId>idlewow</groupId>
9 <artifactId>idlewow-util</artifactId>
10 <version>1.0-SNAPSHOT</version>
11 </dependency>
12 </dependencies>
pom.xml
在hessian子產品中,添加依賴如下:
1 <dependencies>
2 <dependency>
3 <groupId>idlewow</groupId>
4 <artifactId>idlewow-core</artifactId>
5 <version>1.0-SNAPSHOT</version>
6 </dependency>
7 <dependency>
8 <groupId>idlewow</groupId>
9 <artifactId>idlewow-facade</artifactId>
10 <version>1.0-SNAPSHOT</version>
11 </dependency>
12 </dependencies>
pom.xml
在rms子產品中,添加依賴如下:
1 <dependencies>
2 <dependency>
3 <groupId>idlewow</groupId>
4 <artifactId>idlewow-facade</artifactId>
5 <version>1.0-SNAPSHOT</version>
6 </dependency>
7 <dependency>
8 <groupId>idlewow</groupId>
9 <artifactId>idlewow-core</artifactId>
10 <version>1.0-SNAPSHOT</version>
11 </dependency>
12 </dependencies>
pom.xml
注意:前面的架構圖中,rms通過hessian接口通路資料層,此處應不必添加對core的依賴。但為了開發和部署友善,實際開發時,我在rms子產品直接引用core層通路資料。
在game子產品中,添加依賴如下:
1 <dependencies>
2 <dependency>
3 <groupId>idlewow</groupId>
4 <artifactId>idlewow-facade</artifactId>
5 <version>1.0-SNAPSHOT</version>
6 </dependency>
7 </dependencies>
pom.xml
其他子產品目前無需添加依賴。
4.構造web目錄
因為有3個子產品需要打成war包,是以必須先構造web項目的目錄結構,否則打包指令無法成功執行。
在 game, hessian, rms 子產品的src目錄下分别建立 webapp/WEB-INF 檔案夾,并在該目錄下添加web.xml(空檔案即可)。完成後目錄結構如下圖:
檔案結構
另外,因為不做單元測試,所有src目錄下的test檔案夾均可删除。
5.編譯打包
在左上角菜單選擇 ” Run --> Edit Configurations "(快捷按鈕裡直接點也可以),點選左上角綠色的加号,選擇Maven(代表使用maven指令或插件來編譯、打包、啟動項目)。然後填寫名稱 "idlewow打包",選擇根目錄,填寫執行指令"clean install",
其中,clean表示清空之前的編譯目錄,install表示把項目編譯,打包,并更新到本地maven倉庫。
其實編譯指令是compile,打包指令package,maven指令有一個優先級,執行install時,會自動執行compile, package等等。
如下圖:
點選OK後,我們執行一遍。結果如下圖,各子產品均編譯打包成功。
結語
本章簡要搭建整個系統的架構,構造了各子產品的檔案結構,并成功編譯打包。
源碼下載下傳位址:https://idlestudio.ctfile.com/fs/14960372-383321231
本文原文位址:https://www.cnblogs.com/lyosaki88/p/idlewow_2.html
後面将開始對各子產品的内部架構進行搭建。