- 博客(160)
- 资源 (1)
- 收藏
- 关注
原创 【游戏服务器开发】实体同步算法——Delta 压缩(Delta Compression)
是一种高效的数据同步技术,主要用于减少网络传输的数据量,特别是在游戏服务器和客户端之间同步实体状态时。它的核心思想是只传输发生变化的部分(增量),而不是每次都传输完整的实体状态。
2025-11-20 12:00:00
568
原创 领域驱动设计(DDD)实现SLG游戏中的「联盟」功能
清晰的边界:联盟上下文。高度内聚的模型:联盟、申请列表、联盟仓库等聚合各司其职。明确定义的交互方式:通过领域事件和领域服务来协调跨聚合的操作,保证了模型的纯粹性和系统的可扩展性。这种设计使得代码易于理解、维护和扩展,能够很好地应对SLG游戏中联盟功能的复杂业务逻辑和未来可能的需求变更。
2025-10-13 14:00:00
1431
原创 【游戏开发手册】常见的地图表示法(Map Representation),寻路算法的世界模型
表示法核心思想优点缺点典型场景网格 (Grid)均匀划分世界为小单元简单、直观、规则内存/计算浪费、路径不自然2D瓦片游戏、策略战棋点阵 (Waypoint)在关键位置手动放置点高效、高度可控覆盖不全、静态、维护成本高早期3D游戏、赛车线、固定巡逻导航网格 (Navmesh)用凸多边形覆盖可行走面精度、效率、自然度平衡最佳实现相对复杂现代3D游戏(绝对主流)四/八叉树 (Quadtree/Octree)递归的、层次性的空间划分内存高效、自适应精度。
2025-10-10 11:30:00
1230
原创 【SLG游戏服务器开发手册】资源分布的均衡性(Poisson Disk Sampling)探索
比如下图,左边是随机生成的点,右边是泊松盘采样生成的点。任意两个采样点之间的距离不小于预设阈值(最小距离), 任何两个点的距离都不会隔得太近。这一特性完美适配 SLG 初始区域的资源分布需求既能保证资源点的随机性,又能避免聚集(防止玩家扎堆争夺)或过度分散(避免玩家跑图成本过高)。玩家出生点选择也可以参考这种算法,保证每位玩家两两之间的初始分布不会过近在二维空间中,这种分布类似棋盘上的棋子摆放:每个棋子周围一定范围内不会有其他棋子,但整体布局仍保持随机自然的视觉效果。
2025-09-18 19:24:58
1080
原创 【SLG游戏服务器开发手册】战争迷雾(Fog of War)存储设计
方案适用场景优点缺点精细位图中小型地图,RTS/MOBA精度高,速度快存储和同步开销大区块化位图大型SLG(首选)存储和同步开销小精度为区块级坐标集合超大地图,极稀疏视野极端稀疏时效率高集合大了以后效率骤降对于你正在设计的SLG游戏,采用“区块化混合方案”并结合“差分同步”,是最稳健和高效的选择。它完美地平衡了内存、网络和CPU计算资源。
2025-09-10 09:00:00
699
原创 SLG游戏中沙盘元素(通常指资源点、野怪、宝箱等可交互对象)的刷新设计
设计沙盘刷新系统是一个多维度的决策过程,没有唯一的最优解。明确设计目标:你希望玩家有什么样的行为?采用混合模式:不要只使用一种刷新模式,对不同价值、不同目的的元素采用不同的策略。持续迭代与调整:通过后台数据监控资源采集情况、玩家冲突热点,不断调整刷新参数,使服务器生态保持健康活力。最终,一个好的刷新系统应该让玩家感觉这个世界是“活”的,既有规律可循,又总有惊喜等待发现。
2025-09-09 09:40:57
1081
原创 【SLG游戏服务器开发手册】沙盘地图的Scale设计
特性Zoning (分区)Offloading (卸载)核心思想水平缩放 (Scale Out):通过增加机器来分担负载。垂直解耦 (Scale Up & Decouple):通过优化架构来提升单点能力或分离职责。解决主要问题数据容量和总吞吐量。将海量地图状态分布到多台机器。热点瓶颈和系统耦合。防止单个功能拖累整体。粒度粗粒度,按地理空间划分。细粒度,按功能或数据类型划分。关系基础:没有Zoning,地图根本无法承载大量用户。优化:在Zoning的基础上,让系统变得更健壮、高效。
2025-09-08 11:00:00
984
原创 【BigWorld 游戏服务器引擎】Cell 架构设计介绍,及Java实现方案的探索
横向扩展(Scalability):通过动态增减CellApp和BaseApp的数量,可以轻松应对玩家人数的变化。世界可以做得非常大,只需增加更多的 Cell。负载分离(Load Separation):将不同性质的负载分离,避免了单一进程瓶颈。CPU 密集型的实时计算(CellApp)和 I/O 密集型的数据操作(BaseApp)互不影响。高效的视野管理(AOI):每个 Cell 只关心自己区域内和边界上的实体,大大降低了计算复杂度。容错性:某个CellApp。
2025-09-04 14:30:00
766
原创 【扫盲篇】游戏行业术语汇总
这类术语与游戏上线后的运营、收入和用户维护相关。这类术语与游戏的技术实现、硬件和发行平台相关。这类术语与游戏的推广、发行和品牌建设相关。这类术语源于玩家文化,并被行业广泛使用。这类术语主要与游戏本身的创作过程相关。
2025-09-04 11:38:55
1325
原创 【BigWorld 游戏服务器引擎】数据同步方案详解,及Java实现方案的探索
/ 属性数据类型枚举INTEGER, FLOAT, VECTOR3, // ... 其他类型// 属性定义// 是聚合同步还是差分同步// 标记是否为脏数据(仅对差分同步有效)if (!// 设置脏标记// 游戏实体// 用于差分同步的上次快照if (prop!= null) {// 深拷贝当前状态,用于创建快照// 计算当前状态与上次快照的差异if (!// ... 其他方法BigWorld 同步框架核心基于属性的分类同步机制。
2025-09-04 10:11:46
725
原创 【BigWorld 游戏服务器引擎】数据落地方案自动化详解,及Java实现方案的探索
当开发者在.def[Player]...BigWorld 的构建工具在编译时会动态地修改实体类的源代码。它不会生成一个简单的# 这是BigWorld自动生成的代码(概念性代码)# 1. 创建一个属性描述符对象来管理health值# 这个描述符知道它的数据类型是float,初始值是100# 2. 定义一个名为“health”的property,将其getter和setter绑定到上面的描述符@property。
2025-09-03 10:19:03
1040
原创 软件开发准则
遵循DRY和SPOT是保证系统一致性和可维护性的基础。通过SoC和追求正交性来实现模块化,是达成 DRY 和 SPOT 的主要手段。在整个过程中,要时刻用KISS和YAGNI来约束自己,避免引入不必要的复杂性。LoD和组合优于继承是指导具体设计、实现低耦合(正交性)的重要技巧。这些原则是编写可维护、健壮和高效代码的基石,将这些原则内化于心,能极大地提升您的软件设计能力和代码质量。
2025-08-29 14:00:00
863
原创 【SLG游戏服务器开发手册】开发规范——软件开发准则
本规范旨在旨在为 SLG(策略类游戏)服务器开发团队建立统一的软件开发准则,确保代码质量可维护性和扩展性,以应对 SLG 游戏复杂的游戏逻辑、庞大的数据量和长期运营的需求。
2025-08-27 11:54:17
695
原创 掌握 Java 的 TreeMap:不止于自动排序的利器,附排行榜数据结构设计实战
TreeMap是 Java 中实现了Map接口的一个类,它基于红黑树(Red-Black tree)这种自平衡的二叉查找树来存储键值对 (key-valuepairs)。它的核心特性非常突出:键的有序性:这是TreeMap最显著的特点。它中的所有key默认按照其自然顺序(Natural Ordering)进行排序,或者根据创建时提供的Comparator进行定制排序。你可以轻松地获取最大、最小或某个范围内的键。性能保证:由于基于红黑树,getputremove等操作的时间复杂度均为O(log n)。
2025-08-25 10:44:41
1005
原创 Java VarHandle:并发编程的轻量级原子操作神器
/ 原子更新多个字段do {} while (!!提供接近Unsafe的性能但更安全支持细粒度内存控制实现自定义原子操作成为等新特性的基础最佳实践建议:在性能关键的并发场景中,优先考虑VarHandle+volatile字段组合,而非直接使用AtomicInteger等包装类。对于数组原子操作,VarHandle更是唯一标准解决方案。随着Java并发模型的持续演进,VarHandle正逐渐成为高性能库开发的核心工具。掌握其原理和应用,将助你在并发编程领域游刃有余。扩展阅读。
2025-08-24 20:00:00
538
原创 深入理解 Java 中 SPI 机制:解耦与动态扩展的艺术
是JDK 内置的服务发现机制,通过接口定义与实现分离实现模块化设计。其核心在于控制反转调用方定义接口规范,第三方提供具体实现,系统运行时动态加载。JDBC 的接口,MySQL、PostgreSQL 提供不同驱动实现Spring Boot 的实现自动装配SPI机制是 Java 生态中解耦艺术的典范,从JDBC到,其设计哲学深刻影响着现代框架架构。正如 Linus Torvalds 所言:“好的程序员关心数据结构和它们之间的关系,而这正是 SPI 的精髓所在。
2025-08-21 15:00:00
650
原创 “Let it Crash“:分布式系统设计的涅槃重生哲学
是分布式系统设计中的容错哲学,其核心思想是通过可控的局部崩溃实现全局系统韧性。JVM平台:通过Akka框架实现Actor模型的监督树KubernetesPod重启策略 +服务熔断传统编程语言:C#/.NET中提倡不捕获未知异常。
2025-08-18 18:30:00
933
原创 【SLG游戏服务器开发手册】常用算法与数据结构归纳。持续更新中......
一般状态数很少的,比如常见的一些城池状态切换,我都会采用状态机。而在战斗中,状态行为过多的,最好采用行为树实现层次化、动态的决策逻辑。核心原理:基于启发式搜索(如曼哈顿距离、欧几里得距离),通过评估函数(F=G+H)平衡路径代价与目标距离,优先扩展最优节点。在游戏中,为了简化物体之间的碰撞检测运算,通常会对物体创建一个规则的几何外形将其包围。FSM 是离散的数学模型,描述对象在有限个预定义状态中的切换逻辑,每个状态对应特定行为。将地图按菱形网格分块(如32x32),服务器仅同步玩家视野内的区块数据。
2025-08-18 11:51:05
845
原创 从LSM-Tree到存储引擎:深入解析LevelDB与RocksDB
实现高吞吐写入的存储结构,其核心思想是将随机写转化为顺序写,适用于。基础上进行大规模改进,核心增强点包括。这种设计使写入吞吐量可达传统。引擎的10倍以上,但代价是。(冗余数据暂存)的问题。LSM-Tree优势场景。分布式数据库底层存储。
2025-08-14 14:18:58
601
原创 Java中的LambdaMetafactory:动态生成Lambda的底层黑魔法
是Java函数式编程的基石,它通过动态字节码生成和方法句柄优化实现了接近原生调用的性能。尽管直接使用其API较为复杂,但在框架开发和高性能场景中,它提供了不可替代的灵活性。理解其原理,能帮助我们更好地驾驭Java的Lambda世界。
2025-08-06 18:00:00
927
原创 深入解析Java类加载机制的核心价值与应用场景 ——从动态性到安全性的全方位赋能
Java类加载机制远非简单的“加载.class文件”它是动态扩展、安全防护、性能优化的三位一体解决方案。理解其核心机制(如双亲委派类隔离)和扩展方法(自定义ClassLoader),将帮助开发者构建更灵活、更安全的Java应用。随着模块化(JPMS)等新技术的发展,类加载机制仍在持续演进,值得开发者持续关注。
2025-08-01 12:00:00
851
原创 【Hadoop科普篇】大数据怎么处理?Hadoop是什么?跟HDFS, Spark, Flink, Hive, Hbase是什么关系?
在大数据场景下,我们将数据写入到HDFS中的多个DataNode中读数据。
2025-07-14 10:52:59
1109
原创 ThreadLocal与线程池的生死博弈:内存泄漏防御全指南
ThreadLocal 是 Java 中解决多线程数据隔离问题的核心工具,其核心价值在于为每个线程创建 独立的变量副本,实现线程封闭(Thread Confinement)。
2025-07-11 11:57:26
422
原创 【SLG游戏服务器开发手册】(ROK Like)沙盘地图篇一,菱形瓦片与笛卡尔坐标系的转换(附调试工具)
轴向坐标:以菱形网格对角方向为基准轴,记作(q, r)菱形瓦片宽度 w=2a,高度 h=a(宽高比2:1)
2025-07-09 11:09:13
491
原创 【SLG游戏服务器开发手册】命名规范篇——英文术语关键字定义约束指南
沙盘刷新元素现在三种分类: Resource、Threat、Military Facility。Raid、War、Military Facility: 邮件战报的分类(讨伐、战争、军事设施)Inferior(Good、Greate) Resource Zone: 低(中、高)级资源带。Peace Phase: 和平阶段、Protection Phase。Restricted HQ Area: 总部禁区(黑土地)Reinforce、Reinforcement: 增援。Ark Gene HQ: 方舟基因总部。
2025-07-07 14:23:45
893
原创 MySQL 线上 SQL 性能问题定位方法
通过以上方法可以系统性地定位并解决大多数 SQL 性能问题。对于复杂场景,可能需要结合多种工具和方法进行深入分析。
2025-06-23 10:09:15
1023
原创 SVN合并指南,从dev合并部分revision到release指南
点击Show Log,挑选需要合并的单号。,来隐藏掉已经合并的commit。
2025-06-18 10:11:37
273
原创 Netty流量控制核心设计解析:高水位机制深度揭秘
Netty中的水位机制(High/Low Water Mark)是流量控制的核心设计,通过写入缓冲区阈值管理实现控制。
2025-06-18 10:00:00
1045
原创 Akka默认分片策略LeastShardAllocationStrategy源码剖析
特性说明分配策略始终选择当前分片最少的节点再平衡触发基于固定阈值差 (rebalanceThreshold)并发控制限制同时迁移数 (maxSimultaneousRebalance)优点实现简单,资源开销小局限不考虑分片负载差异,仅基于计数。
2025-06-17 19:30:00
862
原创 在Akka Cluster Sharding 中,分片(Shard)如何映射到具体的 ShardRegion?
在 Akka Cluster Sharding 中,分片(Shard)如何映射到具体的 ShardRegion(即分配到哪个节点)是由。,但还没有决定这个分片在哪个物理节点(如果默认策略不满足需求,可以实现。首先,Akka 使用。
2025-06-17 09:43:58
670
原创 【游戏项目】大型项目Git分支策略与开发流程设计构想
对于大多数游戏项目,**方案一(特性开关)+ 方案四(功能分支隔离)**的组合通常是最佳选择,既能保持开发流程的流畅性,又能灵活控制功能发布。这种分支策略和开发流程提供了结构化的方法来管理游戏开发中的复杂性,同时保持了足够的灵活性来应对游戏开发中常见的变化和迭代需求。通过这种规范化的流程,可以确保功能开发有序进行,减少合并冲突,方便团队协作和代码追溯。代码审查通过后,合并到develop分支。当develop分支功能足够发布时,创建。对于游戏项目开发,我推荐采用改进的。在功能分支上进行开发,定期提交。
2025-06-11 17:00:00
963
原创 ECS架构之Entity设计与传统OOP的碰撞思考
在ECS(Entity-Component-System)架构 中,Entity(实体)本身不需要显式分类型。这是 ECS 的核心设计思想之一:实体是纯粹的、无类型的标识符(ID),其行为和属性完全由 组合的组件(Component) 决定,而非通过类型继承或分类实现。
2025-06-09 11:50:32
542
原创 装饰模式(Decorator Pattern)重构java邮件发奖系统实战
现在我们有个如下的需求,设计一个邮件发奖的小系统,// 1. 定义核心接口。
2025-06-06 10:30:24
725
原创 Java 进程大对象分析与优化指南
标准界定:单个对象占用堆内存 ≥ 512KB高危对象:持续存活时间超过 Full GC 周期 ×3异常增长:对象体积在 1 小时内增长超过初始值 10 倍。
2025-06-04 16:00:00
1065
原创 大规模JSON反序列化性能优化实战:Jackson vs FastJSON深度对比与定制化改造
在实测中,经过深度优化的Jackson方案在500KB数据场景下,相较FastJSON实现了45%的内存下降和30%的CPU耗时优化。但需注意:FastJSON需强制开启safemode防注入攻击。建议开发团队根据数据特征选择技术方案,在性能与安全之间找到最佳平衡点。
2025-05-30 18:00:00
1482
原创 Apache Kafka 实现原理深度解析:生产、存储与消费全流程
设计原则实现手段收益顺序读写分区日志追加写高吞吐(百万级 QPS)零拷贝低延迟(毫秒级)分布式共识ZooKeeper/KRaft 协调高可用(99.99% SLA)批量处理消息批次 + 压缩高网络效率掌握 Kafka 的核心实现原理,有助于在业务场景中做出合理架构决策,充分发挥其在大规模实时数据流处理中的威力。
2025-05-29 16:00:00
1192
原创 32核64G内存的物理机上,Netty理论能承载多少连接?
在32核64G内存的机器上,Netty的承载连接数受业务场景、配置优化和操作系统调优的影响。理论估算显示,64G内存可支持64K~6M空闲连接,32核CPU可处理10W~50W活跃连接。实际场景中,纯心跳保活可支持1M~2M连接,简单Echo服务为500K~1M,游戏网关为100K~300K,高频交易系统为50K~100K。关键优化措施包括操作系统调优(如文件描述符限制和TCP参数调整)、Netty配置优化(如使用Epoll边缘触发和内存池)以及JVM调优(如使用G1垃圾回收器)。通过压力测试和监控关键指标
2025-05-21 16:00:00
932
kali-cookbook PDF大全
2020-07-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅