`

[转]《洛克王国》PVE改PVP的历程

阅读更多
http://bbs.9ria.com/viewthread.php?tid=75941&extra=page%3D1%26amp%3Borderby%3Ddateline%26amp%3Bfilter%3D2592000

许久没有在坛子里发贴,作为斑竹有些失责,同时也许久没有在博客中写技术相关的文字了,技术的东西不会咋会写,随便唠叨总结点算是给本版块拉拉回流吧。小朋友们千呼万唤的pvp战斗系统终于在这周上线了,而鉴于这次被pvp系统搅的晕头转向的,所以有必要缕一缕逻辑好好总结一下经验了。
  下图为《洛克王国》的战斗画面,同宠物小精灵一样1vs1的战斗模式,战斗过程中可以更换宠物:




  由于洛克王国最初公测的战斗版本是PVE模式,客户端在架构战斗系统的时候虽然考虑了一些PVP的因素预留了一些接口,但是在实际的实现过程中,由于当时公测的压力,时间比较紧,所以开发过程中还是主要以实现PVE功能为主了。在接到pvp的需求后,起先以为要做的修改客户端不会很大,但是在实际改动的过程中却还是发现了许多没有考虑到的问题,下面把实际开发过程中遇到的问题总结一下吧:

一,肯定是对PVP需求的评估。
   1.成本 客户端选择的是在原战斗系统上做修改,开发时间以及人力上相对于重新开发一个PVP系统来说,肯定是节省不少。

   2. 风险
    a. 由于客户端是在原PVE的架构上做修改,对原来已经比较稳定的战斗系统肯定会有影响,虽然比起重新开发一个PVP系统 来讲风险会高不少,但是由于在架构战斗系统之前预留过这方面的接口,所以起初评估的风险不大,只是对于测试来说会增 加不少的工作量。
  
  b. 由于最早的战斗系统是在好几个月前开发的,之后稳定下来后就没有去做过多少改动,对于代码以及最初的架构思路都有 一些生疏,所以做这种大的改动还是需要一定信心的。
  所以,在权衡了成本低但是风险较高的情况下,最终给予了充足的开发和测试时间保证版本的质量。

二,对PVP系统的逻辑分析。
  简单绘制了一个流程图(省略了等待播放动画完毕的状态,有不妥或是错误请留言指正),客户端的设计是基于战斗状 态的 队列一个一个执行处理逻辑,这里有一点要提一下,因为之前在做PVE的时候只考虑了一方战斗的状态,PVP的的话就 要考双方的战斗状态,且同时可能存在两种状态,比如宠物战死,这个时候都是等待出招状态,但同时有一方还是更换宠物 的状态。
    



三,分析PVE和PVP的不同点,明确要改动的功能点。
  1. 网络异常的处理 由于PVE可以理解为是单机战斗,不用考虑对战一方的网络异常,而PVP是需要关注对战双方的网络状态,若有一方网络异常客户端都要做异常处理,比如战斗过程中一方断网或关闭浏览器,就要退出战斗。
 
  2. 等待状态的处理 PVE不需要知晓对战一方的状态,而PVP需要同步对战双方的状态,这个中间就多了一个等待的处理。比如A向服务端提交了动画播放完毕的消息,而B由于网络延迟或是动画和A播放不同步比A慢而导致对战双方状态不同步,这个时候A就要做个等待处理,收到服务端开始下一回合的数据后才开能开始继续操作。

  虽说磨刀不误砍柴工,但即便是做了一些准备工作,但实际的开发过程中还是出了不少的叉子,有些问题也只有在实际做的过程中才会发现,比如网络异常考虑不周全,状态同步的处理遗漏或是原架构不支持,需要做调整等。由于是在原PVE的架构上做改动,虽然之前的协议数据没有做任何的改动,但是客户端的逻辑修改还是令自己有些晕头转向的,开始评估改动不是很大,但实际的修改量却远远没自己评估的那么简单,这个也反映出了自己经验的不足,所以也是个好事。

  具体的代码以及实现细节、中间遇到的一些问题就不一一累述了,这里只是简单对于原架构做改动的一次经验总结。我不是一执着追求高深技术的人,只想多学习并总结一些项目经验。一直认为,项目经验不是看个人做过的项目或是功能有多少,而是看你每次做一个项目或是功能你总结并收获了多少。这次吃过一次苦头做过总结,下次若再有其它的在原架构上做修改的需求后,也就能举一反三,可以凭借这次的经验去更准确的评估以及更完善的分析需求了。

      oliwen 原文地址:http://oliwen.blog.163.com/blog/static/3805753220112132143268/
      洛克王国地址:http://17roco.qq.com
  • 大小: 98.6 KB
  • 大小: 41 KB
分享到:
评论

相关推荐

    PVE虚拟机 镜像转换工具 (PVE中安装黑群晖等)

    标题 "PVE虚拟机 镜像转换工具 (PVE中安装黑群晖等)" 涉及的核心知识点是虚拟化技术,具体是Proxmox VE(PVE)平台上的镜像转换,以及如何在PVE环境中安装黑群晖(BlackArmor)这样的操作系统。下面将详细介绍这些...

    PVE专用的img转kvm文件

    img转kvm工具 使用方法: 用winscp登录你的虚拟机IP,把img2kvm和镜像文件一股脑的放置到root下,然后输入以下代码: chmod +x img2kvm ./img2kvm 文件名.img 100 vm-100-disk-1 上面的100表示虚拟机编号

    PVE系列教程(一)、PVE7.1.2版本系统安装

    **PVE7.1.2系统安装教程** Proxmox VE(PVE)是一款基于Debian的开源虚拟化管理平台,提供了KVM和LXC容器技术,用于创建和管理虚拟机和容器。在这个教程中,我们将详细介绍如何安装PVE7.1.2版本。 **一、制作PVE...

    pve7.0 5.11.22-4 iommu分组 pve内核编译

    标题 "pve7.0 5.11.22-4 iommu分组 pve内核编译" 指的是在Proxmox VE(PVE)7.0版本中,对5.11.22-4内核进行优化,特别涉及了IOMMU(输入/输出内存管理单元)的分组配置。这一过程是为了提高虚拟化环境的安全性和...

    pve7 debian11 docker容器克隆模板

    这个是自己在pve7下debian11配置好的docker模板,有需要的小伙伴自取,不当之处请指正。 上传到/var/lib/vz/dump文件夹下,web端local-备份-还原。这个模板无法启动,因为这会修改磁盘映像。如果要更改模板,请创建...

    pve的debian上安装向日葵,解包修改后,重新打包的结果,可以在pve的debian上进行安装

    pve的debian上安装向日葵,解包修改后,重新打包的结果,可以在pve的debian上进行安装

    PVE系统配置优化脚本

    PVE虚拟机系统配置优化脚本,可用于升级系统级资源包、配置系统展示项、修改系统能耗模式等功能

    升级pve的openssh,使其为最新的版本 改包可以离线升级

    规避openssh漏洞(CVE-2024-6387是一个影响OpenSSH的...针对pve7.x和pve8.x的版本都可以使用。 既可以在线环境下升级,也可以离线环境下升级(资源包都已经下载好了) 直接运行upgrade-openssh-pve.sh脚本即可升级!

    PVE系列教程(三)、安装黑威联通.pdf

    PVE系列教程(三)、安装黑威联通 本教程主要介绍了在PVE平台上安装黑威联通的步骤。整个过程可以分为以下几个部分:创建虚拟机、制作启动盘、上传文件、配置硬盘、修改引导顺序、安装威联通系统等。 一、创建虚拟机...

    pve7.0 5.11.22-3 iommu分组 pve内核编译

    标题 "pve7.0 5.11.22-3 iommu分组 pve内核编译" 涉及的是在Proxmox VE(PVE)7.0环境中,对5.11.22-3内核进行iommu(Input/Output Memory Management Unit)分组和内核编译的过程。PVE是一个开源的虚拟化管理平台,...

    PVE系列教程.zip

    PVE系列教程.zip

    易语言PVE格式处理器源码

    "PVE格式处理器"是易语言中用于处理特定的PVE(可能是Private Virtual Environment,私有虚拟环境)格式的数据或文件的组件或模块。在易语言中,这样的处理器可能涉及到文件读写、数据解析、虚拟化技术等多个方面。 ...

    PVE 6.2中文手册PVE 6.2中文手册

    Proxmox VE 6.2 中文手册 Proxmox VE 是一个虚拟化平台,基于 Debian Linux 开发,完全开源。它支持两种虚拟化技术:KVM 虚拟机和 LXC 容器。Proxmox VE 的设计目标是简化管理员的工作,可以单机模式使用,也可以...

    pve虚拟化平台管理员手册7.pdf

    pve虚拟化平台管理员手册7.pdf

    映泰J4105nhu PVE显卡直通 HDMI直出

    映泰J4105nhu PVE显卡直通romfile,HDMI可直出,亲测可用。 PVE显卡直通的方法网上已有大量文章,此处不再赘述。 下载本文附件,把文件拷贝到PVE的/root/下面。 进入etc/pve/qemu-server,这是一个link文件。 找到...

    修改远程登录端口.bat

    修改远程端口号,自动添加防火墙入站规则

    pve主页添加温度显示-6.2.zip

    标题中的“pve主页添加温度显示-6.2.zip”表明这是一个关于Proxmox VE(PVE)系统更新或自定义的项目,其中涉及到在PVE管理界面添加温度监测功能。PVE是一款开源的虚拟化管理平台,允许用户管理KVM虚拟机、LXC容器...

    PVE 6 离线安装CEPH-Nautilus.docx

    PVE 6 离线安装 CEPH-Nautilus 集群环境 本教程旨在解决纯内网环境无法安装配置 Ceph 集群的问题,通过搭建本地源和使用 Proxmox VE 6 离线安装 Ceph-Nautilus 集群环境,以满足内网环境的需求。 一、Proxmox VE 6...

    PVE系列教程(二)、安装网心云x85专业版.pdf

    PVE系列教程之安装网心云x85专业版 本篇教程主要讲述了如何在PVE平台上安装网心云x85专业版,包括上传x86镜像、配置虚拟机、挂载磁盘、激活x86虚拟机、绑定网心云等步骤。 一、上传x86镜像 在PVE平台上,首先需要...

Global site tag (gtag.js) - Google Analytics