代码 未分类

我是如何用十天从零开始制作一个简单的RPG引擎的(下)

8月19日

12点起床后便往图书馆跑。把物件的显示与隐藏做好了,之后又做了中心对焦,自动行走。写完是下午四点半,我往群里发了一句话。

的确是能够做挺多的了,但还不够。晚上回去后又把遮罩,全屏旁白,擦入,擦出和震动动画给做好了。这个时候我大概知道,是时候做游戏本身了。之后我用ps把标题画面和按钮做好了,然后又写好了标题画面的代码,用了两个计时器来实现了按钮移动的动画。。

按钮太丑了,后面我又改了

做好又睡了。

8月20日

起来第一件事就是去图书馆,为啥一定要去图书馆,因为宿舍没有空调。。
去到发现用记事本很难设计地图(废话),于是先用vb写了一个(我个人比较满意的)地图编辑器,再用这个编辑器去设计。

有模有样就行了

设计地图的过程中又给游戏加了一些功能。。不再赘述。
回宿舍后遇到了win10更新。。由于太慢了我又睡着了。

8月21-22日

都在设计游戏本身

8月23日

完成了存档系统,自此游戏引擎制作完毕。(以后要改再说吧,现在算是比较完善了233)

感想

第一次用c++制作一个拥有GUI的程序,一开始这使我感觉很陌生,感觉很担忧,担忧自己是否能理解制作的过程,是否能在短短数天内完成这个引擎,但最后的结果告诉我,这个项目还是挺令人满意的。
这次制作这个游戏,本意是想圆我一个把我几年前的一个剧本做成游戏的一个梦,于是一开始我便打算使用cocos2d等游戏引擎制作而不是制作自己的游戏引擎,但是后来为了让制作这个项目更有挑战性,我便决定制作自己的游戏引擎。
这确实很有挑战性:我在是否使用主流平台这个问题之间还是犹豫了几天的:听说Qt功能强大,而MFC则显得落后于时代;而且一开始我没能正确的在MFC窗体上绘图,这使得我有点被MFC劝退,并试图转Qt,但之后我又按照网上的教程成功绘图,并一步一步运用MFC开发游戏,这使得我还是选择了MFC,虽然我使用的绘图函数和定义方法比较落后(甚至没用上CDC),但在一步步的制作中我乐在其中,从创建我的第一个窗体,绘制地图,绘制角色,键盘控制,到利用计时器刷新缓存DC,用脚本控制游戏,对话框,动画,标题画面,读档存档,我获得了非常大的成就感。尤其是读取脚本来控制游戏,这使得游戏的可扩展性变得非常高,与游戏剧情固化在游戏程序中的游戏相比,读取脚本不需要修改程序本体,只要创建、编写脚本,程序便可为你按部就班地开展游戏进程。当然我所制作的这个脚本解释器还是相当幼稚的(阅读代码便可知道),能与规范沾上边的只能有词法分析这一块,但是制作这么一个脚本解释器,还是花费了我不少时间。
在利用GDI绘图的过程中,我学到了很多:当新建一个DC并想输出它时时,你不仅需要一个DC,还要为这个DC创建一个Bitmap;我弄懂了SelectObject大概如何;我学会了如何输出文字,刷新窗体的DC,并且利用缓冲DC从而让窗体不出现闪屏......这些都是我以前听闻过但未曾接触过,甚至畏惧的东西(因为以前用VB运行有GDI/GDI+的程序时由于某些代码处理不当,会导致内存泄漏,报错退出,其后果往往是丢失代码),但现在我能利用这一个陌生,可能稍显老土又不逊色的工具来做我喜欢的项目,令我感到莫大的激动。
说一下不足之处:由于引擎本体制作的比较仓促(一个多星期),游戏的功能还是相对不够完善,而且游戏地图的制作比较繁琐(得先制作地面层,再制作障碍物层,我不得不用VB写了一个地图编辑器),这无疑增加了游戏制作的时间成本,使得我制作的示例游戏的剧情仅完成了部分。脚本执行(Token类)那一块明显相当笨拙且幼稚,类的定义也不够科学,游戏漏洞理论上仍然不少,游戏画面其实算不上漂亮,例如地图不够逼真......希望这些缺点能在我以后的项目中有所改善,直至不再出现。
总而言之,在完成这一个项目的过程中,我乐在其中,收获喜人,虽然可能真的有点累,但是当所有的努力化成的程序以我心目中的姿态展现在屏幕中时,我又恨不得继续对它进行更精巧的完善。期待下一个项目的制作。

b-a
我还没有学会写个人说明!
查看“b-a”的所有文章 →

Leave a Reply

Your email address will not be published. Required fields are marked *

相关推荐