- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE
1 -
基于Java的简单2DRPG游戏系统设计
基于Java的简洁2DRPG游戏系统设计
3791〔2021〕03〔c〕-0021-02
1游戏系统结构
该游戏系统使用Java的swing来建立GUI界面。除此之外,它的系统中包括了碰撞检测、画面渲染、音效、脚本处理、文件I/O等部分。利用swing的事件监听来接收玩家的操作。碰撞检测用来限制玩家的移动范围。画面渲染部分将多个图层以及特效绘制在屏幕上。在事件触发时由音效部分来播放各种音乐。脚本处理用来处理提取编写好的游戏脚本,引导游戏进展。文件I/O部分用于游戏从本地加载数据或保存数据。
2图形界面
当程序开始运行后首先加载本地的各种配置文件,假如配置文件正常,就会通过配置中的信息来创建窗口,通过用窗口监听AWT事件来接收全部玩家的操纵,并依据具体的事件类型进行反馈。
窗口在创建后会创建多个panel,分别用来显示游戏中不同的界面。当游戏需要进行页面切换时只需要调整这些panel之间的可视性即可。各个面板在被显示的时候都会执行响应的操作,存取档的panel在被显示的时候会加载本地的存档索引。设置界面的panel在被显示的时候会依据当前的设置显示对应的数据。游戏界面的panel在被显示的时候会实例化一个线程用于游戏的主循环。
2.1双缓冲刷新画面
由于游戏画面分为多个图层,而且人物之间也有可能出现覆盖,假如将每个图像直接刷新在屏幕上可能会造成游戏画面的闪耀。为了防止这种状况出现,系统会将全部需要刷新的画面提前处理。将这些图像先在内存中绘制到一张图上,等到游戏下一帧刷新时再一次性刷新到屏幕,这样可以有效提高画面质量。
2.2循环渲染延时
游戏画面的渲染放在了游戏的主循环中,每次循环更新过游戏数据后,渲染模块才会依据最新的数据进行游戏画面的渲染,并进行响应的延时。
系统默认画面帧数为60帧,也就是说理想状况下每帧应当用时16.67ms。每帧渲染后延时模块会用1/60减去本帧从开始到结束所用的时间和上一帧多耗费的纳秒时间,得到本帧应当延时的时间。假如本帧超过了自己应当用的时间就放弃本次延时。当放弃到达某一数量就让自己的CPU使用时间一次。
3数据文件
游戏中需要用到许多的本地文件,或者有些信息必需从本地加载,为了统一加载这些数据,每种都有其对应的数据文件。
3.1地图配置文件
一张地图有时会有多个图层,可能会有对应的BGM,地图中的某些位置可能无法移动,也可能会触发某些事件。这些信息就需要记录在地图的配置文件当中。配置文件包含地图的宽高、地图图片的地址、地图对应的事件二维数组、地图中自动触发事件的编号,以及可以行走的区域编号、地图默认的BGM编号。
全部地图配置文件的地址存在一个地图配置索引文件中,这个文件在程序初始化阶段被加载。
3.2角色配置文件
每个角色都有自己对应的立绘、id、名字等数据,这些数据被保存在角色配置文件中,此文件包含全部角色的名字、立绘地址、行走图地址,以数据的顺序作为角色的id。此文件在程序初始化时被加载,并且依据其中信息在程序中实例化角色的对象。
3.3脚本文件
每张地图中都会有许多个事件,每个事件都对应着一个脚本文件,在玩家触发此事件的时候,脚本解释器就会依据所处的地图,到本地图对应的脚本文件夹下加载对应的脚本文件,解释器对脚本中每条指令进行顺序执行。
3.4存档文件
游戏中事件触发的顺序,每个事件需要实行的步骤都被保存在一个数组中。游戏中玩家对物品的拥有状况只分为有或没有,为了节约空间使用压位法将数据保存在一个64位的长整形中。
在玩家进行存档操作时,系统会将保存事件进度的数组、保存物品有无的长整型、当前玩家所在地图编号、玩家在当前地图的坐标这几个数据输出到本地的存档文件。
当需要继续游戏时,系统只需要读取本地的存档数据,再跟进存档加载其他文件就可以继续游戏。
3.5事件索引文件
为了方便维护和修改,每张地图中的脚本编号都是重新开始的,这样幸免了想在靠前的地图中加入新脚本时需要把全部后面的脚本编号后移的问题。
事件索引文件中记录的是每个地图中一共有多少事件,脚本系统会依据这个文件来为各个事件安排id。这样某个脚本在需要修改其他事件进度的时候,就可以地图编号和事件编号得到那个事件的id。
4脚本系统
系统接受了自主设计的脚本格式和对应的脚本解释模塊。将全部事件依据地图顺序进行统一编号。将每一个事件对应到一个独立的脚本文件。把每个事件可能对应的不怜悯况以分步的方式写在事件对应的脚本文件中,解释器会依据玩家的操作、其他事件完成状况、玩家的状态等来选择对应的步骤执行。通过这种脚本指令可以实现以下功能:
〔1〕操纵显示,切换或取消图片、特效、对话、表情;〔2〕在没有玩家操纵的状况下移动人物;〔3〕播放各种音效;〔4〕切换地图;〔5〕修改各个事
原创力文档


文档评论(0)