Java 2D 游戏引擎开发(一)

来源:互联网 发布:django网站开发源码 编辑:程序博客网 时间:2024/05/16 12:25

以前就想用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:
想有中文版教材/原版引擎/实例游戏的码友可以在回复里留下邮箱和需要的资源。

教材封面
封面