`

游戏中物品的同步

阅读更多

以在背包、仓库中操作物品为例

维护到一份代码看到如下的流程:

假设现在我在背包中把物品从A格子移动到B鸽子


已经有的关键字:

物品类型:普通,特殊,消耗。。。等等

放入函数:使用物品类型掩码判断

(1,2表示步骤)

C1:从落点范围判断是否合法(比如背包格子是1-20,仓库是40-60)。如果满足,发送要移动的包给服务器。这时候UI不做更新,即不执行实际的更新函数

S1:收到包进行校验,比如是否能存放,如果是装备则如何如何(放入函数)。同步计算完后,发送确认包给C

C2:收到后执行实际的更换操作,更新(放入函数)


维护的需求如下,任务物品不能放入仓库,并且给玩家提示。两套方案

1:维持旧的结构,放的时候发一个包,靠服务器返回的一个包来说明是否可以放入。后来发现交换协议包中没有这个成功的字段

2:不发包。服务器的校验直接返回,客户端做本地判断,条件不符合就不发包。比较别扭的地方来。如果不发包,那么服务器就不会发确认包,没法执行客户端的实际"放入函数"。所以只好在C1的坐标中判断这个物品来自哪里,然后直接操作。


      另人感到很不快的是,为什么要通过落点判断呢?物品本身不是有物品类型的设置吗?只要在容器和物品间设置好掩码不就行了?现在就好比有两套的资源结构,又可以落点判断,又可以物品实际属性判断。


想起以前工作中碰到的物品操作流程:

C1:本地做一份操作(实际操作),成功后发给服务器一份通知信息,鼠标锁定

S1:收到后做一份同样操作,发一个解锁命令

C2:解锁


      这两套方案中,我本来还比较排斥第二种,现在反而喜欢了。操作物品的时候最本质的需求是两边要同步,

从代码维护上来说:

      一号方案是让服务器先做,然后自己再做。如果是这样那中间就无所谓在判断是否合法了。但是一些基本的判断你又不得不做。

      二号方案中是直接做,也不要预判断什么。因为一件物品是否能放入,怎么放入,这两个逻辑应该是内聚在一起的。比如通过掩码的方式。然后通过一个解锁命令来同步。如果再通过一些额外的点范围判断,实在是费解


      很多人会说锁会不会影响了操作?其实一样的,一号方案也要在等待服务包的更新通知。(不知道大家有没在游戏中拿起一件物品放一个位置,卡住的时候老放不下。)重要的本质是什么,是同步。即使你这个时候让玩家继续操作(影响到他刚才移物品的),也是无效的。而在实际的表现过程中,网络顺畅时(60-120MS响应),0.15-0.2秒很快就解掉锁了。

      写到这,想起其实可以对一号方案进行改进,C1中直接进行一个放入的步骤预判断,如果成功发消息请求。服务器成功后发送确认,C1再执行最终的放入。还是一分为二的做法。这样的代码你敢重用吗?

     

 

2
0
分享到:
评论

相关推荐

    冒险岛079同步124物品发型XML

    在"冒险岛079同步124物品发型XML"中,"同步"意味着这些XML文件可能是游戏服务器和客户端之间的数据同步工具,确保玩家的物品和发型信息在游戏世界中保持一致。"124物品发型"可能指的是游戏内的124种不同发型,每种...

    网络游戏-同步游戏中对象的状态的方法和系统.zip

    游戏中的对象可以包括角色、物品、环境元素等,它们的状态变化必须及时、准确地反映到所有参与者,以保证游戏的公平性和沉浸感。本资料主要探讨了用于实现这一目标的方法和系统。 首先,我们要理解游戏对象状态同步...

    网络游戏-基于游戏回档的数据同步方法和装置以及游戏系统.zip

    如果数据不同步,可能会导致玩家看到的游戏状态与实际状态不符,例如物品丢失、角色位置错乱等,严重影响游戏体验。因此,高效且准确的数据同步方法是网络游戏设计的核心部分。 三、数据同步方法 1. 准确同步:所有...

    物品ID查询器

    "物品ID查询器"是一款专为游戏爱好者设计的实用工具,主要用于查找和识别游戏中各种物品的唯一标识符,即ID。在许多游戏中,物品ID是玩家进行数据挖掘、修改或编程交互的重要参考依据。这款软件可以帮助用户快速定位...

    unity帧同步Dome下载(包含服务器与客户端)(解决浮点型数据不同步)

    Unity帧同步Demo是一个用于实现多人在线游戏中的实时交互技术的示例项目,特别针对ARPG(动作角色扮演游戏)类型的游戏。帧同步是网络游戏中一种重要的数据同步策略,它确保所有玩家在同一帧内看到相同的游戏状态,...

    网络游戏-网络同步的系统和方法.zip

    网络游戏中的网络同步是确保玩家在同一虚拟环境中获得一致游戏体验的关键技术。它涉及到多个玩家通过互联网进行实时交互,如角色移动、攻击、道具交换等,所有这些动作必须在所有参与者之间同步,以创建一个无缝的...

    基于JavaFX和MyBatis的游戏物品管理系统.zip

    基于JavaFX和MyBatis的游戏物品管理系统 内容概要 本项目是一个基于JavaFX和MyBatis的游戏物品管理系统,主要功能包括物品的存储、出售、使用、移除和购买操作。系统还引入了玩家的生命值、法力值、金币和攻击力等...

    FLex 物品分类游戏

    6. **XML数据存储**:游戏物品信息可能以XML格式存储,利用Flex的XML类进行读取和解析,便于数据管理。 7. **用户交互设计**:良好的用户体验是游戏成功的关键。Flex提供丰富的样式表和皮肤定制,以创建吸引人的...

    网络游戏-基于无线网络的物品共享方法.zip

    这种技术主要利用现代无线通信技术,如Wi-Fi、蓝牙或移动网络,实现在游戏世界中的物品交换和共享,使得游戏内的资源分布更加动态和多元化。 在基于无线网络的物品共享方法中,首先需要理解的是无线通信的基本原理...

    网络游戏-基于简单网络对时协议的网络时间同步方法.zip

    3. **交易和事件同步**:物品交易、角色状态的改变以及游戏事件的发生都需要精确的时间戳,以防止作弊和不公正的情况。 4. **多人合作**:团队协作游戏需要精确的时间同步,以便玩家可以协调行动,如开启宝箱、启动...

    Unity多人竞技类游戏源码uMOBA v1.34.zip

    3. **网络同步**:多人在线游戏的关键在于网络同步,uMOBA的源码中应包含网络通信协议和状态同步机制。 4. **用户界面(UI)**:包括英雄选择界面、游戏计分板、聊天系统等,都需要用Unity的UI系统来实现。 5. **...

    Unity游戏项目源码 unity3D RPG游戏开发包 完整版.zip

    通过研究这个项目源码,你可以学习到如何在Unity中构建RPG游戏的各个方面,包括角色创建、地图导航、战斗系统、物品管理、角色升级、对话系统等。此外,它还能帮助你了解如何组织和结构化大型项目,以及如何优化性能...

    PUN Multiplayer Add-on for Opsive Character Controllers v2.0.5

    专为 Unity 开发的网络同步解决方案,能够与 Opsive Character Controllers 和 Photon PUN 2 协同工作,实现角色和物品在网络游戏中的同步。 该插件的主要特点包括: 能够同步角色和物品的状态,确保所有玩家都能...

    C#本科毕业设计基于Unity3D引擎的网络角色扮演游戏设计与实现源代码.zip

    11. **网络同步与状态同步**:在网络游戏中,玩家动作的同步是核心问题。开发者可能使用各种同步策略,如锁定步(Lockstep)、增量同步、状态同步等,以减少延迟并保证游戏体验的一致性。 以上就是基于Unity3D引擎...

    C#开发模拟回合制游戏源码

    2. **对象模型**:在C#中,可以利用类和对象来构建游戏中的角色、物品、地图等元素。每个对象都有其属性(如生命值、攻击力)和方法(如移动、攻击)。 3. **事件驱动编程**:在游戏开发中,事件驱动编程用于处理...

    文字游戏_Java文字游戏_java_littlewop_文字小游戏_文字游戏_

    4. **数组与集合**:存储和管理游戏元素,如玩家的状态、游戏物品等。 5. **异常处理**:处理运行时可能出现的问题,保证程序的健壮性。 6. **多线程**:可能用于实现并发的游戏机制,如玩家的行动与游戏环境的同步...

    游戏修改教程 (EXE格式)

    1. 数据修改:游戏中的角色属性、物品数量、金钱等数据往往存储在内存或文件中,通过修改这些数据可以实现角色无敌、无限生命、无限资源等效果。 2. 内存搜索:利用内存搜索工具(如CE - Cheat Engine)查找并修改...

    Unity游戏项目源码 大型RPG《神启》全套源码+资源 完整版.zip

    在《神启》的源码中,你会看到一系列的C#类,它们可能是角色控制器、游戏管理器、AI行为、网络同步、UI系统等。这些脚本展示了如何利用Unity Engine API来实现游戏的各种功能,如角色移动、战斗逻辑、物品系统和剧情...

    网络游戏-游戏方法及系统.zip

    8. **经济系统**:网络游戏中的虚拟货币、交易市场和物品经济设计需要平衡,防止通货膨胀或经济崩溃。 9. **服务器架构**:大型网络游戏可能需要分布式服务器集群,通过负载均衡来处理大量并发玩家,同时还要有备份...

    Unity游戏项目源码 Ultimate MMO RPG Kit 在线 mmo rpg 游戏开发 完整版.zip

    1. **网络同步**:在MMO游戏中,玩家之间的交互需要实时同步,这涉及到网络编程技术,如UDP/TCP通信、服务器架构设计(如主服务器、游戏服务器、数据库服务器等)、数据封包与解包、状态同步算法(如Interpolation、...

Global site tag (gtag.js) - Google Analytics