游戏制作RPGDreamer

上传这个视频的时候我应该有40岁了,回忆前半生,也没什么爱好和追求,也就是和游戏纠缠了近三十多年。从六七岁起接触红白机,到八九岁遇到街机,再到十来岁被电脑游戏撞了一下腰。成年后投身编程与搬砖,算起来被电脑虐了无数遍。前两年就一直在想,这么多年一件能见人的作品都没有,实在有些虚渡光阴。
也许是无病呻吟,为赋新词强说愁,又或是因为心中的一点点坚持。花了一年多时间,用DirectX11+Lua5.43结合自己对游戏流程的理解,写了个制作游戏的工具RPGDreamer。其间修修改改,经历了多次的打击和推倒重来,才知道愿为自己心中的柔软付出努力时,竟能如此的坚强。

RPGDreamer由LUA产生逻辑,使用DirectX11负责显示。在制作游戏的过程中,使用基本设置、导入图像素材、导入其它素材这些功能来标准化游戏的图像、音视频等素材供游戏调用;任务设计、模型设计、窗口设计、地图设计、NPC技能物品设计产生游戏逻辑;最后用DirectX来调用素材和逻辑构成游戏。
既然叫RPGDreamer,开始也是以做个RPG游戏为目标,但做完后发现整体设计不够结构化,扩充性不强,只能推倒重来。先订下一个小目标:做一个打飞机类的小游戏,做好基础性的工作。
现在就以这个打飞机的游戏为例看看具体的操作流程。游戏的绝大部分图形资源均来自于一款叫飞机大战的手游,其于部分来自于网上搜索。所有资源均只供学习和研究使用,教程结束后会删除所有的资源。
首先设置游戏的基础信息,如游戏窗口的分辨率,字体等。由于单张地图素材是480×800的分辨率,所以窗口的分辨率也设置成480×800。要重点说明的是“游戏的第一个显示窗口名”这个设置,这是游戏显示的第一个界面,相当于游戏的Logo欢迎界面,默认这个窗口名叫Dlg_Welcome。游戏启动后首先显示此窗口,再由此窗口串联其它的游戏窗口,所以在后面的窗口设计中一定要以这个名字制作对应窗口。后期也可以通过“查找”按钮或手动输入名字的方式来修改设置。
接下来导入游戏的图形素材和非图形素材。游戏的地图会划分成一个一个的小Tile(Tile),游戏角色每次都是一个Tile为标准进行处理,所以与地图相关的素材都必须要设置成Tile的倍数大小。建议不论是否与地图相关,都设为Tile的倍数比较稳妥。游戏的地图素材是480×800,那么我们就设置Tile的标准为8×8。素材的碰撞格用于游戏中碰撞判定,游戏中的建筑或障碍一定要设置为碰撞格,另外NPC的脚部也应该设置成碰撞格,否则就会出现穿人或穿怪的情况。素材也可以用批量导入的方式导入,具体导入格式可以查看“多图形素材导入模板.txt”。游戏的视频和音频文件要以非图形素材的形式导入。
素材导入完成后可以进行模型、窗口、地图和NPC技能物品的设计。
模型是一个游戏对象所有动作的集合,比如一个对象行走、攻击、受伤等动作集合在一起就是一个模型,一个或多个模型赋与生命值、魔法值、攻击力、防御力等属性就成为了一个游戏中可以攻击或对话的NPC。在游戏的逻辑里面,NPC、技能、物品都是同一类对象,只是赋与的各项属性值不同,而内部的处理都是相同的。
现在先根据游戏各种不同的素材生成不同的模型。
为方便以后扩充,模型ID按以下方式定义
Player的模型为10001开始;敌机的模型从20001开始;BOSS从30001开始;Player子弹从40001开始;敌机子弹从50001开始;宝物、飞机爆炸、尾焰等杂项从60001开始。
生成模型后再根据模型生成NPC和子弹对象。
NPC的ID和模型ID不是同一个系统,所以NPC的ID也可以对应模型ID的顺序设定。
Player的NPCID从10001开始;敌机从20001开始;BOSS从30001开始;Player子弹从40001开始;敌机子弹从50001开始;宝物从60001开始。
一个NPC可以同时包含多个模型,以Player这架飞机为例。先以飞机模型为主模型,再附加上一个机尾火焰模型,那么在游戏中操作的就是飞机+机尾火焰。这样做的好处就是可以在游戏不同的情况下动态的修改加载的模型,比如吃到A宝物,加载一个翅膀模型,吃到B宝物,机尾火焰变色,吃到C宝物,机身上加个魔法阵。注意:子弹的类型要设置为技能。
打飞机的游戏实际上是背景自动滚动,飞机在屏幕上静止不动造成的错觉。所以滚动的背景我们以一个始终置底的窗口来显示。打开Dlg_Map窗口模板,在这个窗口中只有一个跑马灯控件,然后导出窗口数据。游戏中还有Logo窗口Dlg_Welcome、Player状态窗口Dlg_Player1Head、完成任务结算窗口Dlg_ComplateMisson和任务信息提示窗口Dlg_MissonMessage,这些窗口都可以按窗口提示信息修改素材和信息,导出窗口数据后完成窗口设计。
在这个游戏中,地图只是飞机移动的计算坐标系,不需要显示素材。打开地图模板,地图素材是480800的素材,前面导入素材的时候我们设置的Tile是88,所以在这儿最好也设置为88,地图的可视Tile就是60100。为了让敌机能飞到屏幕外,我们将地图设置为120*200。游戏中默认有3张地图,所以需要导出三次地图,导出时修改地图ID分别为101、102、103。
敌机出现的时机是由任务来控制的,我们打开任务模板。模板上有个10任务,如果需要增加敌机数量可以手动增加任务。我们只是用任务定时召唤出飞机,所以只要设置任务所在地图的Y坐标。然后在任务回答设置里面输入下一个任务的ID,将每一个任务串联起来,然后导出任务数据。
最后用记事本或其它文本编辑工具打开Scrip目录中的Config.lua,修改游戏中将要用到的各种ID,修改完成后测试游戏。如果一切正常可点击“导出游戏”将游戏打包发布。运行目录中的Game.Exe就可畅玩体验。
操作视频:https://www.iqiyi.com/v_178nankul1w.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值