自己抽空编写的一个2D游戏框架(也可以说是工具类集吧),在此记录一下,开发完了顺便写了一个案例判断框架的可用性
项目地址:https://gitee.com/shaokang123/spring-game-starter

框架特点

支持直接使用Tiled设计地图,以name为beanName进行加载,自定义属性最终以解析为Map注入

支持动画遮罩,中心点可视化编辑,图片合并,最终使用动画名加载动画

使用该框架开发的超级玛丽项目

素材处理连带开发1天半,开发中确实遇到了不少问题,需要对框架代码进行修改,否则应该可以更快

全部代码,基本全是各个组件没有框架代码
效果演示

超级马里奥演示

B站视频链接: https://www.bilibili.com/video/BV1kZ4y1o7St
项目路径:https://gitee.com/shaokang123/spring-game-super-mario

使用该项目开发的世界和平版魂斗罗

素材处理连带开发1天半,因为原版在水中只能躲避,移除了水,加快开发速度

全部代码

世界和平版魂斗罗

B站视频链接: https://www.bilibili.com/video/BV14a411C759
项目路径:https://gitee.com/shaokang123/peace-contra

使用该项目开发的功夫猫党

Java开发功夫猫党

B站视频链接: https://www.bilibili.com/video/BV1Mq4y1i7HX
全部代码:https://gitee.com/shaokang123/samurai-pizza-cats

使用该项目开发的东方夜神月

Java实现咲夜暴打魔理沙

B站视频链接: https://www.bilibili.com/video/BV11Y41137N5
全部代码:https://gitee.com/shaokang123/touhou-luna-nights

下面是项目开发过程的笔记以及特性

特性

结合SpringBoot本身就是一个Start直接引入使用

配套的SpriteEditor用于编辑精灵动画,精灵打图集直接通过JSON加载动画,直接通过动画名称加载(SpriteEditor.md)

支持Tiled绘制地图 加载对应的地图文件,支持对应的动画Tile,对象根据全类名创建,自定义属性使用Spring属性编辑器注入对象

支持键盘鼠标的查询式判断输入

支持动画添加事件,监听动画结束事件

支持音频,图片,xml,json等各种资源的池化加载

支持相机显示部分房间,相机跟随,矫正鼠标位置,会自动取消视野外的绘制节约资源,对象进入退出视野生命周期函数支持

支持常见的矩形,点,线碰撞,根据指定碰撞类型(接口,类等),碰撞的层级,是否排除指定目标,是否全部符合碰撞对象

绘制深度,常见形变的支持多绘制,多行动,DrawUI支持,渲染队列回调

遮罩跟随精灵,灵活变化

栈式房间管理
切图处理的简单支持(LayerExporter)

SpriteEditor

添加

选择一个动画,会向该动态添加帧可以指定帧的位置
其他,会添加一个新动画
若添加多张图片,图片中名字为 {name}_strip{num}.png 会把他们各自形成动画,剩余的若有再形成一个动画

删除

指定根节点删除所有动画
其他删除指定节点

编辑

选中某一帧切换切换图片
选中动画,修改动画名称与动画帧率

预览

预览动画播放,可以调整基点与遮罩

导出

拼接所有图片并生成对应的UV信息

导入

选择生成的JSON文件重新导入

显示操作

可以缩放,拖动,调整基点,遮罩

状态栏

显示当前鼠标相对基点位置与第几帧

com.sk.extension.LayerExporter

用于导出Tiled指定图层的图片

注意

spring:main:allow-circular-references: true

否则会出现循环依赖

简单的绘图类不允许注入,采用直接传递参数的方式,否则这些轻量对象也无法直接new,例如Tile精灵等直接new

tileset.tsx中的id从0开始会冲突在com.sk.handler.TileSetHandler中解决了

TODO

剧情动画支持

Java游戏框架编写相关推荐

  1. 可扩展java游戏框架实践之java飞机大战

    前言 在Java awt frame下利用画笔工具实现一个游戏框架. 该框架支持: 游戏动画实现 动图实现 移动实现 碰撞检测 游戏流程控制 游戏音乐控制 功能设计实现 ①游戏动画实现 JFrame下 ...

  2. Java游戏开发编写源码

    本文来源公众号:千问千知(qwqz1000),更多游戏开发源码可关注公众号获取. 关注千问千知,获取Java项目视频. 线程,让游戏拥有了动态变化的能力. java的图形界面,在启动的时候,就开始了一 ...

  3. java语言开发手机游戏_手机上的JAVA游戏和JAVA软件,是电脑上的JAVA语言编写的吗?他们之间有什么联系...

    手机上的JAVA游戏和JAVA软件,是电脑上的JAVA语言编写的吗?他们之间有什么联系以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起 ...

  4. Java集合框架系列教程三:Collection接口

    翻译自:The Collection Interface 一个集合表示一组对象.Collection接口被用来传递对象的集合,具有最强的通用性.例如,默认所有的集合实现都有一个构造器带有一个Colle ...

  5. ioGame 网络游戏服务器框架 (java)、java游戏服务器、netty 集群分步式的网络游戏服务器

    ioGame 国内首个基于蚂蚁金服 SOFABolt 的 java 网络游戏服务器框架:无锁异步化.事件驱动的架构设计 通过 ioGame 可以很容易的搭建出一个集群无中心节点.有状态多进程的分步式游 ...

  6. iOS游戏框架Sprite Kit基础教程第1章编写第一个Sprite Kit程序

    iOS游戏框架Sprite Kit基础教程第1章编写第一个Sprite Kit程序 程序是为了实现特定目标或解决特定问题而用计算机语言编写的命令序列的集合.本章将以编写第一个Sprite Kit程序为 ...

  7. Java黑皮书课后题第7章:***7.35(游戏:猜字词游戏)编写一个猜字词游戏,随机产生一个单词,当用户猜测正确后,正确的字母显示出来。当用户猜出一个单词,显示猜错的次数,并询问用户是否继续猜测

    ***7.35(游戏:猜字词游戏)编写一个猜字词游戏,随机产生一个单词,当用户猜测正确后,正确的字母显示出来.当用户猜出一个单词,显示猜错的次数,并询问用户是否继续猜测 题目 题目描述与运行示例 破题 ...

  8. pygame只能编写游戏_游戏框架搭建

    游戏框架搭建 目标 -- 使用 面相对象 设计 飞机大战游戏类 目标 明确主程序职责 实现主程序类 准备游戏精灵组 01. 明确主程序职责 回顾 快速入门案例,一个游戏主程序的 职责 可以分为两个部分 ...

  9. 疯狂Java讲义_Chapter4_编写控制台的五子棋游戏

    编写控制台的五子棋游戏 昨天复习了下<疯狂Java讲义>,完成前几章的习题, 现在基本完成了控制台五子棋游戏的编写,能够按照要求 保证用户下和电脑下的棋上不能已经有棋子 判断横.竖.左斜. ...

  10. java面向对象思想编写原谅帽小游戏 原谅帽游戏思路解析

    java面向对象思想编写原谅帽小游戏 原谅帽游戏思路解析: 面向对象思想 作品展示 类(游戏端)继承Frame: 首先要创建一个方法去让游戏开始和结束 使用text执行这个游戏的方法(需要有游戏标题和 ...

最新文章

  1. python2.7可以同时连接两个数据库吗
  2. UVa 814 - The Letter Carrier's Rounds
  3. android事件分发笔记
  4. Eclipse Code Review(代码审查)工具介绍
  5. 冠赢网络:游戏盾彻底解决DDoS/CC攻击
  6. 【江苏大学研究生小记】开学3个月的感想
  7. 利用 sql server agent(sql server代理)实现定时备份
  8. python循环读取文件越来越慢_python读取大文件越来越慢的原因与解决
  9. java日期去掉时分秒,只保留年月日
  10. 眼动追踪技术 Eye tracking总结
  11. Java、OC、C/C++中的null
  12. markdown笔记1--设置字体、颜色、图片、背景色
  13. hive分组排序 取top N
  14. 职工科研项目管理系统的设计与实现附代码
  15. java官网教程(进阶篇)—— 集合
  16. PPT文件限制编辑如何取消
  17. 车载系统升级、“特饭”会员品牌上线,解读新特背后的互联网产品逻辑...
  18. Java面试题 java高级
  19. Eclipse 版本对应的 JDK版本要求
  20. 豆瓣电台WP7客户端 开发记录5

热门文章

  1. 居家短期任务赚钱好不好做容易学习吗?
  2. 03 - 雷达的基本组成
  3. 按键精灵开发后台命令脚本的操作教程
  4. 二维码生成原理及解析代码
  5. JAVA购物管理系统
  6. 小米浏览器 解析html5,JavaScript - 判断当前用户使用的浏览器
  7. 关于Dll、Com组件、托管dll和非托管dll
  8. 如何理解希尔伯特空间?
  9. easydarwin 安装_linux环境安装部署easydarwin流媒体服务器详细教程
  10. 超市管理系统软件测试用例图,超市管理系统用户管理模块测试用例集.doc