今天项目里的一个错误被揪出来了。
C=客户端
S=服务器
首先C选择一个点,发包给S;S收到后开始模拟行走,同时C也在行走,也就是说是两边都在各自模拟。起先这样设计的意图有两个
1)减少客户端的发包量,类似的一个是矢量包的计算
2) 防止加速外挂
从1)来说,确实可以减少包的量,但是是建立在用户鼠标点击是不改变方向的情况下。其实作为上行包来说,每秒多发几个包是可以接受的。重要的是S广播时候包的减少
从2)来说,这种屏蔽加速外挂靠的是一个匀速的模拟,但是并不是这样做才可以杜绝加速,关键点不在这里。
这样两边同时模拟带来的问题最严重的就是用户体验感的超差。最根本的原因是,两边同时模拟,当任何一方改变状态的时候,对方仍然以前之前的状态在进行操作,这个时候谁的数据准确?S吗?还是C的体验为优先。而且有很多因素可以加剧这种情况:
1)网络稍微慢点,网络传输的延时
2)C或者S因为未知原因任何一方卡了一下
假入人物从A1跑到A10,C端看到当人物在A5的时候,选择拐弯行走。这时候A5是作为起点,但是这个时候可能因为1),2)的原因(或者单单只要普通的网络延时),位置不准确(服务器可能已经走到A8)需要强制性的同步。这样的话,C的一些体验感可能就很郁闷了。。
所以在做同步上的同学切记,状态必须以一方的做为一个标准。
分享到:
相关推荐
总的来说,"mmo_game_zinxV4.0"是一个集成了用户登录、世界管理、社交互动、位置同步等功能的MMO游戏服务器解决方案。它不仅展示了游戏服务器的基本架构,还揭示了处理大量并发连接和实时同步的技术挑战。对于游戏...
为了解决这个问题,游戏开发者通常采用两种主要方法来同步角色移动。 第一种方法是调整路径长度(S)。当网络延迟导致位置差异时,游戏会改变落后或提前的客户端角色行走的路程。但由于A*算法生成的路径是预先计算...
- **跟随相机**:在MMO中,通常需要一个能跟随角色移动的动态相机。这涉及到对相机的位置和角度的实时调整,确保玩家始终能看到角色的动作。 - **平滑缩放**:随着角色在游戏世界的移动,相机可能需要进行平滑的...
1. 航位推测法是一种导航方法,它被广泛用于船运、航空和 最新的移动机器人方面。本质上,就是根据物体前一个时刻 的位置和它所行走的距离与方向...程序中通常利用这种方法来根据上一次实体状态预测实体的下一个状态。
通过这个"PtRPG"项目,我们可以深入理解cocos2d-x与Photon的集成,学习如何在cocos2d-x中构建一个基本的MMO游戏框架。同时,这只是一个起点,实际的MMO游戏还需要考虑更多复杂问题,如安全性、负载均衡、服务器架构...
"Ultimate MMO RPG Kit" 是一个专为开发在线MMO RPG游戏设计的工具包,它包含了各种预设、脚本、系统和资源,旨在帮助开发者快速构建大规模多人在线的角色扮演游戏。 该工具包的核心知识点包括: 1. **网络同步**...
3. **游戏世界与地图**:MMO游戏通常有一个庞大的开放世界,涉及地形生成、动态加载、导航网格、碰撞检测等技术。 4. **AI与战斗系统**:游戏中的NPC(非玩家角色)需要有自己的行为逻辑,而战斗系统则需要处理伤害...
"mmo_game_zinxV2.0"是一款基于Golang语言开发的大型多人在线游戏(MMO)服务器框架,其主要目标是为游戏开发者提供一个稳定、高效且易于扩展的后端解决方案。在该版本中,已经实现了关键的游戏服务功能,包括用户...
《Flash MMO RPG地图编辑器与DOME解析》 在游戏开发领域,特别是大型多人在线角色...此外,对于想要涉足游戏开发领域的初学者来说,分析和研究这样的项目是一个宝贵的学习机会,有助于深入理解游戏开发的各个环节。
本篇文章将深入探讨如何利用Unity3D与PhotonServer共同构建一个MMO Demo,以供学习和参考。 首先,Unity3D是基于C#语言的,它提供了丰富的图形渲染、物理引擎、资源管理等工具,使得开发者能够专注于游戏逻辑的设计...
Unity MMO RPG Kit是一个专为Unity设计的游戏开发套件,包含了创建大规模多人在线游戏所需的核心元素,如角色系统、网络同步、地图探索、战斗机制等。通过此资源包,开发者可以快速搭建游戏框架,减少重复工作,专注...
《Unity MMO游戏开发视频教程详解》 Unity引擎作为全球最流行的3D游戏开发...无论是初学者还是有一定经验的开发者,都能从这个系列教程中受益,深化对Unity引擎和C#语言的理解,以及MMO游戏开发的独特挑战和解决方案。
在游戏开发领域,"mmo"通常代表大型多人在线(Massively Multiplayer Online)游戏,这类游戏允许成千上万的玩家同时在一个虚拟世界中互动。然而,根据标题和描述,这里提到的"mmo"可能是一个简化的版本,用于教学...
赛钛客MMO7鼠标驱动x64版本
"Go-go分布式游戏服务器架构基于内存mmo"这个标题暗示了我们正在探讨一个使用Go语言构建的,专为大型多人在线(MMO)游戏设计的高性能服务器架构。以下是关于这个主题的详细知识点: 1. **gonet 游戏服务器架构**:...
"mmo_game_zinxV3.0"项目正是这样一个专注于大型多人在线(MMO)游戏服务器的解决方案,它采用zinx作为核心框架,实现了用户登录、世界管理、世界聊天以及玩家位置同步等一系列关键功能,为开发者提供了一个强大而...
本文将深入探讨基于"mmo_game_zinxV5.0"的大型多人在线(MMO)游戏服务器设计与实现,主要涉及用户登录流程、世界管理、世界聊天、玩家位置同步等多个核心功能。 首先,用户上线登录流程是游戏服务器的基础。该流程...
本项目“11-MMO服务器-AOI算法”是基于Golang实现的,利用了zinx框架来构建一个高效、可扩展的游戏服务器。 一、AOI算法详解: AOI算法的核心思想是将游戏世界划分为多个小的区域,每个玩家只关注自己周围有限范围...
Zinx是一个用Golang编写的轻量级网络框架,特别适合用于MMO(大型多人在线)游戏服务器的开发。Golang以其并发性能强、内存管理高效、语法简洁等特性,成为了游戏服务器开发领域的新宠。本文将深入探讨Zinx框架如何...