最近想制作一个联网的游戏Demo,检验一下自己的游戏制作水平究竟如何。大概做出《New Game!!》中宁宁那样的就行了!
Game Develop Document
我在这之前也尝试制作过一些游戏,但那些项目多以失败告终。如果让我现在总结一下之前的项目,我会说我总是眼高手低,在没有完成技术积累的情况下去实现一些很难达成的设计,而且从不写GDD或类似的开发计划书。大一大二的时候刚刚接触编程,觉得一切都是新鲜的,自大的觉得信息世界尽在掌握,完全不需要写文档就能开发大型项目。
最近看了尚在天国EX的从零开始做游戏!第一课!【天国的游戏设计教室Vol1】,就觉得无论从软件工程角度出发还是从游戏设计角度出发,写文档永远是第一步。之前制作东西的时候,总是在一开始把目标设的很大,在开发过程中不停有新想法诞生,最后遇到难题然后放弃。所以这回我决定先从小一点的内容开始,先做一款小游戏,再在此基础上增加联机功能。
2021/6/20 2:08 终于基本上写好了GDD了!只差UI界面还没设计,这部分等找到了原型图设计软件再写也不迟。GDD真的写了好久,距离创建这篇文章已经过去7天了。接下来的工作就是挑选工具来实现我的Demo了。
游戏引擎的选用
经过拍脑袋之后,我决定不使用游戏引擎。
尽管现在已经有非常多成熟的商业引擎都对源代码进行了开源,但是我还是决定不使用游戏引擎进行开发,而是像上个时代的游戏开发者一样从底层的接口直接开始写。这么做可能有点朝圣的意味在里面,但是毕竟这个小Demo只是一个普通的2D游戏,靠我这三脚猫的代码水平还是可以应付一下的。
编辑器和编译工具
编辑器肯定是Visual Studio Code啦,免费不要钱还有好多扩展可以用。编译工具选择使用CMake,别的都不太会,而且CMake我也并没有完全掌握,趁这个Demo好好学习一个。
这几天试了试CLion,确实好用,收费的就是不一样,免费三十天先用着,后面有钱了开个年费。
第三方库的选用
我这个水平,重复造轮子是没有意义的。好在这个世界上有一种东西叫做开源精神,前辈和大佬们毫不吝啬的贡献出自己的代码,为各个开源项目注入活力。而像我这种无名之辈可以在License的许可下,免费使用(甚至是商用)这些代码。在这里感谢每一位开源项目贡献者!
OpenGL
因为没有使用引擎,所以我得选择一款API作为的渲染接口,否则我就只能像《Rogue》那样让玩家对着字符游玩了。当然作为一名游戏设计的初学者,让我设计一款《Rogue》那样没有图形界面也能吸引玩家来玩的游戏显然是不太可能的。选择OpenGL主要是因为它跨平台,虽然目前还没用到。
GLFW & GLAD
GLFW is an Open Source, multi-platform library for OpenGL, OpenGL ES and Vulkan application development. It provides a simple, platform-independent API for creating windows, contexts and surfaces, reading input, handling events, etc.
GLAD is a Multi-Language Vulkan/GL/GLES/EGL/GLX/WGL Loader-Generator based on the official specs.
因为我是通过LearnOpenGL这篇文章来学习OpenGL的,而且目前我是一个新手,所以基本上我选择的库都是教程叫我怎么选我就怎么选。因此我自然选择了GLFW库和GLAD库。
GLM
数学库选择了GLM,没别的理由,教程里用过就接着用了。
Box2d
Erin Catto大佬搞得2D物理库Box2D,其中的碰撞检测和物理模拟功能对我这个项目正合适。
imgui
因为这种一秒几十上百帧的东西,调试起来有点麻烦,所以用GUI辅助Debug是很方便的。选择imgui是因为刚好在LearnOpenGL的评论区中看到了有人在用,自然就也去搞了一套。imgui好就好在开箱即用,源文件放进项目里编译一下就直接能用,非常爽。但是我至今都还没搞明白要怎么把它编译成静态库或者动态库,等我恶补完编译原理和CMAKE再说吧,先用着。
To be continued…