状态同步和帧同步
前言所谓同步,就是要多个客户端表现效果是一致的,例如我们玩王者荣耀的时候,需要十个玩家的屏幕显示的英雄位置完全相同、技能释放角度、释放时间完全相同,这个就是同步。就好像很多个人一起跳街舞齐舞,每个人的动作都要保持一致。而对于大多数游戏,不仅客户端的表现要一致,而且需要客户端和服务端的数据是一致的。所以,同步是一个网络游戏概念,只有网络游戏才需要同步,而单机游戏是不需要同步的。 正文一、状态同步和帧同步的区别 最大的区别就是战斗核心逻辑写在哪,状态同步的战斗逻辑在服务端,帧同步的战斗逻辑在客户端。战斗逻辑是包括技能逻辑、普攻、属性、伤害、移动、AI、检测、碰撞等等的一系列内容,这常常也被视为游戏开发过程中最难的部分。由于核心逻辑必须知道一个场景中的所有实体情况,所以 MMO 游戏(例如魔兽世界)就必须把战斗逻辑写在服务端,所以 MMO 游戏必须是状态同步的,因为 MMO 游戏的客户端承载有限,并不能把整张地图的实体全部展现出来(例如 100 米以外的 NPC 和玩家就不显示了),所以客户端没有足够的信息计算全图的人的所有行为。 具体到客户端和服务端通信上,在状态同步下,客户端更像是...
Unity 的 ScrollView 组件
前言Scroll View 滑动视图 相关参数详解: Scroll View 上的【ScrollRect】 组件: 组件 功能 Content 滑动的内容 (所有需要滑动展示的内容) Horizontal 是否支持左右滑动 Vertical 是否支持上下滑动 MovementType 滑动类型 ▶ Unrestricted 不受滑动内容边界限制 ▶ Elastic 带边界回弹的 (Elasticity 弹力) ▶ clamped 边界夹紧 Inertia 是否支持滑动惯性 ▶ Deceleration Rate 减速率 ,我感觉就是惯性的大小 scroll sensitivity 滚动的灵敏度 Viewport 视口 ( 一般是 Content 的父物体,带 Mask 遮罩后的展示区域) Horizontar Scrollbar 左右的滚动条 ( 连接的滚动条必须放在 Scroll View 下 ) Vertical Scrollbar 垂直的滚动条 ( 连接的滚动条必须放在 Scroll Vie...
C# 新特性
前言在 C#8.0 中新增了两个新的特性,System.Index 及 System.Range,这是借助对应的两个运算符 ^ 及 ..,让我们很方便就可以获取序列中某个或一段元素。 正文System.IndexSystem.Index 表示索引类型,^ 指定的索引是相对于序列尾端。如 ^2 表示从序列尾端、从右至左的第二个元素。这里始终记住 ^x 等价于 list.length - x ,所以如果代码写成 list[^0],那么等价于 list[list.length-0],结果就会抛出异常。下边举例说明。 123456789101112131415161718var list = new[]{ " 爱 & quot;," 情 & quot;," 公 & quot;," 寓 & quot;," 曾 & quot;," 小 & quot;," 贤 & quot;," 胡 & quot;," 一 & quot;," 菲 & quot;," 吕 & quot;...
Unity 设置碰撞器之间不碰撞
前言做游戏时,有时候需要让同一个地图的两个敌人不互相碰撞,但是两个人都有碰撞器,能站在地上。这个功能是如何实现的呢?答案就是设置 layer。 正文当点击 Hierarchy 窗口中的某个对象时,在 Inspector 窗口就可以看见 Layer 选项 你可以修改或创建该对象的 Layer,使得某两个对象的 Layer 相同或不同,比如,我可以设置两个敌人都在 Enemy 的 Layer 中,这时候再进入:Edit->Project Settings…->Physics 2D(3D 项目选择 Physics)可看到如下窗口选项: 只要把 Enemy-Enemy 之间的那个勾取消掉,即可使同在 Enemy 中的对象互不碰撞: to be continued…
科研伦理与学术规范答案
前言这里是科研伦理与学术规范答题。 正文    已经认证支持的 Universal RP 版本是 10.2.2。点击 install 进行安装。打开 UnityARegistry 时有时候会存在下面的报错,这是因为网络的问题,可能需要科学上网。 2. 创建渲染管线的 Pipeline点击 Project 下的加号创建新的渲染管线,Rendering -- Universal Render Pipeline -- Pipeline Asset(Forward Renderer)如下图, 使用默认的命名方式命名并把他们归纳在新的文件夹下。 点击窗口 Edit -- Project Settings 打开设置页面选择 Graphics 给可编辑渲染管线设置中添加刚才新创建的 URP Pipe...
如何实现一个强大的 MMO 技能系统
1. 如何实现一个强大的 MMO 技能系统——序章前言技能系统可以说是游戏中广泛存在而又最重要的系统了,它是整个游戏战斗体验的核心。一套强大的技能系统可以让游戏的策略性,可玩性得到极大的提升。然而技能系统牵涉到的模块非常多,又会面对策划各种各样的奇葩需求,同时技能模块中很多系统的设计不仅仅对程序员的编码能力提出了一定的要求,而且还需要程序员对游戏机制有着深入的理解。可以说要实现一套强力的高可用高扩展的技能系统还是有一定复杂度的。 如果作为一个游戏玩家,谈论到技能系统,我们一定会对 War3 的技能编辑器印象深刻,通过设计一个高扩展的技能系统编辑器,它打造了无数的经典游戏。各种对战地图,RPG 守图,TD 塔防,趣味闯关,甚至产生了其中最经典的风靡全球的 Dota,为我们展示了 War3 技能系统的强大。后来 Valve 甚至因此专门开发了 Dota2,而且它提供了更强大的地图编辑器,基于该编辑器开发的自走棋更是开创了一个新的游戏品类。这就是技能系统所展现的魅力。 如果论网络游戏领域技能系统之集大成者,相信魔兽世界,守望先锋,Dota2 都可占得一席之地。深入玩过这几款游戏的话,都...
NuGet 配置微软官方中国镜像
前言NuGet 配置微软官方中国镜像 正文NuGet 微软官方中国镜像地址: https://nuget.cdn.azure.cn/v3/index.json 打开 Visual Studio => 工具 => NuGet 包管理器 => 程序包管理器设置 找到 “Net 包管理器” => “程序包源”,点击“+” 新建项,将地址 https://nuget.cdn.azure.cn/v3/index.json 填写到源上。 在搜索程序包的时候使用刚新建的配置就行了。 to be continued…
NewtonJson
前言Newtonsoft.Json 介绍Netonsoft.Json 是一款 .NET 适用的 Json 插件,可以将 C# 中常用的数据类型序列化成 json 格式,使用时再反序列化对应的类型即可,包括 Dictionary、List 甚至 class 类都能很简单的进行序列化和反序列化,十分好用。 一、下载 进入官网( https://www.newtonsoft.com/json )点击 Download。 直接点击 Json 跳转到 github( https://github.com/JamesNK/Newtonsoft.Json/releases ) 。 跳转到 github 后可选择下载 dll(第一个 zip) 或者源码。 二、导入项目在 u3d 工程中创建文件夹 Plugins ,将下载的 zip 中 Bin/netXX/Newtonsoft.Json.dll 以及 .xml 文件拖到 u3d 工程 Plugins 中,其中 xml 为注释,可拖可不拖,反正官网有文档和小例子。 ** 附 **: 官方文档:https://www.newtonsof...
VysorPro 破解
前言Vysor 是一款谷歌浏览器的插件,能够很好的连接安卓手机进行电脑端查看与操控手机。 正文用谷歌(Chrome)应用商店 搜索 vysor 下载应用即可;打开 vysor,用手机 USB 连接电脑,打开 usb 调式链接成功界面如下:但是看着这个 vysor 很模糊,不清楚,所以搜了一下,要修改一下 uglify.js 文件C:\Users\ 用户名 \AppData\Local\Google\Chrome\User Data\Default\Extensions\gidgenkbbabolejbgbpnhbimgjbffefm(vysor 沙盒名称)\2.1.5_0\uglify.js查找 Account,找到如图的位置,一共有两个 !1 的变量,将前一个变量更改为 1 就行了 如图;保存文件,重启 vysor然后设置一下两个变量就行了 to be continued…
