我想在Unity中制作一个基于在线的小型RPG游戏,这个游戏非常小,并且没有什么特别的,只是为了学习网络的绳索。我的问题是从设计的角度来看,我是否应该创建我所有的城镇,狩猎区域,地下城和几乎所有在一个巨型场景中的单人游戏中自己的场景,并将它们放置在他们所处的位置没有彼此靠近的地方?
这将是"超过顶部"即使在像DungeonA这样的区域内没有玩家,网络也可以处理所有事情?如果我有一些标记,如果DungeonA中没有玩家可以设置像DungeonA这样的某些区域,那么我提出的最好是正确的吗?
我讨厌这个问题作为一个"你如何在全球范围内为所有网络游戏做到这一点"但如果有人对此类事情有任何经验,请告诉我你能做些什么才能做得很好。
谢谢!
答案 0 :(得分:2)
您的方法将取决于您如何打破世界,您希望创建小型环境组件。对于地下城,建筑物和城市的互连系统(想想较旧的 Zelda 游戏),单独的场景是合适的。您可以在每个人之间加载/卸载,因为在您去那个地方之前,您不需要查看某个地方的内容。对于更开放的世界风格(想想 Skyrim 或 Ghost Recon:Wildlands ),Unity的 Scenes 概念被打破了。 " 场景" Unity使用的范例假设一个" 场景"意在包含一些封闭的,明确的世界空间。来自Unity Manual:
将每个唯一的Scene文件视为唯一级别。在每个场景中,你 将基本上放置你的环境,障碍和装饰 设计和制作你的游戏。
当您加载Scene
对象时,您会加载Scene
中的所有内容,这使得它不适合开放世界的体验。解决这个问题的正确方法(通过"纠正"我的意思是它的唯一表现方式)就是动态加载靠近玩家的资产/环境。你在游戏中的#34; 场景" (就.unity资产而言)将没有所有环境对象和资产,并以类似于此的方式加载:
LoadScene
并且玩家通过菜单(或游戏的任何面貌)进入游戏世界。当玩家四处移动时,附近的环境资产(以及其他玩家)可以一件一件地装载,同时卸下远处的东西。可以而且应该使用LOD。
如果不言而喻,你会说一个小型的在线RPG"这可能意味着它足够小,可以立即加载游戏世界。了解这些限制主要由播放器的计算机设定。当你编写网络游戏时,玩家之间需要同步的唯一事情就是动态对象(移动并且难以处理的东西)。这意味着一个更大的世界会给网络流量带来更多麻烦;更多东西移动和进行互动 将。