Java游戏框架编写

article/2025/10/5 11:30:43

自己抽空编写的一个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

剧情动画支持


http://chatgpt.dhexx.cn/article/87Bg3Rd7.shtml

相关文章

Java游戏编程——愤怒的小鸟(一)

Java游戏编程——愤怒的小鸟(一) 前言:最近在b站up主尚学堂杨老师(b站链接)学习了我做的第一个游戏项目,所以在csdn进行总结,便于今后查看。 本部分主要是将游戏的背景绘制出来 先上一张效果…

java游戏开发(java游戏开发教程)

Java游戏开发绘图器是什么呢? 众所周知,Java GUI以paint进行绘图,以repaint进行图像刷新,而完成repaint及paint这一连贯过程中所用到绘图组件,我将其称为绘图器。就我个人的体会,绘图器的调用时机应始终处于…

Java编程实现三种等级的扫雷游戏(完整版)

大家好,我是陈橘又青,今天用Java编程实现图形化界面的扫雷游戏(三种难度),以下是完整的开发思路以及代码,供各位讨论交流。 文章目录 一、效果展示初级难度中级难度高级难度测试界面 二、项目介绍项目背景功…

Java游戏编程初步

现在流行的游戏似乎都是用C或C来开发的。在java平台上几乎没有很大型及可玩的流行游戏。由于java是个新生语言,他的许多特性还有待大家的发掘,但是我们不能否认Java在游戏编程方面的强大性。本文将带领大家一步一步学习编写Java游戏。最终打造属于自己的Java游戏。 …

如何用java语言编写小游戏?(一)

学习java的过程中,如果想找一些小游戏项目来练手的话,我们需要学习哪些技术先呢?(适用于java初学者) 第一步:了解GUI编程—Swing基础 GUI(Graphical User interface): …

SQL编程篇

SQL编程篇 这是以前的学习总结: 这一周将SQL编程篇仔细地看了一遍,有不少感触,因为SQL Server 中的T-SQL语言,在某种程度上就类似C等编程语言,其中有基本运算、控制语句及函数还有一个叫存储过程的东东。但目前对他们在…

SQL语言

创建数据库 创建table,create table后可以"库名.表名"或者"库名.用户.表名",也可以用上面工具选择,如果名字中含有特殊关键字,mysql需要交,sql server需要加[] 创建表 CREATE TABLE Student (S# CHAR ( 8 …

mysql -sql编程

基础语句 # 创建库 create database dome; # 切换到数据库 use dome; # 创建表 create table z (a int unsigned); # 查看表show create table z; # 查看表结构 desc z; # 插入数据 insert into z value(1);# 修改表字段类型 alter table zz change column a a int auto_incre…

pl/SQL编程基础

一、PL/SQL编程基础 1、pl/sql的组成:声明块、执行块、异常处理块 2、编制代码实现12...100的计算 3、编写求u12...100的结果并显示的存储过程 4、编写求12...n的带参数的存储过程 三、函数编程 1、函数的概念 function函数,存储在数据库中的带返回值的命名pl/s…

PL-SQL编程

PL/SQL介绍: PL/SQL是ORACLE对标准数据库语言的扩展 PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言 PL/SQL 是对 SQL 的扩展 支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制结构 可用于创…

SQL编程学习01

在正式开始学习前,我发现之前安装的MySQL忘记了root密码。 所以在这里补充一下找回root密码的方法:MySQL找回root密码 一、问题与解决: 1、在创建表的时候出现了「1046(ErrorCode:1046.No database select…&#x…

SQL编程和高级查询

一、使用SQL操作表 1、SQL语言简介 2、数据库操纵语言 (1)INSERT命令 INSERT INTO grade VALUES (5,五年级);--插入每一列 INSERT INTO grade VALUES (6,六年级); INSERT INTO grade VALUES (7,七年级); INSERT INTO student(stuNo,stuName,sex) VAL…

数据库系统SQL编程-02

目录 一、查询平均分高于60分的课程(MSSQL) 表结构: 表样例 输出样例: 编译程序: 二、查询成绩最高的前三名同学(MSSQL) 表结构: 表样例 输出样例: 编译程序: 三、查询所授每门课程平均成绩均在70分以上的教师(MSSQL) 表结构: 表样例 …

嵌入式SQL编程快速上手教程

嵌入式SQL编程快速上手教程 声明:我这里标题虽是《嵌入式SQL编程快速上手教程》,但只是嵌入式SQL编程的冰山一角罢了,我会通过举一道简单例题来教小白快速上手嵌入式SQL编程 第一:题目描述 其模式描述分别是: S (s…

数据库系统SQL编程-01

目录 一、查询各专业学生的平均成绩(MSSQL) 表结构: 表样例 输出样例: 编译代码: 二、查询平均成绩最高的前3名同学 表结构: 表样例 输出样例: 编译代码: 三、 查询同专业的学生(MSSQL) 表结构: 表样…

pl/sql编程语言

–pl/sql编程语言 –pl/sql编程语言是对sql语言的扩展,是的sql语言具有过程化编程的特性 –pl/sql编程语言比一般的过程化编程语言,更加灵活高效 –pl/sql编程语言主要用来编写存储过程和存储函数等。 --声明方法,定义变量 --赋值操作可以用 : 也可以使…

SQL编程开发

文章目录 SQL概述SQL分类SQL语言规范 基本查询语句查询全部列查询特定列过滤操作模糊查询排序操作多表查询单行函数组函数group by和having 子查询库和表的操作库的操作表的操作数据类型列的操作 数据处理之增删改事务、约束和分页事务约束分页 安装好MySQL下步就是使用MySQL&a…

SQL编程

10-1 查询学生表所有学生记录 (5 分) 本题目要求编写SQL语句, 检索出stu表中所有学生记录。 提示:请使用SELECT语句作答。 表结构: 定义表结构的SQL语句。如: CREATE TABLE stu(sno char(4) NOT NULL,sname char(8) NOT NULL,sex tinyin…

SQL 编程

SQL Server中存在两种变量局部变量和成员变量,两种变量的特点和其他语言变量特点一样 全局变量:由系统定义和维护由系统定义和维护 变量名前加“” 例 name 就定义了一个全局变量“name” 局部变量:由用户定义和使用,变量…

可编程的SQL是什么样的?

背景 如果你使用传统编程语言,比如Python,那么恭喜你,你可能需要解决大部分你不需要解决的问题,用Python你相当于拿到了零部件,而不是一辆能跑的汽车。你花了大量时间去组装汽车,而不是去操控汽车去抵达自…