制作联网游戏DEMO

  1. 1. Game Develop Document
  2. 2. 游戏引擎的选用
  3. 3. 编辑器和编译工具
  4. 4. 第三方库的选用
    1. 4.1. OpenGL
    2. 4.2. GLFW & GLAD
    3. 4.3. GLM
    4. 4.4. Box2d
    5. 4.5. imgui

最近想制作一个联网的游戏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,其中的碰撞检测和物理模拟功能对我这个项目正合适。
Box2D样例

imgui

因为这种一秒几十上百帧的东西,调试起来有点麻烦,所以用GUI辅助Debug是很方便的。选择imgui是因为刚好在LearnOpenGL的评论区中看到了有人在用,自然就也去搞了一套。imgui好就好在开箱即用,源文件放进项目里编译一下就直接能用,非常爽。但是我至今都还没搞明白要怎么把它编译成静态库或者动态库,等我恶补完编译原理和CMAKE再说吧,先用着。

To be continued…