您的位置:首页 > 编程语言 > C语言/C++

VS下用C++实现的简单3D射击游戏(附游戏文件与源工程代码)

2016-11-01 21:34 726 查看
记不得什么时候开始感兴趣写游戏代码了。开始的时候就只是写一些简单的小游戏,打台球,开小车,走迷宫,用一些2Dgraphics库,完成每个小作品后都很开心。后来一想,在现在的计算机设备条件下,2D太简陋了,于是开始着手做一个3D赛车游戏。说是赛车,实际上也就只有一辆小车。模型简陋而且贴图粗糙。但做完之后还是很开心的。毕竟,修改修改美工,多写点运动控制代码,也勉强算个小游戏。

然后,就想到开始做这个3D射击游戏。

这就是个时间长的过程了。因为决定提高质量,所以打算多看完教程再来写。

附:LearnOpenGL CN
https://learnopengl-cn.github.io/
推荐这本网上的教程。当时看了一些书打了基础,再看这个教程时就尝试看完一篇实现一篇。这个过程虽然漫长,但因为亲身实践学到了很多有意思的内容----视差贴图,HDR,泛光,帧缓冲。。。

然后,就开始动手做了。框架构思好,然后一步一步来。

做的时候才发现,没有想象的那么容易,因为全部都是自己一个人做。比如搭地图做骨骼,因为opengl的三种变换矛盾了很久;比如贴图时,发现光照和深度贴图总会产生问题;比如链接库文件时版本,格式不同,困扰了我好几天。。。有的预期效果,因为实在找不出bug只好放弃。

有时候趴在图书馆的桌子上想,万一花了很多时间做,但最后做出来还是很烂怎么办啊?但一抬头看着电脑屏幕,看到自己已经做出来的东西,就突然振奋了许多,又提上了劲。

中间还夹杂了很多事情:除了学习任务,还要做助研,完成IPP,这两件事都需要不少时间,于是只能从课余时间中再抽点零碎时间来做这个。有趣的是:我还在做助研项目时受到了启发------为什么不把这个3D射击游戏做成联网的呢?联网这部分反而做的比较快,就是连接数据库,然后分析每帧过去后哪些上传哪些接收。可能很多人认为难点在于联网交互,实际上数据库部分不难(也可能我做的不完备,会有数据冲突),难的是立体图形处理的细节,比如人物关节,比如碰撞、射击检测。

数了一下,总共写了十多个类,一共2500行,应该算是我写过最长的一个project了。如今终于差不多可以说Mission
Complete,回首间才发现自己已经收获了很多。

链接:http://pan.baidu.com/s/1slTcLPj 密码:f4f9
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: