找回密码
 立即注册
查看: 212|回复: 0

网络游戏开发实战:MMORPG如何实现网络同步

[复制链接]
发表于 2023-2-9 10:31 | 显示全部楼层 |阅读模式
前言

在很多开发者的眼里,网络游戏是如何实现玩家同步,这点一直很神秘,特别是没有做过大型网络游戏项目的小伙伴,今天我们一起来分享一下网络游戏是如何来实现多玩家同步的。网络游戏同步,从技术方向来说有两个,一个是状态同步,一个是帧同步。
对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀!


1: 服务器基于帧率来迭代游戏逻辑


2: 服务器上跑游戏地图


服务器上跑地图,要结合客户端做一个地图编辑器,地图编辑器导出地图数据给服务器。




3:玩家行走时,服务器如何同步?
服务器上的地图数据,寻路导航模块做好以后,就可以独立的让游戏角色在地图上移动了。那么有一个很经典的问题就出现了,这也是很多小伙伴搞不懂的一个点,服务器上游戏角色每次移动的时候,是否要把位置同步给客户端呢?答案肯定是不用,也没有必要。那么什么时候同步位置,客户端有如何处理呢?我们一起来分析详细的过程。


4: AOI技术: 如何查找感兴趣的其他玩家。
AOI算法主要由两个方向,九宫格与十字链表。今天来给大家分享九宫格算法。九宫格算法其实非常简单,如图:


我们对整个地图,用一个个视野块来划分(蓝色线框为一个块,和地图块是不一样的), 以玩家所在的区域为中心,周围一圈就是这个玩家的AOI区域形状,先确定把地图分成几x几的视野块, 以多大的视野块来地图合适呢?确定视野大小, 可以根据摄象机来的视野来预估。摄像机的视野多宽,我们大概预估一下计算出来视野块大小。九宫格算法还有一个优势, 对"我"敢兴趣的玩家在九宫格里面, 我感兴趣的玩家也在九宫格里面。每个格子负责维护它里面的玩家,这样我们就可以快速的找出来"我"感兴趣的玩家,和对"我"感兴趣的玩家。
当玩家移动的时候,如果我们会发生了AOI区域的变化,如图: 新的AOI为红色框。




好, 今天MMORPG 状态同步要解决的主要的核心问题,就写到这里,下次再写帧同步。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 08:36 , Processed in 0.089981 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表