传统网络游戏(偏重MMORPG)的模块划分
之所以用“模块划分”而没有用架构等词汇,因为本篇文章并没有细化到架构的程度。我希望先从最宏观的角度说一下游戏有哪些部分构成,让初入行业的游戏从业者,或者不是技术人员的游戏玩家都有所收获。接着,以后的博客会由宏观逐渐过渡到微观,让读者们在脑子中有个更清晰和容易的理解过程。
客户端是玩家直接接触的,所以先来看下客户端有哪些模块,流程从左往右。
当我们玩游戏的时候,最先接触到的必然是游戏画面。游戏画面是游戏引擎将美术制作的资源数据绘制到屏幕上产生的。游戏画面主要由场景内元素和UI元素构成。场景元素类似于现实世界中的肉眼可见的各种物质,包括光线、地面、水、杂草树木、高楼大厦等等,主要为了展示给玩家一个游戏环境。UI元素主要作用是将一些意识层面的东西抽象成图案展现给玩家。UI提供的功能分类大致为提示信息、场景交互、广义物品控制操作、角色控制操作等。
玩家看到游戏画面后总是要做点什么,无论是与场景交互还是UI交互都可能产生玩家的输入事件。一般情况下UI处理的优先级高于场景。确定了事件的内容后,就会交给客户端的业务逻辑系统处理,处理完后通常会给场景或者UI反馈,此时玩家才能看到自己的操作有了实际的表现,比如角色动起来了或者UI内容发生变化。同时客户端的业务逻辑系统通过网络层将处理结果发送给服务器。至此,本地客户端的流程基本完成了。(PS:这篇文章重点介绍模块划分,不对细节问题做更详细的说明,所以这里不必纠结是客户端的业务直接给了场景或者UI反馈,还是等服务器回复才有反馈。)
接下来看下服务器有哪些模块,流程也是从左往右。
当服务器收到客户端的请求后会首先进行常规的校验。如果不合格,就丢失该数据包或者对该客户端进行惩罚;如果合格,则进行业务逻辑运算,并将结果返回给该客户端或者广播给所有相关的客户端,同时如果有关键的数据更新则还需要同步到角色DB保存。至此,服务器的流程也就结束了。
到目前为止,读者应该对一个游戏的模块和大致流程有个简单的认识。此时读者脑子里可能会有很多问题:比如,客户端的业务逻辑都有什么?服务器的节点都是干什么的?服务器的业务逻辑又有哪些?没关系,我会在后续的博客中慢慢展开解释!
传统网络游戏(偏重MMORPG)的模块划分相关推荐
- java项目常见业务模块,C6 架构系列——Maven多模块划分和结构
一.传统Java Web项目 # 传统Java Web项目 这类项目常见组织方式就是在一个项目里面,放置 src\[java文件] resources\[配置文件] webapp\[js/jsp/cs ...
- 陌陌 php微服务架构,微服务架构中模块划分和服务识别
沙龙晃荡 | 去哪儿.陌陌.ThoughtWorks在主动化运维中的实践!10.28不见不散! 比来在进行微办事架构的交换和评论辩论中,除了谈到微办事迹巧架构外,客户往往加倍挂你微办事模块的划分粒度, ...
- 18.1 项目分析与模块划分(项目设计)-《SSM深入解析与项目实战》
最近有些朋友私聊我,说实战部分多久发,我想了想,如果按照<SSM深入解析与项目实战>那个专栏速度来更新,估计要明年年底了.所以新开了一个专栏,给有实战部分需求的朋友来进行订阅.我会尽快将该 ...
- 模块怎么用_IC设计方法:模块划分与overdesign
今天讲一个非常简单的设计思想,这个东东也是IC设计方法里的基本矛盾之一:模块划分与overdesign. 模块划分乃是IC设计最基本也最经典的概念之一.该步骤出现在芯片架构设计之初.多方设计人员一起讨 ...
- 消息中间件Client模块划分
上图是之间讨论确定的系统架构(后续内容会按照这个架构来叙述),其中: 客户端包含Producer和Consumer两大块 客户端需要和NameServer交互来获取元数据 客户端需要和Broker交互 ...
- Broker模块划分
上图是之前讨论确定的系统架构(后续内容会按照这个架构来叙述),几点基础: Broker采用主从结构 Broker负责持久化元数据并汇报到NameServer Client从NameServer获取元数 ...
- ds18b20温度转换指令_学习心得 | 温度检测工程模块划分总结与案例分析
本文为明德扬原创文章,转载请注明出处! 很多朋友在学习FPGA的时候会发现模块划分很令人头大,今天我就通过明德扬温度检测工程来与大家分享一下本人的划分思路. 明德扬温度检测工程是基于FPGA的一个实用 ...
- 从零到一搭建基础架构(2)-如何构建基础架构模块划分
Hello,这里是爱 Coding,爱 Hiphop,爱喝点小酒的 AKA 柏炎. 本篇是手把手搭建基础架构专栏的第二篇. 在第一篇<从零到一搭建基础架构(1)-玩转maven依赖版本管理> ...
- 千兆以太网工程模块划分总结与分析
很多朋友在工程模块划分的时候总会遇到很多问题,比如不知道如何下手.模块划分不合理等:我开始也是这样的,在学习了明德扬的几项工程以后,按照老师分享的思路,也对模块划分有了一定的小经验,今天通过案例的方式 ...
最新文章
- 叶明哲 | 数据中心空调那点事
- Acwing第 41 场周赛【完结】
- 屏幕录像专家详细安装教程
- 一套高可用、易伸缩、高并发的IM群聊架构方案设计实践
- 分阶段付款 学php,项目整理-支付宝的支付问题
- XP+WIN7双系统安装,备份,启动菜单修复
- jquery-pjax
- iOS逆向工具-Theos
- live2d模型导入unity报错 live2dsdk与Cubism下载 live2dSDKforUnity使用手册
- java可达性_可达性分析详解
- JAVA的0x1b分隔符_hive 特殊分隔符 0X1B
- qemu指定CPU型号
- 听说你还不会制作“GIF动图”,手把手包教会,这不就来了吗
- EndNote X9使用教程
- 常用数据库排名及分类介绍
- Java的抗辩本位制
- 支付通道对接常见的问题有哪些?
- Unity2D—骨骼绑定、IK系统、动画(一)
- LaTex | LaTex的数学公式中插入中文
- Matlab实现图像简单的几何校正
热门文章
- 一篇所有研究生都该读的好文:阳光温热,科研静好!
- MyBatis从入门到精通(二):MyBatis XML方式的基本用法之Select
- 【总结】对接达梦数据库DM8详细教程
- B2B2C多用户商城系统建设的几种方案
- Html canvas 五子棋
- 计算机的普及是把双刃剑的英语作文,科技是把双刃剑考研英语作文
- echarts报错: Can‘t get DOM width or height. Please check dom.clientWidth and dom.c
- 2023年9月数学建模:为什么发射卫星使用三级火箭?
- MySQL压缩包安装方法
- Qt编写网络中转服务器(开源)