自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 hash map 自定义实现

我们正常定义的 [键-->值] 类型数据容器 大多数都是用std::map, 或者std::std::unordered_map, 但是有些时候对其操作不太方便,特别是嵌套调用的时候进行添加删除操作,比如说:我有一个技能队列用的是std::std::unordered_map,当我们在帧循环中遍历技能队列数据,执行技能操作的时候,触发了一个新的技能或者删除了一个技能,这个时候在遍历的队列内部这个样就会出错:// 错误示例:std::unorder_map<int, skill_info&

2022-04-15 16:57:37 511

原创 游戏服务器引擎的设计(六)定时器设计

对于游戏服务器来说 定时器必不可少,我们设计定时器的方法一般有两种:一种是设计一个定时器队列。对定时器的超时时间进行排序,每次在服务器的帧循环中从头开始检查定时器是否超时,如果超时了,把定时器从队列中移除,然后执行定时器回调函数,如果没有超时直接跳出循环。最简单的是我们利用STL库的map容器,map容器的内部实现是红黑树,遍历的时候是从小到大遍历,我们把定时器的下次执行时间作为键, 每次在帧循环里遍历map容器,如果键小于当前时间则超时了,我们就执行定时器内容,然后删除定时器继续往后遍历。 如果键大.

2022-04-13 11:12:23 623

原创 游戏服务器引擎的设计(五)内存管理

C++的程序都会对内存管理比较敏感,经常会发生内存泄漏的bug,同时为了内存的快速申请和释放,以及减少小块内存碎片,故大多都会有内存管理模块。我在自己的服务器框架内加了内存管理,基本上是STL库的那一套,对小于128个字节的内存在内存池中管理申请和释放,而大于128的调用系统的内存申请及释放, 只不过在内部添加内存记录模块,当开启DEBUG标记的时候,会记录当前内存池总大小,已使用大小,和剩余大小。 需要检测或者查找申请记录的时候可以把当前内存情况输出到文件中。// 这里简单讲下原理实现:内存池

2022-04-12 15:48:36 5584

原创 字节流和字节顺序(用于序列化和反序列化)

介于要设计游戏服务器和客户端逻辑,现在需要普及一下我在代码中用到的一些数据结构,这一篇讲一下字节流--- ByteStream。字节流就是自己实现的一个数据存储区,可对基础数据和其他特定数据进行序列化和反序列化。用与玩家数据或者其他服务器数据的落地保存。也可用于客户端和服务器,、服务器和服务器之间的通信。里面也添加了对字节顺序的处理逻辑。如果是通信的数据包可以启动字节顺序转换。需要注意的一点是我对输入的每一个元素只拷贝元素内容,没有存储其类型,所以在字节流输出的时候没有办法做类型校验,这样对于结构经

2022-04-10 12:08:25 3794

原创 C语言链表

很多时候需要用到C语言方式的内置链表,根据处理类型多重交叉链接, 非常方便,这里贴一下链表实现。// 内置链表#ifndef CoreLink_h__#define CoreLink_h__// 链表struct LinkNode{ LinkNode* next; LinkNode* front;};// 初始化链表#define InitLink(root) ((root)->next = (root)->front = (root))// 添加到结尾#.

2022-04-08 18:06:26 1307

原创 游戏服务器引擎的设计(二)开发游戏服务器底层 及libuv使用

引擎这个东西,我认为稳定、高效、易用最重要。如果非要排个序的话 稳定 > 易用 > 高效。现在的东西或者库好用最为重要,能提好很多的开发效率。而高效,对于游戏服务器来讲,目前的硬件都足够应付一般的代码质量,甚至只要不是太垃圾就行了。当然效率越高越好。。我是用的libuv这个库作为基础支持库的。为啥用它,主要是网络库不想自己写了,有现成的最好。这个库是跨平台的,windows下分装了IOCP,linux下分装了EPOOL。 然后这个库带了一些其他接口,比如说基础的定时器 都是挺好用的,所以

2022-04-07 15:05:13 4092

原创 游戏服务器引擎的设计(一)介绍游戏服务器部署框架

服务器的架构,根据游戏类型不同大多有:账号服务器、全局服务器、网关服务器、场景服务器、中心服务器、存储服务器,配合其他的服务器(比如日志服,监控服等)。传统的游戏是单服模式,现在也有很多的是分布式模式。单服模式:就是一组服务器为一个服,与其服务器之间不互通的。比如传统的网游(魔兽世界),客户端看到的服务器列表里每个服都是一组单独的服务器,之间数据不共享。分布式模式:理论上可以无限扩容,可能有万人同服的情况。但实际上是有上限的。这个要根据服务器的逻辑设计,和硬件决定的。分布式的思想就是服务只是一个概念

2022-04-07 15:03:24 4522

原创 常见的游戏类型介绍

介绍一下常见的游戏,游戏的类型有很多种1:棋牌类:代表:腾讯棋牌。这类游戏开发起来比较简单,因为业务逻辑很少,用的最多的就是定时器,玩家数据很少,正常来讲客户端只负责出牌和一些提示,其他的就是界面显示。逻辑业务根据服务器下发的消息显示正确的界面就行,服务器端玩家数据都在全局服务器中,当进入房间的时候会把必要数据(游戏内的货币)带过去。开始游戏的时候进入桌子上,根据桌子的状态机控制整局游戏的生命周期,以及每个状态中需要的逻辑(比如说桌子有 :空闲状态、准备状态、游戏中状态、游戏结算等),而玩家的状态也

2022-04-07 15:03:06 2384

原创 游戏专栏 序

过年的时候和几个朋友一起打麻将,就闲聊起来说我做了十几年的游戏开发怎么不做一个麻将的APP,等到我们上班的时候也能自己人在手机上玩(腾讯的麻将规则和我们那边的不一样,没法玩)。其实我也早就有了这个想法,只是由于这样那样的原因一直没有实现。上几天痛下决心,誓要完成这个沭阳麻将。所有就有了开篇的这个序。一是记录我的创作历程,二是督促我这个拖延症。如果能对希望了解游戏行业的或者想学习的同仁有一点启发就再好不过了。 麻将属于棋牌类游戏,业务上比较简单,这个系列完成以后。有可能的话还...

2022-04-07 15:02:36 1752

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除