c++代码规范

一基本原则:用c++风格来写c++代码,而不是c风格代码尽量模块化,低耦合对复杂度较高的逻辑做拆分,尽量避免高度复杂的函数在标准c++的支持特性范围内,禁止使用编译器的方言扩展。仅在确实需要用到标准c++不支持的特性的情况下酌情慎用方言。二、代码风格细则说明:下文中,把包括基本数据类型在内的一切类型的内存实例,统称对象1,缩进和对齐必须:1)namespace 不产生缩进,namespace的起始括号不可另起新行      2)使用空格缩进,行首缩进距离以为4空格为单位      3)private等访问控制关键字相对于类名所在行不缩进      4)括号内发生断行时新行从前一半括号的列后开始      5)函数和类等声明时,标记主体开始和结束的花括号,必须各单独占一行      6)单目运算符和算子之间连续,不留空,不能换行      7)双目运算符和两个算子之间各留一个空格,必要时可以换行      8)三目运算符(?:)的算符和算子之间必须各留一个空格,必要时可以换行      9)每个对象的声明或定义,单独占一行,即不许在一行内同时声明或定义多个对象。     ...
Read More

游戏服务器3D寻路应用-recastnavigation

   recastnavigation是一个开源项目,该项目在github上对自己的说明是Navigation-mesh Toolset for Games。其中主要包含了3d寻路相关的库。起初关注这个项目是在大学的时候,当时和几个同学一起开发一款3d游戏,当时就有在游戏服务器实现3d寻路的想法,后来受到当时的指导老师李华旸老师的指导开始关注recastnavigation。刚接触这个项目的时候就被这个项目吸引了,经过初步了解,如果将这个项目应用于游戏服务器中,可以很完美的解决服务器3d寻路的问题。(后续recastnavigation简写为recast)  随后经过了一到两个月的研究,大概了解了其中的工具能够应用的场景,recastnavigation其中核心模块包含了3d寻路,控制agent(可理解为游戏中的人物)行走、移动,动态添加阻挡,动态改变地形。当然看到这里如果是做游戏客户端的同学,可能会说这有什么,这些在客户端不是很容易实现的么。也许你说的对,在客户端来说确实很好实现这些东西,很多现代的游戏引擎早已包含这些工具集。(补充一点 recast其实就是unity3d引擎自带的navigation寻路模块的前生,这一点我曾经在Google Group(需要翻墙)里和recast的作者memononen确认过)然而我们要做的是在服务器上应用这些技术,在服务器上却不是那么轻松的实现。对于这个技术的应用的经过,其中经过了很多波折(),所以只到这个技术的应用直到今天(距离我接触recast已经过去了快4年了)才真正落地应用于我现在公司的游戏项目的服务器中。下面来说明这个技术的应用的细节,也许下面的内容才是很多人 真正关心的东西(后面的内容真的有点西东)。  recast在GitHub上的地址:https://github.com/recastnavigation/recastnavigation.git ...
Read More

Redis集群搭建

  文章转载于:https://www.cnblogs.com/wxd0108/p/5798498.html   这篇文章是我浏览的很多讲述怎么搭建一个Redis集群讲的通俗易懂,在操作过程中没有遇到什么问题的一篇文章,如果你还不知道怎么搭建一个Redis集群,或者你还没有自己亲手自己搭建一个Redis集群的可以参考这篇文章,转载这篇文章也为了自己能够更加熟悉Redis集群的构建。前言redis 是我们目前大规模使用的缓存中间件,由于它强大高效而又便捷的功能,得到了广泛的使用。现在的2.x的稳定版本是2.8.19,也是我们项目中普遍用到的版本。redis在年初发布了3.0.0,官方支持了redis cluster,也就是集群。至此结束了redis 没有官方集群的时代,之前我们用redis cluster用的最多的应该是twitter 发布的Twemproxy(https://github.com/twitter/twemproxy)还有就是豌豆荚开发的codis (https://github.com/wandoulabs/codis)这2个我会在后续去使用它们。下面的文字,我尽量用通熟易懂的方式来阐述。 redis cluster...
Read More

游戏服务器架构设计

游戏服务器架构设计  自工作以来一直致力于游戏服务器的开发,看过很多游戏服务器的架构,心中也无数次构建自己所想的游戏服务器的架构模型。这篇文章会分析一下常见的游戏服务器架构,以及其中会遇到的问题,然后分享我想设计的一种游戏服务器的架构。如你看到疑惑或者文中不正确的地方,希望能够指正。   首先我们来看页游时代一种页游服务器的结构   首先我们来分析一下这个结构的服务器的优缺点。  优点:         1. 结构简单,易于开发部署。        2....
Read More

无锁队列

关于无锁队列的说明请参考陈皓的博客上的一篇关于无锁队列的实现的理论说明(coolshell)分享使用环形数组实现的无锁队列的c++实现代码。单生产者-单消费者[crayon-5cbc7dc048589112279055/]多生产者多消费者[crayon-5cbc7dc04859e246716599/]...
Read More