网络游戏服务器开发
文章平均质量分 54
悊子
服务器c++开发
展开
-
3D寻路算法,出现频繁拉回问题
角色行走频繁点击地面进行行走,会频繁出现客户端被拉回。拉回的原因是客户端的位置和服务器的位置出现偏差。服务器强制拉回客户端。经过持续半个月间断性的查找,终于找到原因是,因为int CCoordinatePath::GetCompletePath( DWORD dwNowTime ){// 无变速的移动距离计算DWORD dwMoveTime = dw原创 2013-03-18 09:05:36 · 1868 阅读 · 1 评论 -
MTU值会导致服务器往客户端发送消息包发送不过去,不断重发。然后客户端一直不接受任何数据。
外网linux服务器测试游戏过程中,点击排行榜,返回排行榜数据,偶发出现没有返回数据,之后一直不再返回数据。后来使用抓包工具,发现,服务器返回客户端的数据过大,会拆成最大1414的消息包,当前MUT=1454。这个时候很容易出现网络消息重发。然后一直发送不到客户端。出现上面的问题,客户端可以发送消息包到服务器,服务器处理后回发消息包,全部正常。但是客户端就是没有收到消息包的情况。后修改MT原创 2015-09-21 10:55:54 · 1338 阅读 · 0 评论 -
1>Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately. For example: 1>- add -D_WIN32_WINNT=0x
1>Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately. For example:1>- add -D_WIN32_WINNT=0x0501 to the compiler command line; or1>- add _WIN32_WINNT=0x0501 to your project's Preprocessor Definitions.1>Assuming _WIN32_WINNT=0x0501 (i.e. Windows X原创 2014-01-25 12:15:00 · 5787 阅读 · 0 评论 -
c++内存池(简单)
简要说明基本原理:对申请的小块内存进行内存管理,每个管理队列仅管理当前打小的内存块。如果当前大小内存块不足,就访问进程堆分块一块大内存,默认4K,然后初始化完毕后,供申请者使用。本人将小内存块划分为16字节,32字节,48字节,64字节,80字节,96字节,112字节,128字节,144字节,160字节,176字节,192字节,208字节,224字节,240字节,256字节,如果分配以上大小的内存块,将从对应的管理类CMemoryPool分配内存块。大于256的内存块直接原创 2013-12-07 11:37:23 · 2342 阅读 · 1 评论 -
谷歌协议google protobuf 内存泄露
c++中使用google protobuf在关闭应用程序之前需要调用google::protobuf::ShutdownProtobufLibrary();要不然会有内存泄露。原创 2013-04-08 09:00:12 · 4405 阅读 · 1 评论 -
游戏服务器之Timer计时器(定时器)动态链接库【超联网】
对于游戏服务器而言,计时器(每个多长时间触发一次)和定时器(定点触发)是不可或缺的一个组件。而计时器和定时器的做法又有很多种,我大致将其分成3中:1,非线程实现计时器和定时器;2,单线程实现计时器和定时器;3,多线程实现计时器和定时器;三种计时器的实现基本原理大致相同,运用时间戳GetTickCount()比较,Sleep等待,WaitForSingleObject等待。原创 2012-03-21 11:11:50 · 3901 阅读 · 2 评论 -
最快线程间数据交换算法,有效避免锁竞争 -- TwoQueues
请转帖本人文章时加入原文地址,谢谢。http://blog.csdn.net/hzdiy/article/details/8694642处理多线程数据共享问题注意的几个要点:1、锁竞争:尽量减少锁竞争的时间和次数。2、内存:尽量是使用已分配内存,减少内存分配和释放的次数。尽量是用连续内存,减少共享占用的内存量。多线程数据交换简单方案A:定义一个list,再所有操作l原创 2013-03-20 01:18:06 · 2461 阅读 · 2 评论 -
游戏服务器开发-- 角色数据进程间切换
这个周再游戏服务器中添加副本功能,但我们的服务器是多进程的服务器,玩家根据当前处于的地图不同,可能处于不同的地图服务器中,这个就面临一个问题是玩家再切换地图时可能要面临将玩家数据转移到其他的地图服务器中。之前对于跳转地图已经实现玩家数据的转移,实现思路如下:客户端请求跳转地图,将消息通过网关直接发送到对应的地图服务器,地图服务器判定玩家是否达到跳转地图的条件,可以跳转:判定跳转的目原创 2013-03-21 21:02:47 · 2557 阅读 · 0 评论 -
3D服务器端以向量计算为主的角色位置的算法
3D服务器端玩家行走处理是服务器端根据客户端行走路径、玩家行走时间以及速度(包括变化速度)计算得出玩家的当前位置。由于客户端行走是一条路径,不使用2D中的格子计算算法,未能高效的获取角色的当前位置,运用玩家行走路径,行走速度,行走时间这些已量,进行计算玩家的当前精确位置。由于3D游戏中的点为xyz的空间点,所以牵连的计算为3维向量计算。空间两点距离计算公式为:原创 2013-03-18 09:03:42 · 2809 阅读 · 1 评论 -
王者荣耀和同步策略
王者荣耀和同步策略参数GC Alloc:每帧 1k左右,最好控制在200b unity版本:4.6 服务器同步帧频:15fps buffer缓存:0 不支持代码热更状态同步和帧同步:状态同步游戏:dota2,LoL, Fps游戏帧同步游戏:dota,王者荣耀, 星际争霸无帧同步buffer机制。buffer大小直接影响延迟和卡顿。tcp换成udp(分发顺序,丢包转载 2017-05-22 10:46:35 · 1238 阅读 · 0 评论