12k 11 分钟

以下为个人学习笔记整理。项目源码来自 kcp github 开源库 # kcp 源码阅读 # 收发包流程 Kcp 握手 | 挥手 规则其实是上层应用自己定义的,因此实现上五花八门,这里简单介绍一下: Kcp 握手: 客户端请求连接,服务器创建 kcp 对象,生成 conv 编号,通知客户端 客户端通过 conv 初始化 kcp,双端 conv 一致,开始通信 特殊情况: 客户端连接请求丢失:客户端未收到 conv 触发重传 服务器同步 conv 丢失:同理,客户端触发重传再次建立连接,服务器再次生成 conv 并同步 客户端发起请求后断开(未通知服务器):服务器 kcp...
2.5k 2 分钟

以下为个人学习笔记整理。 # asio 源码阅读 Boost 的 asio 库常被用于实现异步的网络 IO,在服务器开发中往往充当着非常重要的作用,是服务器开发的基础。这里主要根据个人对于 asio 库阅读后的理解和感悟,进行系统化的归纳和总结。 # service_registry 类 Service 对象的管理器,通过单链表的形式存储所有的 Service 对象。并提供了添加、查询、创建等常用接口。 fork 操作 # execution_context 类 包含一个 service_registry 对象,对 service_registry 所有接口进行了一层封装,通过...
750 1 分钟

以下为个人学习笔记整理。 # 浅谈 AOI AOI(Area Of Interest)—— 感兴趣区域。在多人在线类游戏中,通常使用 AOI 来描述一个实体的可见范围,例如周围的其他实体。一方面用于减轻客户端的压力,保证不影响玩家体验的情况下,尽可能少的显示物体。另一方面很多游戏机制的实现也依赖于 AOI,例如光环效果,怪物 AI,地雷引爆等。 # 实现方式 常见的 AOI 实现有两种: 十字链表形式 网格划分形式 # 十字链表实现 假设每个点都是一个实体,因此可以根据实体的 x,z 坐标构建一个双向十字链表如下图。 # 实体位置变更 根据对应的 x,z...
362 1 分钟

以下为个人阅读感悟。 # 亲密关系 # 人际关系的构成 # 四种依恋类型 安全性:感情上很容易接近他人,不管是依赖还是被人依赖都感觉心安。 痴迷型:希望在关系中全身心投入,没有亲密关系令我不安,患得患失。 恐惧型:和他人发生亲密接触使我不安,感情上渴望亲密却很难完全信任他人。 疏离型:即时没有亲密关系也安心,独立自主很重要,不希望依赖他人或被他人依赖。 个人评价:疏离型 + 痴迷型,感觉很矛盾... #...
3.5k 3 分钟

个人设计开发的 3D 导航寻路方案 # 3D 寻路 NavBound 基于 RecastNavigation 的 3D 场景下寻路解决方案 ——NavBound。 # 核心思想 通过构建「非障碍空间」下的八叉树,将空间分割为稀疏的立方体结构,再对立方体之间更新 connect 和 region 信息辅助 A_star 实现 3D 场景下的寻路。 # 离线数据生成规则 初始化参数配置 障碍空间体素化 非障碍空间体素化 生成八叉树 更新八叉树节点连接情况 更新八叉树 region 信息 转为 NavBound 格式 # 初始化参数配置 #...
18k 17 分钟

以下为个人学习笔记整理,源项目 github 链接。 # SoloMesh SoloMesh 的构建过程可以分为如下几步: 「Step 1」Initialize build config 「Step 2」Rasterize input polygon soup 「Step 3」Filter walkables surfaces 「Step 4」Partition walkable surface to simple regions 「Step 5」Trace and simplify region contours 「Step 6」Build polygons mesh from...
13k 12 分钟

对于随机数是否随机问题的讨论 # 随机数测试 本次随机测试主要测试以下两个指标: 1、随机结果是否满足期望,即:100 次抽取如果 10% 的概率中奖,那么抽 100 次能中间 10 次吗 2、两次相同结果之间的出现间隔是否满足或者接近一个概率周期,即:如果 10% 概率中奖,那么每 10 次就会中奖一次 # Random.1 直接用整数随机接口 @classmethod def _random_int(cls, start, end): """整数随机, range[start, end]""" return...
316 1 分钟

以下为个人学习笔记整理 # 动词篇 # 动词篇三分类 所有「动词」原型都是以 う 段结尾 # 一类动词(五「う」段动词) 非「る」结尾 「あ」段、「う」段、「お」段 + る # 特例 # 二类动词(上一段动词、下一段动词) 「い」段 + る 上一段动词 「え」段 + る 下一段动词 # 三类动词(カ变、サ变) くる する # 名词 + する # 动词变形 # 动词变形之ます形 # 一类动词变形 う段 —— い段 + ます # 二类动词变形 る —— ます # 三类动词变形 くる —— きます する —— します # 动词变形之 て 形 #...
23k 21 分钟

以下为个人学习笔记整理,源项目 github 链接。 # Recast Navigation 源码阅读 # 基础属性 # CellSize 单个「Span」的长宽 # CellHeight 单个「Span」的最小高度 # AgentHeight 行走对象的高度 # AgentRadius 行走对象的步长半径 # AgentMaxClimb 行走对象的最大爬坡高度 # MaxEdgeError 面片和几何物体的距离,可以理解为面片和几何的贴合程度,越小贴合越紧密,面片越多 # VertsPerPoly 多边形的最大顶点数 # Recast 基础数据结构 #...
245 1 分钟

以下为个人学习笔记整理 # 十三、桌子上有三本书 # 语法讲解 # 名「数量」+ 动 数词中比较特殊的几个数「1、3、6、8、10」,常常在和量词搭配的时候读音发生变化。 其中「1、6、8、10」常常变成「半浊音」;而「3」常常变成「浊音」。 # 名「时间」+ 动 # 名「时间」に  名「次数」+ 动 # 动词的「ます形」活用 动词的「ます形」在去掉「ます」并跟上其他后缀之后,可以表示特殊含义: ます -> たい:表示想做某事。 # ✨✨✨✨名「场所」へ 动に 行 (い) きます / 来 (き) ます啊✨✨✨✨ 译为:去某地做某事 # 名「数量」+ で