1. 程式人生 > >Java 2D 遊戲引擎開發(一)

Java 2D 遊戲引擎開發(一)

以前就想用java做桌面端遊戲,基於awt和swing,這樣可以在輕易的跨平臺執行,同時還比Python,Javascript之類的高效。不過很可惜,一直沒有找到一個合適的java寫的2d遊戲引擎。前幾天偶然發現了一本書,科學出版社出版的《Java遊戲程式設計》,譯自David Brackeen的同名作品。這本書較為細緻地從awt動畫講起,一直講到用java寫3d引擎。掃完一眼書後,十分激動之餘,不由得想自己寫一個基於書上的簡易2d引擎的擴充套件版本。

因為這個引擎是遵循BSD的,所以我直接將它移到了我的專案裡進行改造。原版引擎主要是用於製作瓦片遊戲(TileGame),包含以下幾個版塊:

  1. graphics -- 包括簡易的動畫,精靈和螢幕管理器
  2. input -- 包括輸入管理器和遊戲中的動作事件
  3. sound -- 這塊就複雜多了,包括了Midi播放器,聲音管理器和各種過濾器,實現了立體的聲音效果
  4. test -- 包括一個遊戲迴圈的原型
  5. tilegame -- 包括一個遊戲管理器(繼承自test裡的遊戲原型),資源管理器,瓦片地圖,瓦片地圖渲染器以及一些例項的精靈
  6. util -- 包括一個特殊的輸入流和一個自制的執行緒池
這個引擎很明顯都不能製作稍微複雜一點的遊戲(雖然有著十分完備的聲音系統),同時也缺乏UI控制元件的支援。那麼我準備改進以下方面
  1. 重構包架構,比如將test裡的遊戲原型規範後建立一個新板塊,作為一個通用抽象父類使用
  2. 新建一個背景版塊,將瓦片地圖和其渲染器移到這個版塊裡,同時增加一個卷軸式的有深度的背景圖和其渲染器
  3. 將遊戲場景顯示的所有物件都抽象出一個父類和對應介面,包括攝像機物件,簡易的UI控制元件,以便實現更復雜的畫面
目前就先準備實現這麼多,畢竟手頭還有三個專案在趕,留給完成這個引擎的時間也不多,計劃儘量在元旦前將這幾塊構造好。 PS: 想有中文版教材/原版引擎/例項遊戲的碼友可以在回覆裡留下郵箱和需要的資源。 教材封面 封面