![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
游戏开发专栏
文章平均质量分 87
谢白羽
无论东西
展开
-
魔兽3.3.5版本AI模块代码拆分解析(魔兽3.3.5模块是状态机)
文章目录原创 2024-01-03 14:10:34 · 670 阅读 · 0 评论 -
魔兽服务器学习-笔记(服务器部署、地图管理、DB、日志模块、任务模块、战斗模块)
2》由mmaps_generator生成可移动地图信息 .mmap,游戏中的地图移动数据(用来给navmesh寻路),也就是用recast和detour生成寻路信息。《4》vmap4assembler合并vmapsextractor和mmaps_generator生成的地图信息,vmtile信息。《3》vmapsextractor生成地图元素信息(可视场景信息:山脉、水体、建筑物等静态场景信息),用于未来做。2)功能:视野、数据同步、碰撞检测、寻路算法。1)AOI:管理地图地理信息、地图对象信息。原创 2023-11-09 15:21:32 · 1222 阅读 · 5 评论 -
游戏思考25:behaviorTree源码剖析行为树(3.8版本,2023-11-22)
行为树节点分类1)序列Sequence节点:顺序执行所有子节点,若都成功则返回成功,若有一个失败则返回失败2)循环Loop节点循环执行子节点到指定次数后返回成功,如果循环次数为"-1",则无限循环3)条件Condition节点根据条件的比较结果,返回成功或失败4)动作Action节点根据动作结果返回”成功“、”失败“或”运行“5)等待Wait节点返回"运行",一直到指定的时间过去后返回”成功"原创 2023-03-25 02:58:59 · 833 阅读 · 0 评论 -
游戏思考30:技能碰撞检测分类枚举及逆水寒魔兽老兵服副本攻略(英雄武林风云录,后续更新舞阳城、扬州、清明等副本攻略)
一、武林风云录1)老一:陈斩槐(只有四个机制,dps压力不大,留爆发打影子就行)(1)点名红色扇形区域(2)点名红色长条,注意最后还有一段大劈(3)BOSS在百分之80 、50、20血量时会击退玩家,会刷新三个输出位置(4)BOSS在百分之35血时会吸玩家到其周围,释放旋风斩,得交解控技能。但是不要着急回去,还有一个圆圈的下坠伤害2)老二:醉仙(1)红圈和点名略过(2)输出记得喝酒(龙吟内功,铁衣外功等)(3)每一个奉茶小厮都有名字,得按照诗词来按照顺序击杀小二3)老三:楚相玉(1)b原创 2023-01-26 17:01:34 · 3634 阅读 · 2 评论 -
游戏思考29:使用EASTL配合共享内存做自定义STL(未完待续12/28)
一、前置学习1)萃取(1)迭代器所指对象的类型-value_type第一个限制-返回参数需要指明迭代器的value_type第二个限制坑点-不是所有迭代器都是class type,原生指针就不是第三个限制坑点-如果针对"指向常数对象的指针(point-to-const)"获得的值带const不是我们期望的(2)最常用到的迭代器类型有五种:value_typedifference_typepointerreferenceiterator_c原创 2022-12-26 20:42:26 · 744 阅读 · 0 评论 -
服务器开发28:rapidjson充当http服务器与运营中台服务器之间解析json数据的工具,rapidjson接口和坑
一、背景知识1)DOM 与 SAX2)解析json二、使用接口文档1)序列化与反序列化(1)字符串转 json(2)json 转字符串2)数据类型3)字符串4)数组5)对象(1)查找对象(2)COPY对象(3)遍历对象两种方法三、使用示例1)解析一个字符串2)构造一个json并转成字符串3)修改一个已有的json字符串4)读数组5)以Writer构造一个json,然后修改它,最后转成字符串6)以Document构造一个json,然后修改它,最后转成字符串7)以Doc原创 2022-12-21 11:14:41 · 886 阅读 · 0 评论 -
游戏思考26:游戏服务器压力测试文档(新增linux相关命令,02/10未完待续)
一、压力测试关注点二、计算最耗时的加载操作1)从数据库读取数据,对加载的类型进一步划分各种类型,计算最耗时操作2)查看CPU随着在线人数的变化所占百分比3)查看内存变化4)备注原创 2022-12-03 18:44:29 · 2332 阅读 · 0 评论 -
补充游戏思考13:游戏服务器杂谈(主要讲mmorpg,年更系列,未完待续10/20)
一、冒险岛状态同步数据的举例说明1)基于帧的人物状态同步2)基于预言的人物状态同步(插值计算)3)基于客户端的怪物状态同步4)基于服务器的怪物状态同步原创 2022-10-20 18:06:18 · 1022 阅读 · 0 评论 -
游戏思考25:MMORPG场景服务器作用及说明(后面会增加人物行走双端相关总结,未完待续02/20)
一、总体介绍1)对于场景地图数据的处理相同点2)对于场景地图数据的处理不同点3)补充点4)3D地形数据介绍(区别于2D的相同点和不同点)原创 2022-10-20 17:22:47 · 1417 阅读 · 0 评论 -
游戏思考24:游戏寻路算法思考和Unity场景相关代码开发原则及导入地图数据(10/09)
Unity场景相关代码开发原则及真正导入地图场景,生成地图数据,编写代码加载地图数据原创 2022-10-08 00:49:43 · 875 阅读 · 0 评论 -
服务器开发25:用libevent充当游戏服务器之间连接(libevent笔记及源码剖析,实际evconnlistenr使用(重要的部分))
一、libevent的介绍1)优点2)利用到的Reactor模式的优点二、基本使用场景和事件流程1)基本应用场景2)实例代码3)事件处理流程三、libevent源文件组织结构1)源码组织结构2)拆分讲解四、libevent的核心:事件event1)libevent核心-event介绍2)libevent 对 event 的管理3)事件设置的接口函数四、事件处理框架1)框架event_base介绍2)创建和初始化event_base3)接口函数(1)注册事件(2)删除事件原创 2022-09-25 16:13:22 · 1090 阅读 · 0 评论 -
游戏思考17:寻路引擎recast和detour学习三:客户端角度学习(unity专题导航系统,阶段三完结)
一、如何构建导航网格1)导航系统作用2)导航系统包括3)做一个简单的导航Demo二、当行网格烘焙与烘焙设置1)对应相关参数三、导航网格代理与自动巡逻角色四、构建一个朝目标位置移动的角色五、导航网格障碍物六、网格外链接原创 2022-09-19 22:00:24 · 1592 阅读 · 1 评论 -
服务器开发24:tinyxml使用(服务器起服读取配置信息接口)
xml使用接口:增、删、改、查原创 2022-08-22 20:13:40 · 248 阅读 · 0 评论 -
游戏思考23:热更新思考
加载动态链接库,首先为共享库分配物理内存,然后在进程对应的页表项中建立虚拟页和物理页面之间的映射。你可以认为系统中存在一种引用计数机制, 每当一个进程加载了共享库(在该进程的页表中进行一次映射),引用计数加一;一个进程显式卸载(通过dlclose等)共享库或进程退出时,引用计数减 一,当减少到0时,系统卸载共享库。(1)打开动态链接库:dlopen函数原型flag:分为这两种RTLD_NOW:在dlopen返回前,解析出全部没有定义的符号,解析不出来返回NULL。...原创 2022-08-12 23:24:30 · 490 阅读 · 0 评论 -
游戏思考20:前缀树用途、实现及优化
前缀树用途、实现及优化原创 2022-08-05 16:35:06 · 333 阅读 · 0 评论 -
游戏思考19:游戏多维计算相关:点乘、叉乘、点线面距离计算
点乘、叉乘、点线面计算原创 2022-08-04 17:30:02 · 1346 阅读 · 0 评论 -
游戏思考18:AOI视野同步算法介绍和简单实现(未完待续8/3)
AOI方案简单理解:暴力、九宫格、灯塔、十字链表、四叉树原创 2022-08-03 11:18:04 · 3124 阅读 · 0 评论 -
游戏安全03:缓冲区溢出攻击简单解释
借助汇编解释和代码举例原创 2022-07-31 11:18:40 · 4479 阅读 · 0 评论 -
游戏思考17:寻路引擎recast和detour学习二:recast导航网格生成流程\源码剖析流程\局限性,附录计算点线面举例代码
网格导航的生成和局限性、流程和代码解析原创 2022-07-24 22:26:22 · 3575 阅读 · 0 评论 -
游戏思考04总结:针对帧、状态、物理同步的总结(之前写的太长,现在简略下)
状态同步、帧同步、物理同步的发展及优劣点、应用方法介绍原创 2022-07-23 20:41:26 · 2481 阅读 · 0 评论 -
游戏思考17:寻路引擎recast和detour学习一(跨平台编译库及相关寻路接口解析)
寻路系统原创 2022-07-14 00:04:30 · 2120 阅读 · 1 评论 -
游戏思考16:QT机器人学习笔记(未完待续7/13)
QT学习原创 2022-07-13 23:00:35 · 424 阅读 · 0 评论 -
游戏思考15:全区全服和分区分服的思考
全区全服的简单理解原创 2022-06-30 19:34:31 · 2248 阅读 · 0 评论 -
游戏思考14:对cache_server缓冲服务器的问题思考(读云风博客有感)
缓冲服务器的记录原创 2022-06-23 21:05:04 · 786 阅读 · 2 评论 -
游戏思考13:关于MMORPG游戏服务器的种类及作用(以后会同步更新github,持续更新系列,目前有20个服务器说明,22/10/20)
文章目录一、game_server二、gate_server三、mail_server四、router_server五、scene_server六、guild_server七、friend_server八、team_server九、activity_server十、trade_server十一、service_manager_server十三、account_server十四、cache_server十五、dbcache_server十六、dbmanager_server十七、global_server十八原创 2022-05-24 23:49:16 · 1783 阅读 · 0 评论 -
游戏思考12:游戏的随机数考究(重点在目录的第三章)
文章目录一、如何实现乱序的随机排序,而不占用空间(1)想法来源(2)算法作用(3)效果展示(4)代码1)cmakelists.txt2)main.cpp3)Prandgen.cpp4)Prandgen.h一、如何实现乱序的随机排序,而不占用空间(1)想法来源最近看了游戏开发精粹1的可预测随机数,感觉有点用处,就记录下来,其实没啥大用(2)算法作用在资源有限的环境下,在游戏空间中给出无限空间的幻觉(3)效果展示参数说明1)seed 种子,seed is a seed value betwe原创 2022-05-18 23:09:33 · 625 阅读 · 1 评论 -
游戏思考11:游戏服务器类型简单分类(有服务器的会讲的详细一点)
文章目录一、MMORPG类游戏1)分类2)MMORPG和ARPG的区别3)上者两者区别的原因和结果:二、FPS类游戏1)背景2)导致的相关结果3)结果枚举三、ARPG类游戏(action RPG)四、卡牌类游戏五、RTS类游戏六、消除类游戏七、MOBA类游戏1)特点2)导致的结果八、跑酷类游戏1)特点2)结果按照玩法类型分类游戏服务器一、MMORPG类游戏1)分类回合制梦幻西游、大话西游、神武4实时战斗类天涯明月刀、全民奇迹、FF14、魔兽世界2)MMORPG和ARPG的区别1)原创 2022-04-28 00:59:01 · 3873 阅读 · 0 评论 -
游戏思考10:游戏服务器的进程和线程简单谈谈(未完待续6/30)
文章目录一、总的看法二、1)多线程单进程2)单进程多线程3)单进程单线程一、总的看法之前游戏开多线程是因为机器原因,榨干CPU的全部性能,现在机器性能好了,所以基本都是多进程,每个进程都是多线程二、1)多线程单进程优点①故障隔离,一个逻辑服务器宕机不会影响全服玩家;②扩展性强,多个分布式部署,可以达到几万人同时在线缺点①为了充分利用多核,会一台物理机会部署多个逻辑服务器,但是由于这个服务器是开了共享内存的进程,会有很多内存冗余占用;②由于有多个逻辑服务器,得有个中控服务器异步的同原创 2022-04-19 01:05:24 · 4252 阅读 · 0 评论 -
游戏安全02:手游外挂简单分类和实现原理介绍
文章目录一、外挂分类1)辅助版(需要依赖客户端,不能独自生效),根据作用范围分为:(1)专用插件:so、dylib(2)通用工具:内存修改器、变速器、按键精灵、模拟器、抓包工具2)破解版:脱机挂、受损客户端二、外挂实现原理1)辅助版本外挂实现原理(基于游戏客户端动态修改游戏数据类型)(1)专用插件(2)通用工具2)破解版外挂实现原理(预先静态修改后的独立游戏客户端,可以分为:逆向分析游戏协议、对游戏客户端修改后实现的游戏破解版,可以根据修改后的客户端数据的不同分为逻辑代码和数据资源)(1)逻辑代码(2)数据原创 2022-04-05 23:44:28 · 11636 阅读 · 1 评论 -
BUG总结
文章目录一、队伍服务器遇到的bug及解决方法1)组队大厅的bug2)游戏服务器从共享内存恢复数据的时候,类的构造函数不要写任何东西,否则会执行构造函数刷新原本的数据3)tolua调用C++的对象对应的函数,只有一个:就行,不需要::4)若fixed_list删除过后,不能用下标直接访问fixed_list下的元素,得用迭代器从头一个一个的指过去二、工会服务器遇到的bug及解决方法1)修正protobuf的打印消息提示,原因:MSG_G2C_GUILD.....找不到对应的message,后面裁剪前四位字符2原创 2022-02-25 19:08:20 · 3455 阅读 · 0 评论 -
游戏思考04补充:网络游戏同步算法的理解(参考网易雷火jerish的文章,未完待续7/23,参考文献附尾,物理同步已更新完)
文章目录一、网络同步概念理解二、网络架构与传统同步1)网络游戏架构的发展2)传统同步面临的问题一、网络同步概念理解举例:比如说用户A用他的手机点击按钮注册了一个QQ账号,那么他的手机号等个人信息就会被存储到服务器上面,这就是一个数据同步的过程。在这个过程中,数据由A的手机流向了QQ的官方服务器。对于游戏来说,其实原理也是一样,不过由于游戏中玩家关注的是游戏的视觉效果,所以我们不仅要同步数据,还要同步表现。可以简单认为,网络同步 = 数据同步+表现同步,数据同步是后端操作,而表现同步就是让前端对后端同原创 2022-02-09 19:35:14 · 6704 阅读 · 3 评论 -
游戏安全01:手游的安全三把达摩克里斯之剑(偏向内存外挂,不涉及图片识别)
文章目录一、静态修改文件1)修改游戏资源2)修改代码3)修改配置二、动态篡改逻辑不同平台注入手段1)修改代码2)修改数据三、游戏协议入手1)篡改游戏协议2)重发游戏逻辑一、静态修改文件影响外挂作者通过将游戏文件被静态修改并被重新打包和签名,就可以不需要购买游戏就能体验游戏的所有玩法,或者在游戏中打广告、散播色情、恶意言论1)修改游戏资源概念一般而言,可以尝试在游戏的资源目录中替换或者删除资源文件,例如图片、声音、动画等资源,通过修改资源来影响游戏的逻辑或者在游戏中非法宣传广告举例在原创 2021-12-22 19:18:27 · 4257 阅读 · 0 评论 -
游戏思考09:服务器地形
文章目录【第一章】游戏中地形管理概念的基础1)什么是地形,为什么要有地形管理2)地形管理角度的游戏发展史概述【第二章】服务器端地形管理实践1)服务器2D地形实现 – Grid Mask 网格2)服务器3D地形实现 – Grid Layer 网格3)3D地形实现 – Polygon Mesh4)3D地形实现 – Voxel5)基于Voxel的3D场景建模以及碰撞算法【第一章】游戏中地形管理概念的基础1)什么是地形,为什么要有地形管理2)地形管理角度的游戏发展史概述【第二章】服务器端地形管理实践1)服原创 2021-12-15 16:17:18 · 3786 阅读 · 0 评论 -
游戏思考08:physx接口的学习和物理碰撞检测(持续更新,12/14)
文章目录一、API,由WkVec3结构体调用1)getNormalized()二、物理计算1)计算直线伤害范围2)计算扇形区域伤害范围3)计算圆形伤害范围4)计算点对点伤害前言由于游戏服务器碰撞由Physx做,所以需要看一些API和相关游戏计算一、API,由WkVec3结构体调用1)getNormalized()返回向量的规范化版本。归一化表示方向相同但长度为 1 的向量。二、物理计算1)计算直线伤害范围WkVec3 rline_vdir = WkVec3(_hit_dir.z , 0原创 2021-12-14 18:51:07 · 1627 阅读 · 0 评论 -
游戏思考07:MMORPG AI系统设计与实现(简单理解,未完待续,12/15,后面我会根据游戏编程精粹实现有限状态机)
文章目录【第一章】MMORPG AI基础1)MMORPG AI简介2)朴素的AI-Hard Code情况展示面临的问题3)有限状态机4)行为树【第二章】MMORPG AI寻路1)直线寻路2)贪心寻路3)A*寻路4)导航网格寻路5)寻路总结【第三章】有限状态实现(未完待续)【第一章】MMORPG AI基础1)MMORPG AI简介简介游戏内NPC能够通过环境或者事件的变化进行逻辑判断,从而与玩家进行特定的行为交互,主要包括以下三个阶段MMORPG AI架构AI主要实现的方式1)朴原创 2021-12-14 16:09:50 · 2180 阅读 · 0 评论 -
游戏思考06:游戏核心逻辑设计—战斗系统基础及进阶(未完待续,12/14)
文章目录一、【第一章】游戏战斗系统核心抽象模型1)技能过程定义2)技能阶段(可以叫状态机,但这是时间驱动的各个阶段)3)不同技能分类4)简单实现方式(定时器驱动不同阶段的状态机)二、【第二章】核心框架1)战斗框架子系统(buff,也叫aura)2)简单实现示例三、【第三章】逻辑内容四、【第四章】网络问题五、【第五章】性能问题六、【第六章】可维护性问题客户端:负责接收玩家战斗指令,根据服务器的驱动进行表现服务器:负责逻辑驱动一、【第一章】游戏战斗系统核心抽象模型1)技能过程定义1)技能实体在生命过程原创 2021-12-14 15:18:13 · 3242 阅读 · 1 评论 -
游戏思考系列05:游戏加载发生的事(简单聊聊)
文章目录一、单机游戏的加载二、网络游戏的加载三、页游的加载四、加载策略这篇文章发出来只是为了抛砖引玉,讲讲自己粗浅的认知一、单机游戏的加载1)讲硬盘中已经打包的游戏资源进行解压,并放到内存中运行,方便游戏程序快速的读取和显示2)这些被加载的资源包括但不限于:游戏场景、地图、2D或3D的贴图和模型,游戏人物的2D/3D模型./贴图/配音/动作包,游戏背景音乐/剧情动画等等二、网络游戏的加载1)讲硬盘中已经打包的游戏资源进行解压,并放到内存中运行,方便游戏程序快速的读取和显示2)这些被加载的资原创 2021-12-12 01:44:54 · 462 阅读 · 0 评论 -
游戏思考04:网络游戏同步算法产生原因和相关介绍:跟随(插值)、预测、延迟补偿,三种算法(未完待续02/07)
文章目录一、网络同步的典型场景二、简单粗暴的数据同步为何行不通?(帧同步的难题)1)网络同步的流程2)网络延迟和抖动的直观解释3)产生卡顿、瞬移的原因分析4)测试网速网速三、网络同步的优化算法(同步算法,目的是缓解网络延迟抖动的问题)0)直接网络同步1)插值算法(跟随算法)2)预测算法3)延迟补偿算法四、「帧」的切确含义(帧同步的内容)1)状态同步和指令同步2)延迟执行3)锁帧算法4)严格帧同步、乐观帧同步5)帧同步的应用场景和注意事项五、参考资料一、网络同步的典型场景赛车游戏、MMORPG游戏、王者荣原创 2021-12-10 18:14:33 · 3267 阅读 · 4 评论 -
游戏思考系列03:游戏匹配机制(MMR、ELO、trueskill2、皇家战争、Glicko等,详细讲ELO,其他的简略)
文章目录一、MMR机制——炉石传说、DOTA2、LOL、LOLM1)简介2)影响因素二、ELO机制——王者/LOLM(也就是LOL手游)1)简介三、trueskill 2——光环、彩虹六号四、独特机制01——皇室战争五、Glicko——csgo六、匹配机制的总结1)匹配机制并无绝对的优劣之分,需要根据目的来进行选择。2)复杂化、多维度的算法将会成为未来发展趋势3)未来的匹配及积分算法会被更广泛地应用于反作弊系统4)降低玩家上分难度将会成为未来匹配革新的关键七、ELO机制详解(以DotA2举例)1)ELO机制原创 2021-12-10 15:49:42 · 18722 阅读 · 3 评论 -
游戏思考系列02:技能伤害计算流程(不涉及buff)
文章目录一、题外话:1)技能伤害和特效表现的分离二、流程(举例:逻辑和业务分开:技能可以分为四个阶段)`举例`:LOL日炎灼烧效果,每0.5s产生一次伤害1)客户端开始施法,技能前摇。此时通知服务器同步进入施法流程2)客户端开始分段施法,每一阶段都要和服务器做同步。主要是为了防外挂,比如一些穿墙挂、瞬移挂等。3)在施法过程中或者施法结束的时候,服务器进行同步的伤害计算发送给客户端,然后客户端显示一些伤害的效果和伤害的数字等4)施法结束,客户端和服务器同步三、补充1)这里客户端不需要每一帧和服务器同步,只需要原创 2021-11-30 01:42:47 · 2286 阅读 · 0 评论