从一款已上线的MMO手游分析游戏地图的同步方案

【竞品分析】模拟经营调研:模拟+MMO雷霆双雄之《摩尔庄园》 摩尔庄园》的宣发营销没有像常规的IP游戏在预热期间投放大量的效果广告来获取大众流量以提升首发期的预约数,而是通过社区运营和情怀话题来触达老IP的用户感知,一步步渲染怀旧情绪,刺激核心IP粉丝抱团主动回归。另一方面,金豆也可以通过游戏任务等获取,并不影响非氪金玩家,游戏整体体验感平衡,采取高DAU低付费的平衡设计。》由原页游移植改版,手游在保留页游经典的同时,又加入了全新的社交元素,它继承了“摩尔庄园”的品牌优点,延续生动的角色和丰富精彩的故事情节,并且采用3D形式呈现。临近上线前,通过H5小游戏以及和。 阅读详情

地图几乎是每一部RPG、MOBA、动作冒险等游戏作品中必不可少的东西,而地图的设计也是影响玩家体验的重要元素之一,游戏中的地图该怎么设计呢?本文将以一款已经上线的MMO手游为例,介绍地图在设计中需要注意的一些地方和同步方案。

1. 客户端地图格子的相关知识

在2.5D的MMO游戏里,角色是通过3D的方式渲染,2D的地图是通过2D的方式显示,所以在客户端一般会有三个坐标系:

a) 3D坐标系:所有需要3D渲染的角色和光效,都以3D坐标系中定位。

b) 2D坐标系:用来定位和绘制固定的2D地图元素,比如草皮、马路等。

c) 3D坐标里的格子坐标系:用来实现打掩码、自动寻路和进行一些坐标配置(比如NPC和怪物初始的位置)。使用格子坐标,一是为了方便打掩码和进行自动寻路的计算(经典的A*寻路),二是为了更方便查找坐标的具体位置。

端游使用的格子大小一般为(64, 32),手游的精确度要求低一些,可以用(100, 50),即3D坐标系里长为100宽为50的矩形,即是格子坐标系里的一个坐标。示例图如下:


2. 服务器同步大格子:9宫格

MMO游戏里,玩家要能看到地图上所有角色的行为,这就需要将其它玩家的动作都通过网络数据同步过来。同步一般使用9宫格来确定,哪些玩家的数据要同步过来,然后自己的行为要同步给哪些玩家。

服务器大格子的大小,以3*3的格子要总比客户端显示范围要大一点为原则。比客户端大一点,是为了预留资源加载的时间。

如下图所示,绿色表示手机客户端的显示区域,当角色A在格子6中时,他可以看到1,2,3,5,6,7,9,10,11这9个格子里的内容,那么当他的状态发生变化时,就需要同步给在这9个格子里的所有玩家;同样,当这9个格子里的有玩家或者怪物的状态改变时,也需要都同步给角色A。



当角色A移动到角色B所在的格子(7),则他将不再看到1,5,9这三个格子里的内容(玩家和怪物),同时他将新看到4,8,12这三个格子里的地图内容。所以这个过程中,服务器要下发消息,删除角色A所在的客户端里的1,5,9这三个格子里的地图内容,同时下发消息新增4,8,12这三个格子里的地图内容(类型一)。

推荐大格子具体的大小,按客户端iPhone4S的960*640分辨来制定,取屏幕长宽的1/2大一些,可以定为640*360。

3. 角色的移动同步

地图上角色的同步可以分为位移的同步和行为(比如放技能)的同步。这里主要讨论位移的同步方式。

位移同步的目的是为了将自己的位置变化发给服务器,然后由服务器通过9宫格的方式转发给周围的其他玩家。

有的端游是以客户端格子的基本单位进行同步,当玩家从一个格子移动到了另一个格子时,就发消息通知给服务器。这种方式的缺点就是:

①同步的延迟。玩家从一个格子开始移动,移动到另一个格子后,才发消息给服务器,服务器再转发给其它客户端,那其它客户端的玩家位置,总会有一点延后。

②当网络不稳定的时候,很容易看到其它玩家不是均速的移动,比如玩家位置没动,然后一下子瞬移到了下一个格子。

我们采用的方式,是同步状态的变化,然后由客户端来触发服务器对大格子跨越的判断:

d) 当玩家点击地图上某个地方,或者改变了摇杆方向,玩家的运行状态就变化了,即向某个坐标点移动。状态变化的时候,客户端就立即给服务器发消息,然后服务器进行转发。这样如果忽略了网络的延迟,那这个角色在所有客户端上,几乎是同时开始移动。

如果移动过程中没有其它变化,则整个移动过程中只有一次消息同步。这里需要处理一个问题,就是服务器需要知道这个角色什么时候跨越了服务器的同步大格子,当角色跨越了同步大格子时,服务器就需要进行第二节里(类型一)的操作。

e) 如何判断角色的移动过程中跨越了同步大格子,有的游戏里采用服务器判断的方式,即根据角色的移动速度和方向,计算出跨越的时刻,然后使用一个Timer来触发。同时如果服务器要取这个角色的当前位置,则需要通过运动公式来进行计算。这个方案相对精确一些,但比较复杂,服务器也需要为每一个移动的角色设定一个Timer,对服务器的性能有所影响。

我们采用的方式,是由客户端判断角色每移动一小段距离,然后发消息通知服务器,服务器不对这个消息进行转发,而只是判断是否跨越了大格子,同时记录下这个坐标,作为角色的当前位置。这一小段距离可以取100左右,值取得越大时,消息发送频率越小,但服务器的同步大格子跨越判断和角色当前位置就越不精确。

因为是直接同步的运行状态,所以客户端发给服务器的坐标单位是3D坐标系里单位,而不是3D坐标系格子的坐标单位。这样就更加精确,一点点距离的移动,都能准确同步。

f) 同步运动状态的一个问题是,如果玩家操作很频繁,比如快死了逃跑时,疯狂地点地图,这时运动状态变化的非常快,如果每个状态的变化都同步给服务器,再加上广播,那消息量是很大的。

所以需要设置一个状态同步的最短时间,当运动状态变化很快时,则将状态变化的消息缓存在客户端,同时加一个Timer跟踪。当马上有新的状态变化消息出来时,则进行替换,同时更新Timer。当没有状态变化的消息出来时,Timer到时间了就会触发,将缓存的状态变化的消息,发给服务器。

这样通过消息缓存加上Timer的处理,既实现了运行状态同步的最短时间限制,也保证了最后有效的运行状态会稍晚一点点发送给服务器。

4. 怪物的同步

怪物的同步在传统的端游里,是完全由服务器的怪物AI系统触发,客户端只是纯粹的接受服务器下发的怪物状态数据。对于手机游戏里,由于手机上很难出现像PC里那样的外挂,所以怪物的AI可以考虑放在客户端触发,同时减少怪物的状态同步。详细说明如下:

a) 怪物的随机移动不同步

在地图上,怪物都会有一个固定的位置。怪物没有进入战斗状态时,就会在这个固定位置的周围走来走去,随机的移动。这个随机的移动由每个客户端自己控制,这样怪物的随机移动,就不用消息广播进行同步了。

由于客户端自己控制怪物的随机走动,所以会出现不同客户端里,怪物位置不一样的问题。但由于怪物随机移动的范围较小,所以这个问题不是很明显,在手机上是可以接受的。角色打怪时,是扇形的伤害范围,所以即使怪物坐标在不同的客户端有点不一致,打怪的效果也是可以接受的。

b) 怪物的行为同步

当有角色攻击被动怪物,或者进入主动怪物的视野范围内时,怪物的AI就被这个角色所在的客户端锁定了,同时怪物进入攻击状态。攻击的判断完全由锁定怪物AI的客户端进行处理,同时这个客户端会将这个怪物的行为上发到服务器,由服务器广播给周围的其他玩家。

怪物的AI锁定,使用抢占式,即谁最先发消息给服务器申请怪物的AI锁定,谁就获得了怪物的控制权,直到怪物死亡或脱离战斗状态。

怪物可以每进行一次攻击,客户端就发一个消息给服务器。这样做,消息还是有点多,特别是一群怪围着几个角色进行攻击时,消息广播还是有点多。所以可以将状态的概念向上扩大,只同步怪物在攻击哪个玩家,而不同步每一次的攻击,然后由每个客户端根据怪物固定的攻击速度各自去表现。这样一个怪去攻击一个玩家,就会只有一次消息广播了。

c) 精英怪和BOSS怪的AI

精英怪和BOSS怪由于数量较少,而且比较重要,所以不能由客户端来申请AI控制权,而是服务器根据某种策略来控制。所使用的策略可以考虑角色的伤害值、防御值、角色与BOSS的距离远近等,根据这些因素,服务器计算出BOSS怪当前最适合攻击的对象(比如血量最少的玩家,最脆弱的法师等),然后将AI控制权发给那个客户端,由那个客户端控制攻击行为,同时通过消息让服务器同步给其他玩家。

总结:怪物的同步方式的选择,就是要尽量减少消息的广播,同时让游戏效果在可接受的范围内。怪物AI的这个处理方式,实际上是同时省去了游戏服务器的怪物AI模块(端游一般是专门用的一个进程或者另外一台物理服务器来进行怪物AI的计算),从而简化了MMO游戏的开发难度,同时保证了较好的游戏体验。


文章转自:http://www.youxituoluo.com/69392.html

游戏跨服架构进化之路 1.背景 虽然游戏市场竞争激烈,产品格局变动较大,但游戏产业一直处于稳步增长阶段,无论是在端游,页游,手游还是已经初露端倪的H5游戏。可以预见,游戏类型中,MMOARPG游戏仍然会是引领市场的主流趋势,贡献着大部分流水,市场上也仍然在不断涌现精品。研发团队对MMO游戏的探索从来未间断过,从付费模式的改变,到题材多元化,次时代的视觉效果,更成熟的玩法及数值体系,本文主要针对跨服玩法上的探索和... 阅读详情

相关推荐

MMORGP同步算法.

1. 航位推测法是一种导航方法,它被广泛用于船运、航空和 最新的移动机器人方面。本质上,就是根据物体前一个时刻 的位置和它所行走的距离与方向,从而预测出物体下一个时刻 位置的方法。 2.现在的网络游戏和网络模拟程序中广泛使用着方法,使用这种方法可以减少由于网络带宽和网络延时造成的滞后效应。程序中通常利用这种方法来根据上一次实体状态预测实体的下一个状态。

MMO手游地图同步方案总结

游戏程序 平台类型: iOS Android  程序设计: 设计思想/框架 算法逻辑/智能AI 客户端 服务器 网络通讯  编程语言: C/C++ Lua  引擎/SDK: 其它  1. 客户端地图格子的相关知识 在2.5D的MMO游戏里,角色是通过3D的方式渲染,2D的地图是通过2D的方式显示,所以在客户端一般会有三个坐标系: a) 3D坐标

洛寒 2348

MMO手游社交框架浅析.docx

mmo手游的设计框架,包含社交场景,社交范围,社交工具和内容,社交原因和社交深入

MMO位置同步及示例

MMO位置同步及示例          概述          位置同步的问题涉及到三方面,客户端,服务器,与其他客户端。 玩家的手感是最优先满足的条件,所以玩家客户端的位置是基准,但是完全依赖玩家客户端的数据会有被作弊的危险,所以服务器一般每秒钟会依据玩家的状态推算一个客户端位置。 其他客户端看到的位置完全依赖于基准客户端的状态作出的推定,如果有延时或卡顿的情况会依据最新的状态广播重置状

Sur的工作日子 4727

unity仿物理碰撞

unity 仿物理碰撞 帧同步 自己用脚本控制物体被碰撞后的效果

unity帧同步物理碰撞

基于Unity的帧同步精确物理碰撞,可以模拟Unity客户端的精确的物理碰撞,保证客户端的的一致同步

MMORPG游戏在技能战斗中的位置同步问题

      这里列举在技能战斗系统开发中,碰到的两个与位置同步相关的问题           (一)      在MMORPG游戏中,对于那些同时拥有近攻和远程系等多种职业的游戏,策划一般都会对近攻类的职业,加上冲锋类的技能,以便平衡远程类职业在攻击距离上的优势。在client看到的效果,是玩家边播放冲锋动作,然后快速接近目标,并对目标一个伤害,而对server而言,该技能与其它技能在

我本书生 5527

MMO-Map-Editor:用于我们的mmorpg项目的简单地图编辑器

MMO-Map-Editor:用于我们的mmorpg项目的简单地图编辑器

MMO同步机制

最近在学习MMO类型游戏的同步机制,先熟悉了最简单也最常用的一种方法,并画了流程图分享给大家,

jklrty的专栏 2340

Fluent 2.5D动网格重构实战:涡旋压缩机复杂运动模拟指南

本文详细解析了Fluent 2.5D动网格重构技术在涡旋压缩机复杂运动模拟中的应用。通过对比传统方法,2.5D重构显著提升了计算效率和稳定性,特别适用于柱体类几何的网格处理。文章提供了从基础配置到参数优化的实战指南,包括关键设置步骤、常见问题排查及性能优化策略,帮助工程师有效解决动网格重构中的负体积和网格畸变问题。

weixin_28455801的博客 551

手把手教你用gym训练宇树GO2机器人模型(附完整配置文件)

本文提供了一份详细的实战指南,教你如何使用Gym框架为宇树GO2四足机器人搭建强化学习训练环境。文章深入解析了环境配置、参数调试、奖励函数设置等关键步骤,并分享了避开常见陷阱的经验,旨在帮助开发者高效完成模型训练。

oo7890的博客 326

游戏的大地图中对象状态的同步

游戏战场的地图很大,在地图上活跃着成百上千的玩家。服务器是如何同步地图上玩家英雄、怪物、建筑等地图对象的状态呢?肯定不能把地图上所有对象的状态同步给玩家,因为数据量实在太大,服务器只要将玩家视野周围的地图对象状态同步给玩家即可,这样既可以满足需求,下面介绍如何同步玩家视野周围的地图对象状态。 可以把地图看成由很多个小方格组成的,而玩家英雄、怪物、建筑都在方格上,而服务器只需要将视野所在格子周围格子上的地图对象的状态变化同步给玩家即可,这正是玩家屏幕所看到的区域。如图: 我们可...

凌云天空的博客 1200

修复 Outlook 中缺少的 Microsoft Teams 插件

在 Outlook 中缺少 Microsoft Teams 插件可能会限制您在邮件客户端中直接访问 Microsoft Teams 的功能。在本文中,我将向您介绍一些修复缺少 Microsoft Teams 插件的方法,并提供相应的源代码。如果问题仍然存在,请确保您的 Outlook 和 Microsoft Teams 都是最新版本,并尝试在不同的计算机上进行测试。在实际使用中,请根据您的需求进行适当的修改和调整。如果前面的步骤未能解决问题,您可以尝试重新安装 Microsoft Teams 插件。

CodeWWWCode的博客 5673

MMO手游地图同步方案的分析与总结

转载于:http://www.youxituoluo.com/69392.html地图几乎是每一部RPG、MOBA、动作冒险等游戏作品中必不可少的东西,而地图的设计也是影响玩家体验的重要元素之一,游戏中的地图该怎么设计呢?本文将以一款已经上线的MMO手游为例,介绍地图在设计中需要注意的一些地方和同步方案。1. 客户端地图格子的相关知识 在2.5D的MMO游戏里,角色是通过3D的方式渲染,

遇夏 1223

PCL 从LAS文件中获取点云的颜色【2026最新版】

PCL从LAS文件中获取点云的RGB信息(pcl::PointXYZRGB)并进行可视化。博客长期更新,本文最新更新时间为:2026年5月4日。

点云侠的博客 1720

相似贴子推荐:基于 LangChain4j + Milvus 的混合检索实战

本文提出了一种基于LangChain4j和Milvus的混合检索方案,用于解决论坛社区中的相似帖子推荐问题。该方案结合稠密向量语义检索和BM25关键词检索的优势,通过RRF算法实现结果融合。系统采用bge-small-zh模型生成语义向量,利用Milvus 2.5+原生支持的BM25功能和混合搜索API,在百万级数据规模下实现50ms内的检索延迟,召回率和精确率分别提升15%和22%。文章详细介绍了从数据预处理、向量化到混合检索的完整实现流程,并探讨了进阶优化方向,为推荐系统和RAG应用提供了高效解决方案。

分享AI、区块链技术及应用,未来已来 89

建一座安全的“天空城” ——揭秘腾讯WeTest如何与祖龙共同挖掘手游安全漏洞

本文将介绍腾讯WeTest手游安全团队在游戏上线前为《九州天空城3D》挖掘安全漏洞的全过程。

wetest_tencent的博客 1119

SY6982C 7.4V锂电池1A充电模块原理图设计,已量产

在手持设备、便携工具与小型无人机等场景中,7.4V(2S)锂聚合物电池的应用愈发广泛。这类电池对充电系统的安全性、效率与兼容性提出了明确要求:需支持 USB 5V 输入、1A 安全充电,同时具备多重保护机制。本文将结合一款基于 SY6982C 的充电原理图,深入解析其电路设计与技术亮点。

不脱发的程序猿 363

建一座安全的“天空城” ——揭秘腾讯WeTest如何与祖龙共同挖掘手游安全漏洞...

作者:腾讯WeTest手游安全测试团队商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。 WeTest导读 《九州天空城3D》上线至今,长期稳定在APP Store畅销排行的前五,本文将介绍腾讯WeTest手游安全团队在游戏上线前为《九州天空城3D》挖掘安全漏洞的全过程。 《九州天空城3D》(下文简称《九州》)是祖龙娱乐的一款正版授权次世代3D飞行手游,在...

diezhuzhuo3333的博客 328

构建AI Agent驱动的智能健康管理系统

数据碎片化:健康数据分散在不同的设备和平台中,难以统一管理和分析。个性化不足:健康管理方案通常是通用的,难以根据个人的健康状况实时调整。用户参与度低:用户难以获得及时、个性化的健康建议,导致健康管理效果不佳。AI Agent是一个能够感知环境、采取行动以实现目标的智能实体。根据智能体的智能水平,可以分为简单反应式智能体和复杂适应式智能体。实时监测健康数据。获取个性化的健康建议。收到健康风险预警。

AI天才研究院 749

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

游戏服和跨服设计

在上述背景下,一款长留存,低流失的精品游戏就成了平台方,渠道商,研发方追捧的目标,设想一下,如果让所有服务器玩家通过“跨域体系”实现自由畅通交互,在此基础上,玩家可以体验到前所未有的“国战系统”——7×24小时昼夜不停服的国家战争,随时开战;对客户端连接管理来说较复杂。跨服定向玩法有战区国家玩法,虫群入侵,跨服押镖,挖矿争夺, 跨服皇城争夺,跨服国战等,如下图所示,我们可以看出这种玩法的规律:每次活动开启,跨服就会迎来一波波玩家涌入,活动一结束,玩家就会离开,4个跨服进程支持了7600在线的玩家。

weixin_51438987的博客 925

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

MMORPG游戏开发全流程文档准备指南

MMORPG游戏开发的文档准备工作非常复杂,需要覆盖项目立项、游戏设计、技术实现、美术资源、运营策略、测试计划等多个方面。良好的文档结构不仅能帮助团队成员明确自己的任务和责任,还能在开发过程中起到指导和规范作用,确保开发进度和质量的顺利推进。MMORPG开发涉及的文档种类繁多,包括从项目立项、游戏设计、技术实现、美术资源、音效设计、内容创作到运营管理等多个方面。每一类文档都承载着不同的功能,它们共同帮助团队在开发过程中保持一致性,推动项目高效进行,并在游戏发布后确保长期运营的稳定性和玩家体验的不断优化。

小宝哥Code的专栏 1723

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

轮到国产游戏统治Steam榜单

七日世界》思路是通过开发世界非核心元素如《幻兽帕鲁》的抓宠物系统(“异常物收容系统”)、自由建设系统(大世界任意建造,甚至能建设房车)以及多样化的资源探索点(以“都市怪谈”为主题)等机制,为积极性强的玩家提供了更多消耗内容的选择,同时保持了佛系玩家的游戏体验。,在笔者参与的帷幕测试中,部分玩家快速消耗了游戏内容,导致在游戏后期失去兴趣而提前退出。首先,他限制了生存游戏中核心资源的产出,这一思路在后续游戏如《黎明觉醒》和《星球重启》中得到了广泛应用,以各种不同的形式对游戏的核心资源获取的数量进行限制。

2301_80236095的博客 1884

游戏进化论:版本迭代的蜕变之路

摘要:游戏版本迭代是产品持续进化的核心动力,涵盖从BUG修复到跨平台革命的全方位更新。本文系统梳理了游戏迭代的动因(玩家需求、技术革新、市场竞争、IP扩展)、类型(热修补丁、赛季更新、跨界兼容)及完整流程(需求分析-开发测试-灰度发布)。重点探讨了内容创新(玩法、剧情、角色成长)与技术升级(引擎优化、多端适配)的协同发展,并揭示了版本更新背后的团队协作故事与商业价值。通过分析长线运营策略与行业趋势(AI、UGC、全球化),展现了游戏作为"活世界"通过持续迭代实现永续发展的蜕变之路。(14

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 1930
上一篇: Lua中string.format转义符的使用
下一篇: 在cocos2d-x中使用libcurl实现上传文件功能(quick版)
苍狼客户端
博客等级 码龄11年 26粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值