Java 2D 遊戲引擎開發(一)
阿新 • • 發佈:2019-02-10
以前就想用java做桌面端遊戲,基於awt和swing,這樣可以在輕易的跨平臺執行,同時還比Python,Javascript之類的高效。不過很可惜,一直沒有找到一個合適的java寫的2d遊戲引擎。前幾天偶然發現了一本書,科學出版社出版的《Java遊戲程式設計》,譯自David Brackeen的同名作品。這本書較為細緻地從awt動畫講起,一直講到用java寫3d引擎。掃完一眼書後,十分激動之餘,不由得想自己寫一個基於書上的簡易2d引擎的擴充套件版本。
因為這個引擎是遵循BSD的,所以我直接將它移到了我的專案裡進行改造。原版引擎主要是用於製作瓦片遊戲(TileGame),包含以下幾個版塊:
- graphics -- 包括簡易的動畫,精靈和螢幕管理器
- input -- 包括輸入管理器和遊戲中的動作事件
- sound -- 這塊就複雜多了,包括了Midi播放器,聲音管理器和各種過濾器,實現了立體的聲音效果
- test -- 包括一個遊戲迴圈的原型
- tilegame -- 包括一個遊戲管理器(繼承自test裡的遊戲原型),資源管理器,瓦片地圖,瓦片地圖渲染器以及一些例項的精靈
- util -- 包括一個特殊的輸入流和一個自制的執行緒池
- 重構包架構,比如將test裡的遊戲原型規範後建立一個新板塊,作為一個通用抽象父類使用
- 新建一個背景版塊,將瓦片地圖和其渲染器移到這個版塊裡,同時增加一個卷軸式的有深度的背景圖和其渲染器
- 將遊戲場景顯示的所有物件都抽象出一個父類和對應介面,包括攝像機物件,簡易的UI控制元件,以便實現更復雜的畫面