「给大家科普一下」年度项|2018年西澳大学最受欢迎的题与解

新年伊始,大家又回到工作岗位,西澳大学每周知识专栏《积累与进取|分享技能》已经陪伴大家150周了。在这里,我们精选了12个开放式的精案与您分享。


西澳大学社区Answersuwa4dcom


西澳大学QQ群2793972859


1.如何设计渲染层次?


现在我正在尝试弄清楚如何为我的项目设计渲染级别,我希望像ShaderLOD这样经验丰富的专家能够为我指明正确的方向。还有其他想法吗?谢谢你!


很好的案我为项目整理了一些LOD规则,这些规则不限于提者描述的渲染级别。一个好的LOD系统需要美术人员对资源做大量的资源分级工作,程序需要构建完整的LOD框架和辅助工具,并且每当添加功能模块时都需要考虑到LOD。


1.如何确定项目的LOD分类和性能标准


LOD,其中D代表Detail而不是Distance,意味着画面和功能的每个细节都可以进行分级,而不受距离的。


1.绩效标准是如何确定的?


在评分之前,您需要确定您的目标,您想要在模型上实现哪些性能效果和功能,以及您想要实现哪些性能目标。


经验总结


1)画质表现力和性能开销之间存在冲突。


2)需要持续维护,相关功能系统的设计必须考虑到各种图像质量。


3)最低的图像质量牺牲了可玩性,同时增加了LOD框架的复杂性,因此使用最简单、最暴力的方法来处理。


兼容性题


1)低端画质要考虑的适配题


•可能不支持定义超过8个纹理的着色器。


•可能不支持ETC2格式的地图纹理


•可能不支持OpenGLES30


2)高质量图像质量需要考虑的事项


•PBR,线性空间支持


•奇怪的错误


3)需要根据各种图像质量解决兼容性题,建立黑名单和白名单。


2.如何查看哪些内容可以评分?


优先考虑成本高的点


•后处理效果Bloom、HDR、ToneMapping、MotionBlur、DOF等。


•实时光照和阴影、水面上的实时反射


•PBR物理照明


•物理系统,例如Ragdoll和DynamicBones。


•昼夜循环、特效天气系统


考虑细节模块的LOD功能


•场景/人物/特效/相机相关/其他系统模块


感谢WenyaUWA社区提供的案。我们欢迎大家来到我们的社区进行交流。


这个案是由西澳大学提供的。任何人都可以在社区中交流。


解决方法测试光照贴图数据unity_Lightmap_HDR,然后使用该参数直接在源码中调用HDR解码算法,将纹理转换为ETC2_RGB4。


我拒绝这个解决方案。首先,alpha通道是用来存储亮度倍数的,丢弃它显然是一种损失。其次,unity_Lightmap_HDR是由不同的烘焙结果决定的值,并不是对所有场景都是固定的。也就是说,即使需要这个解决方案,也不会这样做。Alpha通道不能被丢弃,unity_Lightmap_HDR仍应读取其原始值。否则,当您改变场景时,会再次出现色差。


2.光照贴图在PC、iOS和Android上的工作方式不同。


m=1returnsRGBsRGBsRGB0305306011h+0682171111h+0012522878h;//精确版本,对于调试很有用//returnhalf3GammaToLinearSpaceExactsRGBr,GammaToLinearSpaceExactsRGBg,GammaToLinearSpaceExactsRGBb;艺术家还可以尝试将纹理亮度设置为低,然后打开灯光以提高整体亮度。很多艺术家似乎都喜欢这种做法,我们的艺术家在线性空间中设定了187左右的标准纹理亮度,并且我们在某些场景中有意使用较暗的纹理亮度。这可能就是我没有为场景打开HDR的原因。


感谢贾伟豪UWA社区提供的案。我们欢迎每个人与我们的社区互动。


另外,提者还要检查一下在实机上花费一定时间的瓶颈是否真的在物理上花费了时间,如果是100个字符,那么不能忽视的是,如果mesh数量较多,则需要花费大量的渲染时间。很大,所以首先通过UnityProfiler检查。检查实际系统中的性能瓶颈是个好主意。


最后,所有的反派都需要精确的物理计算吗?能否用射线相交、范围判断等经济有效的判断方法来替代纯粹的物理碰撞?这就需要从设计角度对主题进行妥协。


这个案是由西澳大学提供的。


酷案2由于没有办法直接调用PhysXAPI,所以最好通过优化物理引擎的性能来优化相关组件的性能。首先,使用CharacterController而不是RigidBody。那么就不要使用MeshCollider,用BoxCollider、SphereCollider和CapsuleCollider来代替,如果一定要连接Convex。当然,最好的优化是不使用物理碰撞。光线可以解决很多题,但是光线并不是免费的,光线的消耗与场景中的边数直接相关,当然,设置光线的maxDistance和LayerMask可以减少不必要的消耗。最好用一个简单的物理模型来描述题,然后自己编写代码来实现。


感谢KaiosUWA提供案。我们欢迎每个人与我们的社区互动。


url=文件/GUID-0C7A600E-7954-42B0-86EE-586A379A2CADhtm,topicNumber=d30e34269


感谢李嘉乐UWA社区提供的案。我们欢迎每个人与我们的社区互动。


8.吃鸡中的肢体冲突


由于吃鸡的同步性很强,所以经常使用帧同步,要么客户端无法直接使用物理引擎,要么状态同步时必须由服务器计算碰撞。我们该如何处理这个冲突呢?数据结构呢?


很好的案1如果让我选择一个技术解决方案,我绝不会在《绝地求生》这样的3D预览斗鸡中选择帧同步。原因如下


1)需要较强的触觉体验,玩家移动、,帧同步难以支持实时操作反馈。


2)自由视角斗鸡,没有战争迷雾,但是存在观看距离的题,我们采用帧同步的方式将所有信息广播给玩家,制作一个插件太容易了,但是,鸡斗手游没有其他玩家的位置,有插件可以弥补这一点,但它们有太多优点,本质上是不适合的。


我不确定您在题中提到的帧同步是否与我所知道的帧同步相匹配。这允许服务器基于状态同步运行物理,但实际物理完全在服务器上运行。服务器负担太大,成本太高。一台物理机器可能无法处理消耗。同时,您需要评估为大量在线玩家调整规模的成本是否可以接受。


常见做法


1)简化3D物理,仅根据上下文状态(例如命中)做出一些关键决策。然而,由于物理学中的数据计算相对敏感,浮点错误可能会导致结果不一致,并且会出现很多任务和陷阱。


2)采用2D物理系统代替3D物理系统,去掉物理计算中的高度,只进行2D碰撞,结合专业的检测流程,是一种可行的检测方案,性价比较高。


3)客户端判断,服务端验证,首先相信客户端的判断,进行客户端表现,然后服务端根据数据进行验证,这里可能会用到2D物理引擎,也可能会在其中添加一些高度等信息核心.有.判断;判断;


4)客户判断,严格的反作弊手段,封号等。当然,必须能够判断玩家是否作弊,但是判断方法可能不是实时的,也可以通过帧同步后进行回放模拟,本例采用3D,也是可以的。物理学来做这件事。


5)现在不要这样做,等到你的变得流行并赚后再添加。如果你不受欢迎,就不会有专业作弊团队来捣乱。


数据结构非常详细,你可以根据自己的需要自行设计。2D可以直接与开源2D引擎集成。


感谢贾伟豪UWA社区提供的案。


酷案2吃鸡的玩家人数通常为100人或更多。在这种情况下,必须使用帧同步来同步的数据量增加并且延迟变得显着。帧同步通常需要收集同一场景中所有玩家的输入,然后分发到每个客户端,允许每个客户端使用相同的逻辑来计算每个玩家的位置和状态,逻辑运行在客户端上,这是可能的。MOBA非常适合使用帧同步,因为每个只有10名玩家。


我觉得吃鸡还是适合状态同步。状态同步的担忧是太多的角色需要同步其状态,从而导致大量的网络同步数据。在吃鸡中,没有野怪,大家都是玩家,所以场景中的角色都是玩家。可拾取的装备需要较少的同步数据,基本上只需要位置坐标,以及大量的玩家状态数据。客户端不可见的玩家和设备不需要同步。这是因为逻辑完全运行在服务器端,客户端只需按照服务器的逻辑进行绘制即可。


说到手感题,FPS是所有类型中延迟要求最高的。如果玩家的网络不好,就很难优化到更好的情况。客户可以先预判显示效果。例如,您可以检查打击后是否有血迹。然而,数值结果仍然依赖于服务器端计算,否则很容易在插件中被利用。即使服务器判定没有命中,题也没有那么大,顶多玩家会看到几次后出现血迹,但对方不会扣除血迹。这种情况在网络环境较差的情况下最容易出现。


感谢ZFKUWA社区提供的案。我们欢迎每个人与我们的社区互动。


9、帧同步时浮点精度不一致


我们的采用了帧同步框架,在计算移动、跳跃等逻辑时不可避免地会出现浮点运算。有没有好的解决方案来修复或避免浮点数结果不一致的题,以确保在不同和不同系统上结果一致?


很好的案1一般情况下,浮点计算的位置同步不需要保持过高的精度,只需要保持2到4位小数就足够了。因此,在计算之前将浮点数乘以1000,然后四舍五入为整数,可以有效解决多端精度不同步的题。但是,请注意不要超出数字类型的最大值范围。


感谢odiecUWA社区提供的案。


优秀案2根据我们自己在帧同步方面的经验,除非你玩的是王者荣耀这个级别,否则浮点精度对帧同步的影响并不是你系统的瓶颈。如果战斗时间不长,秘密被泄露的概率很低,而彻底改变整个数字的工作量也非常大。小公司必须仔细评估自己是否能够生存。


逻辑和性能的分离是最大的题,这意味着很多Unity组件无法使用。许多重新实现都必须从头开始编写,当然,如果您想使用所有整数,则必须从头开始编写。小型公司必须仔细评估其生存挑战和完整解决方案的成本效益。


先生,谢谢您的回复。李感谢西澳大学社区。


很好的案3定点数对于帧同步来说更可靠。浮点数引起的错误可能会累积到不可接受的水平。另外,尝试回其他朋友的题。


1)网络传输采用可靠的UDP传输;


2)而且我看到其他朋友提到的逻辑和性能的分离,这是帧同步方法中必不可少的一部分,但是Unity中有很多组件不能使用的最大原因是帧同步方法被处理按当地时钟计时。必须严格按服务办理。


除非特别注明,本站所有文字均为原创文章,作者:admin

No Comment

留言

电子邮件地址不会被公开。 必填项已用*标注

感谢你的留言。。。