Unity3D大地图建议 - 有多大太大了?

Min*_*eld 0 c# boo terrain unity-game-engine

使用Unity3D引擎.我正在使用Unity的标准网络制作多人游戏.如果服务器拥有25-50名玩家,建议使用哪种地图尺寸?在它对于有效的游戏玩法来说太大之前,我可以制作一个非常详细的地图有多大?如何优化大型地图?任何想法和建议都会很棒,我只是想学习,在谷歌上找不到任何关于这个的东西:D

*我的地图被分成不同的部分.

Max*_*kov 5

地图本身的大小(以单位为单位)与性能无关.请记住,Unity(与任何其他游戏引擎一样)使用浮点数来表示几何,当浮点值过高或过低时,事情会变得有趣.

重要的是您的逻辑,网络和渲染引擎必须经历的数据量.这些是不同的东西,甚至是逻辑/网络数据,对这些数据的限制在很大程度上取决于游戏的架构.

让我们谈谈网络.在那里,两个参数对您的限制至关重要:带宽和延迟.带宽是您可以传输多少数据,延迟是多快.好的,这个解释令人困惑.想象一辆卡车装满了从一个城市到另一个城市的硬盘驱动器:它拥有巨大的带宽,您可以通过这种方式传输整个数据中心.但是信号传播的等待时间是几个小时.另一方面,来自这些城市的两个不同的人可以跳上气球,在夜空中看着对方并打开和关闭手电筒.通过这种方式,他们只能交换一点信息,但具有尽可能低的延迟:你不能比光更快.

这还取决于您的网络如何工作.例如,RTS游戏通常使用锁步多人游戏架构,可以在数千个单元上运行,但只会在用户之间交换有限数量的数据:他们的输入命令.另一方面,第一人称射击游戏很大程度上依赖于延迟(锁定踩踏可能会造成伤害):当你跳跃并发射火箭发射器时,10毫秒比你说你的部队攻击要重要得多.因此,网络逻辑的组织方式不同:每个玩家的计算机预测会发生什么,但中央服务器对实际发生的事情有权威.当然,我现在正在编写的只是可以使用的架构的一般示例; 选择正确的联网方式非常困难,但非常有趣和创造性的任务.

现在,逻辑本身.实际上,现代游戏中使用的大多数游戏逻辑在cpu要求方面都相对简单,除非它是物理或AI.在多人游戏中使用物理技术本身就很棘手,因为同步问题(还记得花车吗?); 通常,可以影响谁胜谁输的实际逻辑非常简单:水平几何是完全静态的,角色使用简单的逻辑移动而没有真正的物理力,物理通常仅限于碰撞检测.当然,你会看到许多以物理为基础的视觉材料:被杀死的敌人摔倒,汹涌而来的爆炸声; 但这些通常在不同的计算机之间不同步,并且实际上不会影响游戏本身.

最后,渲染.在这里,存在许多不同的约束.要告诉他们所有这些,我将不得不在不同的设备上描述Unity的整个渲染管道,这显然超出了这个问题的范围.谢天谢地,还有另一种方式!而不是在理论上推理这个限制,而只是一个实际的原型.在场景中放入不同的游戏资源,在目标设备上运行它并查看它的执行情况.调整,重复!这些游戏资产可能完全丑陋或无关紧要; 但是,它们必须具有与您在真实游戏中使用的技术属性相同的技术属性:多边形的数量,纹理的大小,着色器等等.例如,假设您要创建COD像多人射击游戏.为了提出你的渲染要求,只需使用NxN纹理放入N个环境模型,每个N个多边形纹理,使用N骨骼放入N个字符和一些骨架动画,并且不要忘记一些可以模拟CPU强度的假逻辑所以你的性能测量会更加真实.当然,它不会给你一个最终的图片,但它将是一个很好的开始,在你开始制作大量的艺术资产之前,这样做很棒.

总的来说,游戏性能优化是一个非常广泛和有趣的主题,并且不可能给出这样一个问题的精确答案.