游戏开发笔记(五)——服务端系统分层

捕鱼达人H5开发全攻略:对象池、碰撞检测与服务端结算 前端游戏开发往往从“能跑”到“能上线”之间存在巨大鸿沟,尤其像捕鱼达人H5这类涉及高并发渲染与数值敏感的场景。对象池是高频对象管理的基石,能有效规避垃圾回收抖动;碰撞检测则需要从网格粗筛到多圆判定分层精化,以保障中低端机帧率。同时,捕获概率与RTP(返奖率)的本地预演与服务端复算,构成了完整的结算闭环。本文以捕鱼达人H5工程为例,剖析鱼群调度、碰撞检测、发射冷却、服务端验证、断线重连等关键环节,并给出RTP回测脚本与避坑清单,为同类实时小游戏提供可直接落地的工程实践方案。 阅读详情

        本来很想按顺序写下来,到了第五篇是打算先写架构的,无奈这东西暂时没办法弄的比较通透,拖了很久也还是觉得写起来有困难。有一个客观因素是这阵子有点忙,很多东西要做,也没办法留出许多时间用来学习。

        还是先写已经有点概念的东西吧....

 

关于架构:

        一个复杂系统开始施工前首先要设计其架构,但这个暂时没能力说太细,所以只简单一提。

 

        什么是架构呢?

        我理解的架构就是一组能够描述服务端功能的概念模型,它能把复杂的问题使用相同统一的方式进行描述,或者说可以把一个复杂的现实问题转化为相对可控的工程问题。它甚至不需要任何代码,不需要复杂的UML图,不管通过任何方式只要能够简化并描述问题。而且并不是只有最上层的架构才叫架构,我觉得它应该是一棵决策树,每一个节点的架构设计都可以叫做解决该问题的架构。

        对于一套完整的服务端架构来说,应该包含软件架构和硬件架构。有时候一些软件上极难解决的问题却可以通过硬件方案轻松解决,所以对于网络游戏这种相对大型的软件来说,硬件方案设计也是不可缺少的。

        对架构的要求包含两个方面,第一个是硬性要求,要求能够在这套架构的基础上完成预期的游戏功能并具有一定程度的可用性;第二个是优化要求,条件允许的情况下尽可能的使得架构基础上的功能开发清晰简单,尽可能做到对未知需求具有良好的伸缩性,尽可能的对运行期效率有所保障等等(你所能想到的好的方面)。

 

系统分层:

        系统分层是软件架构设计的一个重要方面,分层的思想在《代码大全》里有相对详细的描述,应该是比较早就提出了,是降低系统复杂度的一种比较常见的做法。

 

        分层的粒度是根据问题的复杂程度以及具体的业务内容来决定的,对于简单问题使用过细的分层不只是杀鸡用牛刀的问题,实现起来也会变得啰嗦冗长,简单的问题会被搞复杂。这可以理解为对简单问题赋予了太多的概念,概念这种东西最好保持精简,这是设计范畴的问题了。 

        游戏的服务端根据游戏的类型和公司的实际情况会有许多差异,限于个人知识没办法一一比较说明,我只写我相对熟悉的MMOARPG的服务端设计。

一般也是类似软件业比较经典的三层划分(没记错的话应该是 系统层、业务逻辑层、表现层),首先是系统层,然后是引擎层,最后是逻辑层。下面分别介绍:

 

· 系统层:

        之所以需要有这么一层主要是因为程序语言层面能够提供的功能十分有限,更强力的功能常常要通过操作系统获得(比如线程和线程的各种锁)。当然您也可以试试避免直接从操作系统获得这些功能,而全部改用第三方库来解决问题,但他们的底层特性肯定也只能是来自操作系统,区别只是是不是你自己来做这些事情而已。

        该层设计的目标是要把所有依赖特定系统的逻辑全部隔离在这一层内,防止上层逻辑对操作系统产生直接依赖。同时,根据上层需求向上层提供足够多的底层功能。大概不会涉及比较复杂的程序编码,但这层实现起来也是相当不轻松的,因为现在基本都会有跨平台的需求,所以一定要在系统层考虑好程序移植问题,把程序规划好,尽量在移植的时候只需要按定义好的接口用最少量的代码再实现一个该系统的版本。同时,开发系统层也是需要对主流操作系统编程有一定经验(因为这个地方常常许多坑),防止系统API误用导致后期BUG追查起来十分困难。

        一定要处理的干净稳定,这样才称得上是为上层开发打下一个良好基石了。

 

· 引擎层:

        游戏的逻辑层有着海量的游戏逻辑,所以为了简化问题,还是把其中一些和游戏内容关联不大但必不可少的功能抽取出来单独作为一层。即去掉具体游戏逻辑的血肉,剩下来的其实都可以囊括到引擎中去。除此之外,设计引擎层也是比较经济的做法,因为和具体游戏逻辑不关联,又包罗万象集合了许多公共组件,它日做其他项目的时候可以完完全全的复用起来。引擎层铺设在系统层的基础上,与操作系统相隔离。

        一般而言引擎层会涉及的问题:通信、日志、数据库、场景管理、配置管理、主循环、脚本系统、计时器、内存管理、线程管理、容错机制、基础游戏对象、视野管理等。具体项目不一定这么划分,但一般认为这套功能是MMOARPG服务端标配了。各个模块意思也很清晰,所以我想不用一一介绍也不影响理解引擎层是怎样的东西。

 

· 逻辑层:

        逻辑层建立在引擎层的基础上,一般不需要操心除游戏功能以外的东西(如果不是的话通常暗示结构设计不合理)。到了逻辑层当然就是指那些与游戏内容密切关联的程序了,项目对游戏功能的要求越高,逻辑层的代码就越多。多是一定的,但具体多多少,增长的快不快还是一定程度上取决于开发者对游戏的理解,看看是否能对一些功能进行简单合理的抽象。

        逻辑层的主要就堆堆逻辑(十分琐碎),一般对编码能力要求不高,但实际上对设计的要求颇高,代码多则BUG多,太多功能写起来要命维护起来就更要命了...但据观察写逻辑的一般是程序部门人数比重最大的,而且对编码能力又没那么高的要求,所以一般都拿来控制成本了,所以良好设计什么的是不能有太多期待。要么就是先派一俩强力党先把核心功能写好,避免让后期纯粹来写逻辑的人来设计模块,这样可能还比较稳妥些。

        逻辑层一般包括:具体游戏对象(玩家、NPC)、基本游戏行为(聊天、战斗,移动常常会被抽到引擎层去)、帮会、任务、道具、技能、副本、宠物、好友、PK等。

        关于逻辑层的设计有许多东西可以讲,这里先不展开。

VC++ Ogre网络RPG骨架:TCP协议+多渲染器+服务端权威同步 网络游戏开发中,C++服务端与3D客户端的状态一致性是核心挑战。本文围绕经典Ogre 1.x引擎与Visual C++工具链构建的网络RPG工程骨架,解析其基于TCP的自定义协议设计、服务端权威下的位置插值同步机制,以及DirectX9/OpenGL双渲染后端的动态切换实现。技术价值体现在低耦合架构、可调试协议分帧、跨平台渲染适配能力,适用于MMO原型验证、游戏网络层教学、Ogre工程维护等场景。特别适合深入理解‘Ogre如何集成自定义网络层’与‘VC++项目中DX/GL上下文共存’两大实践难点。 阅读详情

相关推荐

天龙八部Java服务端源码架构深度解析

MMORPG服务端架构是高并发、低延迟、强一致性场景下的典型技术范式,其核心在于事件驱动设计、状态机管控与双写事务协调。本文基于一份真实历史存档的天龙八部Java服务端源码,剖析其LaunchModule生命周期管理、CoreModule自研EventDispatcher与状态机引擎、DBModule本地消息表+定时补偿机制等关键技术实现,揭示十年前国产MMO如何在有限硬件资源下支撑万人同服。内容涵盖Netty 3.x定制化网络层、JDK 6u45兼容性实践、帧同步与差分广播混合策略等硬核工程细节,适用于J

weixin_33146151的博客 233

百万在线:大型游戏服务端开发

进入手游时代,服务端技术也在向前演进。现代游戏服务端既要承载数以万计的在线玩家,又要适应快速变化的市场需求,因此,如何设计合适的架构就成了重中之重。服务端技术并不简单,作为服务端新人,全面掌握服务端技术可能需要数年时间;作为游戏公司,培养员工的成本也不低。新人或许有这样的经历,在请教资深技术人应该看什么资料学习C++服务端知识时,可能得到的答案是先把《TCP/IP详解》《...

华章IT官方博客 7030

微信小游戏斗地主Node.js服务端架构与实战解析

在棋牌类游戏开发中,实时通信与服务端权威是保证对局公平和流畅体验的两大核心。WebSocket以其全双工、低延迟的特性,成为斗地主等强实时对战场景的首选方案,而Node.js凭借异步I/O和轻量级进程模型,非常适合承载房间管理、状态同步与规则校验等后端逻辑。从技术价值看,将牌型判断、出牌校验、叫地主等关键规则收敛到服务端,能有效防止客户端作弊,同时通过状态机驱动房间生命周期,可实现匹配、对局、结算的完整闭环。此类架构广泛应用于微信小游戏、H5游戏及Unity转小游戏项目,尤其适合需要快速上线、迭代频繁的中小

weixin_34409357的博客 434

架构系统游戏系统开发笔记(五)——服务端系统分层

查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧! 原来很想按序顺写来下,到了第五篇是盘算先写架构的,无法这货色时暂没办法弄的较比通透,拖了久很也还是得觉写起来有难题。有一个客观因素是这阵子有点忙,很多货色要做,也没办法留出多许间时用来习学。 还是先写经已有点观点的货色吧.... 关于架构:...

weixin_30408675的博客 132

Unity嵌套ScrollView滑动冲突解决方案:ExecuteEvents.Execute事件透传

在Unity UGUI中,竖向与横向ScrollView嵌套时出现滑动失效,本质是EventSystem事件分发机制的拦截限制。其原理在于PointerDown被外层捕获后,后续PointerMove默认不向下透传;ExecuteEvents.Execute提供了一条绕过常规冒泡流程的官方事件旁路,支持低延迟、方向自适应的精准透传。该技术具备高兼容性与零侵入特性,广泛应用于电商商品页、内容流卡片组、多级导航等需‘列表中嵌套轮播/标签’的真实场景,是解决UGUI嵌套滚动问题的核心工程实践方案。

weixin_33164198的博客 632

【Web实战】微信小程序逆向

2E 70 6E 67”为带存放路径的文件名称,“00 00 11 7C”对应文件在小程序包中的具体偏移位置,“00 01 01 F7“对应文件在小程序包中的数据长度。但这并不是最初的原项目文件结构,原因是微信服务器会将小程序源码中所有的“js”文件压入“app-service.js”文件中,将所有的“json”文件压入“app-config.json”中,将所有的“wxml”文件压入“page-frame.html”文件中,“wxss”则在处理之后以“html”文件的形式存留在对应页面目录之下。

若有战,召必回 1945

游戏引擎基础架构设计:分层、模块化与生命周期管理

游戏引擎基础架构是构建高性能、可维护游戏的核心框架,其设计围绕平台抽象、模块解耦与生命周期管理展开。通过分层设计与模块化接口,引擎能够屏蔽平台差异、降低耦合度,并确保资源与线程的安全管理。合理的内存管理策略与事件系统进一步提升了引擎的扩展性与性能。本文深入解析引擎基础架构的关键设计决策与实操要点,帮助开发者从会用引擎进阶到理解引擎,适用于自研引擎或优化现有架构的场景。

weixin_32382335的博客 286

【OpenClaw从入门到精通】第09篇:企业级实践——将OpenClaw接入钉钉,打造7×24小时数字员工(2026实测版)

本文聚焦OpenClaw的企业级落地实践,以“招聘数字专员”为核心场景,完整演示从钉钉接入到全流程自动化的实现路径。内容涵盖企业级部署架构设计、前置环境搭建、核心技能开发、流程串联、安全权限管控及运维监控六大模块,详解简历解析、岗位匹配、外呼集成、CRM同步、日历提醒等关键技能的构建逻辑与代码实现。借鉴中关村科金、网易智企的企业级实践经验,重点突破企业知识融合、安全权限管控、业务系统连接三大核心门槛,提供可直接参考的配置示例与操作步骤。所有技术方案均基于公开文档与实测验证,兼顾新手入门与进阶实操。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1170

多人网络游戏服务器开发基础学习笔记 I:基本知识 | 游戏设计模式 | 网游服务器层次结构 | 游戏对象序列化 | 游戏 RPC 框架 | 帧同步和状态同步

今天继续开新坑,尽管过了很多 Unix 套接字编程的坑,但是实际还是有很多不同场景和性能的需求,以及最服务器架构的内容也就接触过 preforking 和 master 带 worker 而已。 所以有必要持续阅读一些内容。本文的笔记主干是基于书本的内容的个人理解,然后补充很多网络上的资料作为额外的内容希望能把概念和方法都讲明白,然后会收集一些 realworld 案例加深理解。 主要跟的书本是 Joshua Glazer 的 multiplayer game 网络多人游戏架构与编程,这本书也是好评如.

锐龙处理器 8317

如何让C++程序生成dump文件?生成dump文件的方式有哪些?如何使用Windbg分析dump文件?

本文详细介绍了如何让C++程序生成dump文件、生成dump文件的多种方式以及如何使用Windbg分析dump文件,并给出了对应的实战分析案例,有一定的实战参考价值。

dvlinker的技术专栏 5万+

7、复杂分布式水文模型的两阶段代理参数校准框架

本文提出了一种针对复杂分布式水文模型的两阶段代理参数校准框架,旨在解决可变入渗能力模型(VIC)在参数校准过程中计算成本高、耗时长的问题。该框架结合AdaBoost与反向传播神经网络(BPNN)构建高精度代理模型,并引入ε-NSGA II多目标优化算法加速搜索最优参数集。通过在兰江流域和湘江流域的实验验证,该方法在校准效率上提升了约20倍,同时保持了高模拟精度(NSE接近1,Bias接近0)。框架采用两阶段设计:第一阶段(SM-I)快速筛选关键参数范围,第二阶段(SM-II)进行高精度预测,显著减少了无效计

apple5的专栏 86

多人网络游戏服务器开发基础学习笔记 II: 帧同步 | 游戏客户端预测原理分析 | FPS 游戏状态同步

这篇是对书本 网络多人游戏架构与编程 的学习第二篇,内容还是以基础为主。第一篇主要是讲解了网络多人游戏的一些最基础的知识。同时因为一些点书本内容太简略,所以参照学习了 GDC 2017 守望先锋对 ECS 架构涉及和网络同步的视频分享结合讲解加深理解。尝试提供所有必要基础知识理解游戏客户端预测(但是只是基础角度的分析,有需要深入学习的时候直接看视频)。对于守望先锋 ECS 架构部分这里不涉及,那部分内容属于 gameplay 部分,可以看云风大佬的分析。GDC 的视频连接下文会给出。 对于游戏中的各

锐龙处理器 1万+

《Android系统开发中高级定制专栏导读》

欢迎来到【Android 中高级系统定制】专栏!在这里,将深入探讨Android系统开发与定制的方方面面,涵盖从权限管理、驱动开发到系统应用配置等多个领域。

我其实什么都不会 1579

游戏系统开发笔记(五)——服务端系统分层

http://blog.youkuaiyun.com/mooke/article/details/8868613  本来很想按顺序写下来,到了第五篇是打算先写架构的,无奈这东西暂时没办法弄的比较通透,拖了很久也还是觉得写起来有困难。有一个客观因素是这阵子有点忙,很多东西要做,也没办法留出许多时间用来学习。         还是先写已经有点概念的东西吧....   关于架

any 766

【AI编程】Claude Code 最强AI 编程利器项目实战详解

Claude Code 最强AI 编程利器项目实战详解

congge 7397

基于Python的京东商品价格监控与降价提醒系统设计与实现

本文详细介绍了如何使用Python构建一个完整的京东商品价格监控与降价提醒系统。系统通过爬虫技术实时抓取京东商品价格信息,结合数据存储与分析,实现价格波动监控和智能降价提醒功能。文章涵盖了系统设计、技术选型、代码实现以及部署方案,为电子商务价格监控领域提供了一个实用的解决方案。关键词:Python爬虫、京东API、价格监控、降价提醒、自动化。

2201_76125261的博客 405

游戏开发笔记(六)——服务端架构设计

上回写了写服务端的分层结构,分层是比较宏观上的东西,至于层次间具体的交互方式还得通过各个模块的交互方式来体现,姑且把这种模块划分以及其间的交互关系称之为架构吧,下面就来谈谈MMORPG的服务端架构,         对于制作一款游戏而言,首先要考虑的是做什么样的游戏?要实现哪些功能?而为了进一步简化问题,我们先考虑一款游戏的核心玩法——即少了这一部分便会使得整个游戏失去骨骼,乃至于产生一种“皮之

  1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

分层架构的认识

MVC:简单直接,适合小型项目,但易导致 Controller 臃肿。MVP:通过 Presenter 解耦 View 和 Model,适合需要严格分离的场景(如测试驱动开发)。MVVM:通过数据绑定减少胶水代码,适合复杂 UI 交互和现代前端框架。实际开发中,MVVM 是 MVC/MVP 的演进,尤其在前端开发中广泛应用。选择哪种模式取决于框架支持(如 Vue 用 MVVM)、团队习惯和项目复杂度。B/S与C/S架构:定义系统整体结构,关注客户端与服务端的职责划分和通信方式。

weixin_45809780的博客 1260

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

游戏开发笔记(七)——对象系统设计

角色系统算是整个游戏的核心骨干了,其它功能基本上都是以角色行为和状态为中心而展开的。 设计一个角色系统虽然算不上是一件多么困难的事情,但要设计出一个脉络清晰、抽象合理甚至是便于开发的角色系统却也是对编程功底和游戏业务知识的双重考验。   抽象之类的对于小东西可能没有所谓,但对于比较复杂的系统却是势在必行的。不宜抽象的过多,因为开发起来会比较绕,随着抽象层次升高,理解程序的成本也会攀升,没明显

  7234

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

游戏系统开发笔记(三)——通用代码库

墨水比较有限,工作时基本也都是着眼小处,除了工作内容涉及过的几个模块,其余的暂时并未多作关注,所以基本上还只是停留在感性认识上。不过我倒觉得这是难免,毕竟游戏产品放到整个软件行业来说也是个较复杂的东西,需要花很多时间才能把其间各种技术融会贯通为我所用,但等到了那个时候恐怕已经忙得未必会有时间详细的写东西了吧。所以这篇文章也是基本上限制在自己的这层认识水平上去写,还是那句话,过段时间回顾的时候再来修

novelly的专栏 1178

游戏系统开发笔记(六)——服务端架构设计

. http://blog.youkuaiyun.com/mooke/article/details/8913051 上回写了写服务端的分层结构,分层是比较宏观上的东西,至于层次间具体的交互方式还得通过各个模块的交互方式来体现,姑且把这种模块划分以及其间的交互关系称之为架构吧,下面就来谈谈MMORPG的服务端架构,         对于制作一款游戏而言,首先要考虑的是做什么样的游戏?要实

any 2229

关于游戏项目管理

1. 一个游戏是如何被开发出来的:从立项到Beta,游戏开发全流程解析 2. 博客园 游戏开发流程(18篇) 3. 实战游戏项目管理 3.1 实战游戏项目管理——规划篇 3.2 实战游戏项目管理——计划篇 3.3 实战游戏项目管理-执行篇 3.4 实战游戏项目管理-线上管理篇 3.5 实战游戏项目管理-配置管理篇 4. 游戏研发项目管理-浅谈 5. 游戏开发入门(十二)游戏开发全总结 6. 游...

guoguoguilai的博客 933

Superpowers从零到实战:安装、skills与自定义技能详解

团队协作开发游戏或交互原型时,文件同步难、环境配置重、版本冲突频繁是常见痛点。基于浏览器的协作式开发环境Superpowers,通过服务端托管项目、客户端网页编辑与实时同步,天然解决了多人同时修改场景与代码的协作问题。它内置的skills机制类似游戏引擎的插件系统,可分层扩展资源、编辑器和运行时功能,让开发者无需处理传统版本管理即可快速进入原型验证、黑客松或教学场景。本文从环境安装步骤讲起,介绍技能分类与引入项目的三种方式,并提供一个最小自定义技能模板,帮助读者在理解生命周期事件的基础上,亲手实现项目启动日

weixin_31842715的博客 208

架构之美读书笔记之三

架构之美第三章 问题、品质需求 1. 系统的伸缩性需求。如大型在线游戏,需要满足大量用户。在线用户数量短时间内可能有很大的变化。 这其中隐含的需求是: 多用户 并行 分布式系统,系统运行在多台机器上 高可扩展性(用于加入新的故事情节,意味着新的代码) 高稳定性、可靠性(一个用户崩溃,不影响其他用户) 数据一致性(多个用户看到同一个东西的状态应该是一样的) 2.

viewcode的专栏 5746

Unity游戏客户端与服务端通信架构设计实战

在实时多人在线游戏中,客户端与服务端通信是保障状态一致性和操作响应性的核心技术基础。其本质涉及分布式系统中的权威性裁决、时序同步与容错恢复机制。TCP提供可靠连接适用于登录、结算等强一致性场景,UDP则支撑高频率帧同步以保障操作手感,混合模式成为MOBA类游戏(如王者荣耀)的工程共识。协议设计需兼顾序列化效率(如Protobuf替代JSON)、心跳保活策略及网络异常下的优雅降级。本文聚焦Unity引擎下可落地的通信层实现,覆盖状态机管理、UDP帧同步、错误日志追踪与移动端适配等关键实践环节。

weixin_32943857的博客 237

游戏系统开发笔记(七)——对象系统设计

http://blog.youkuaiyun.com/mooke/article/details/8882073 对象系统顾名思义自然是指OO中的程序对象了,OO编程中除了少部分以算法为主的编程,多数时间我们的工作都在围绕各个对象的生命周期进行着。因为游戏中所使用到的对象较多,对象间的关系也颇为复杂,自需要一套概念上的“系统”来描述其设计及其背后所涉思想。这就是这里提到的“对象系统”了。

any 685
上一篇: 游戏开发笔记(四)——游戏程序简介
下一篇: 游戏开发笔记(六)——服务端架构设计
__GUNS_N_ROSES__
博客等级 码龄16年 267粉丝 12原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值