首页 > 代码库 > 做服务端开发所需要的知识

做服务端开发所需要的知识

网上流传一篇文章叫<Linux C++服务器端开发技术>,也就是做Linux C++开发需要哪些技术,内容如下

1、基本知识:掌握C/C++语法,熟悉STL标准库、ACE库、Boost库。

2、应用技能:多线程编程、网络编程、Oralce数据库、内存管理、正则表达式。
3、内功修炼:算法与数据结构操作系统、软件工程、数据库原理、设计模式。
4、综合素质:沟通能力、表达能力、人际交往能力、英文阅读能力。
5、工具使用:GDBGCCMakefile、单元测试SVN版本管理、UML
6、其他技能:Python语言、shell语言、XML语言、Linux常用命令。

我做游戏后端开发两年多,想说一说自己的看法,其实里面的ACE库是非常老的库了,基本上很少有公司用,我呆的第一家公司用过这个库,他是用到一个网上的一个开源通讯框架,底层就是用的这个, 网络库,我呆过的公司基本是都是有自己的一套网络通讯框架,数据库学mysql和redis就够了,设计模式,我层次的就也是了解,比如说我自己经常用的也就是单例模式和适配器模式,单例写配置文件用的, 适配器是用于函数转换 ,比如boost bind函数

但是我工作看公司的游戏代码会用到各种各样的设计模式,

 

2,观察者模式 又叫发布-订阅(Publish/Subscribe)模式

观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己

onPlayerHpChanged()

一般情况下,比如你一个事件的改变可能影响其它行为的操作,都可以使用观察者模式。比如,玩家在游戏中使用了一个添加经验的道具,执行使用道具的操作可能是有物品系统执行的,添加经验之后,角色可能会升级,要根据经验计算角色是否升级,还有可能任务系统需要统计某个角色添加了多少经验之后可能触发完成某个任务

 

3.命令模式

把一个请求看做一个对象。这样用户就可以参数化客户端请求,实现请求的队列操作和日志管理,并且支持对操作进行撤销回

讲出了命令模式的核心思想:把一个命令看做一个对象。这样做就能让命令拥有所有对象所拥有的优势

GM 指令一般来说能够模拟玩家操作来快速获得游戏的一些资源或者推进游戏进度。如果为玩家操作的命令类型实现一个 toScript() 方法

 

4. 代理模式

客户端通常需要显示其它玩家,而又不需要知道其它玩家的全部信息,只需要代理其他玩家。

 

5. 工厂方法模式 游戏角色的产生

创建一个角色,创建一个AI XXFactory::createPlayer() XXFactory::createMonster()

 

工具cmake要学一下,

还有lua语言,

另外推荐两本书网络编程的书< Linux高性能服务器编程>,< Linux多线程服务端编程:使用muduo C++网络库>, 非常不错,网上都有电子版的,如果找不到的话,留邮箱,我发到会发给大家,有钱还是买书哈,我自己就买了这两本纸质书

 

第一次开博客写文章,写的先放到这里

做服务端开发所需要的知识