游戏开发笔记(三)——通用代码库

来源:互联网 发布:1688淘宝货源一件代发 编辑:程序博客网 时间:2024/05/29 08:28

        这个时代“站在巨人的肩膀上”已经是一件无限趋近于迫不得已的事情了,尤其是想做一些比较“大”的事情的时候。拿游戏来说,这已经是不再是过去那个靠程序猿绘制简单点线面做一个tic tac toe那样的游戏就能赢得玩家欢心的时代了,就算是学生习作,完成像俄罗斯方块、贪吃蛇那样的游戏也只能为自己带来...一点点成就感。人们对虚拟现实的要求越来越高,对交互性要求越来越强,对应的,程序也就要做的越来越复杂。


        过去总想完全的把握一件事情,知道它的前因后果,了解所有的枝节脉络。但这种求知欲失控后却起到了完全相反的效果,导致迟迟不能真正的开始做自己想做的事情,而是不停的在一个又一个的概念上、技术上打转,最后也就“知难而退”,没有下文了。


        所以这个部分放到前面来讲,是觉得它是进行商业游戏开发的一个重要前提,准备一套代码库等于有了虚拟意义上的工作室——就跟现实世界的工作室一样,我们需要这样一个环境,通常情况下不能指望一个人能够包揽所有的东西。而且要像写大型程序一样,分层次的去考虑现实中的问题,专注的着眼于自己的目标去工作。比如你想做一个游戏,那就先不要过度纠结于游戏引擎的实现。

 

        通用代码库需要提供几个东西:

        一是功能上的便利,能够直接提供高级接口供开发者使用,防止前期花费过多精力造轮子

        二是稳定性,因为拿来作为项目的基石,所以尽量找具有工业强度的代码工具来,否则以后要做好三天两头打点滴住院的心理准备

        三是较好的通用性,可以应用到不同的需求的工作中。


通常来说,一个游戏项目(包括客户端、服务端以及外围工具)可能要用到以下工具:

1、日志(glog、log4xxx系列等)

2、网络(libevent、boost.asio、netty(java)、luasocket(lua)等)

3、打解包(protobuf等)

4、进程通信(rabbitmq、zmq等)

5、内存分配器(tcmalloc、jemalloc等)

6、存储(mysql、redis、mangodb等)

7、常用数据结构和算法库(boost等)

8、常用设计模式模板(不太了解)

9、线程库(现在基本都语言自带了)

10、脚本库(boost.python、luabind、tolua++等)

11、工具函数库(一般自己搞)

12、堆栈信息抓取(名字忘了,脚本语言通常自带了)

13、计时器(自己实现居多)


在代码库基础上,还可以建立更方便实用的特性,如数据回放、热更新、自动容灾等,需要根据项目具体情况去实现跟实施。


更加方便的选择是直接基于某个引擎开发,一般自带其中大部分模块的解决方案了,个别缺少的再来补充。如目前客户端主流的Unity3D和服务端评价不错的Skynet。

原创粉丝点击