LiteralliJeff 发表于 2023-2-15 07:51

用 Unity 3D 开发一款运动竞速类网游,主要技术难点在哪儿?

运动竞速类网游,比如赛跑,自行车,滑冰,赛龙舟等,依靠速度判断胜负的游戏,多人同时竞速度。房间制,键盘操控。追身视角

FeastSC 发表于 2023-2-15 07:59

unity重写3D射击闯关类《幽灵射手》系列教程游戏开发教程知乎专栏https://www.zhihu.com/column/c_1269679188594348032

XGundam05 发表于 2023-2-15 08:01

物理的同步。
Unity本身不带网络底层,做靠谱同步需要有两把刷子,特别是高速运动的物体。物理相关的内容做同步非常蛋疼,缺乏底层的API不说,本身对PhyX的优化做的也不怎么好。如果非要用,一定选17年上了simulation相关api的那个,或者更高的版本。
老实说网络游戏涉及碰撞同步一直就不简单。很多竞速网游,车车根本就不做碰撞,能准确同步物理,对网络条件要求不苛刻的极少,越写实越难做。绕过自带的组件,自己写一套定制化的物理模型,也是不错的选择,就是工作量比较大。
船和车是两件完全不同的事情。浮力模型的设计实现,缺乏车那么成熟的Unity组件或者范本。想做好感觉需要很多尝试。
至于其他的滑冰,自行车之类的,每个都是完全独立的物理模型,要做到竞速,做到手感可以被调整都挺麻烦的。好在这种东西缺乏参考对象,无论对你还是对玩家来说,所以没有比较就没有伤害,做挫一点也无伤大雅。

IT圈老男孩1 发表于 2023-2-15 08:08

难点主要有两个,“键盘控制竞速类”“多人”。
1、竞速类游戏特别看重手感、操控性。

竞速类游戏玩的就是控制感。
大名鼎鼎的《跑跑卡丁车》,所有人都在按下shift的快感中无法自拔。


(顺嘴说一句,这种独特的漂移设计最早来源是《马里奥赛车》,跑跑之后又被QQ飞车抄走。所以任天堂才是世界的主宰【笑】。)
《真实赛车3》,想不到一款小众拟真向高难度的赛车游戏,竟然成为一款手机主流游戏。这届玩家不简单。


周围有人试着用Unity官方的车辆组件做赛车游戏,发现手感依然比较难调。
当然如果是赛龙舟、滑冰等其他题材的竞速游戏,可以不用做的太拟真,能做出自己的手感特色就可以。关键是“好玩”。

2、竞速类游戏的联机问题

联机这个问题看似复杂,实际也真的很复杂。
首先,不发生碰撞交互的联机竞速游戏相对很好做,直接同步显示其他人的状态就可以。
比方说奥运会100米竞速,每个人都有自己的跑道,不和其他人发生交互和碰撞。那么对每个客户端来说,自己只需要看到其他人的位置和速度即可,并不会影响其他人。
具体来说,别人只是一个虚影,别人的位置每秒向你发送15次以上就可以很流畅了。就算网络不好的情况下,也只不过是你看其他人有点跳帧。

进一步,会发生碰撞和交互的竞速联机游戏非常难做。
问题出在物理引擎方面,比如当其它人发生跳帧时,两辆车可能会互相穿透(同时出现在同一位置),大部分物理引擎都会把这种情况认为是极高速碰撞产生的,导致两辆车互相弹飞的现象。这种现象在《跑跑卡丁车》早期比较常见。
换句话说,由于物理引擎的敏感性,导致当网络出现波动时,会对玩家状态造成难以预料的后果。所以现代赛车游戏对同步问题会做细致处理,比如加入附加规则以及位置预测机制,具体就不展开说了。
另外有一些取巧的办法。
《真实赛车3》为了避免移动网络稳定性差的问题,发明了所谓的“TSM”机制,就是用一个实力和你的好友相当的AI,假装成你的好友和你比赛。这样就不需要你的好友实时在线,玩家还挺买账的:)。
而在实时性线上比赛中,为了避免互相碰撞,可以关掉“互相碰撞”的开关,让大家自己跑自己的(但能看到其他人的位置)。《真实赛车3》已经加入了实时线上比赛的机制,而且早在十年前,《极品飞车》系列就已经有类似的线上比赛了。

希望以上回答给题主带来了有价值的信息,以后可以探讨更多细节。

FeastSC 发表于 2023-2-15 08:12

技术难点是跟你的游戏设计相关的。
如果你设计追求的是真实性的物理表现,那么物理就是最大的技术难点,绝对是在原型阶段需要攻克的第一重点,如果攻克不成,意味着其他都不用想了。曾经有幸参与制作赛车游戏,这款赛车要求有真实的漂移、悬挂等模拟,开始光资料都读了老多。然后读完你还能化成自己想要的数学模型,接着用程序模拟出来,模拟出来后还有痛苦的地方在调试(物理怎么跟自己想要的表现差那么多哪?!)。所以,玩法上如果能避开真实的模拟,那么建议避开。
如果不是真实的模拟,那么提高帧率和保持帧率稳定就是竞速类游戏的首要重点了。还要做成网游的话,同步性在物理游戏里似乎也非常重要。

pc8888888 发表于 2023-2-15 08:18

- 服务端,可以选用成型的解决方案,SmartFoxServer,Photon等,都比较好地支持房间型游戏。也可以自己写MasterServer。
- 客户端,个人感觉最主要是做好操控感,这些涉及到竞速专业性的问题,比如怎么做出漂移、双飘、逆飘什么什么的效果。不同的轮胎、装备得有不同的驾驶感觉。
场景的渲染,是要做一些优化的。
车子和角色Avatar换装什么的属于是标配了,这个应该有典型的解决方案。
-联机用户之间的数据传输,车子的position和rotation是基本。另外就看希望做到什么程度了,比如要做车子之间互相挤兑碰撞、对手车子被炸飞这类效果,用Unity自带的物理碰撞的话,在联网时会很蛋疼,需要自己手动去开发联网碰撞相关的逻辑。
随便说了一些,希望对您有帮助。
页: [1]
查看完整版本: 用 Unity 3D 开发一款运动竞速类网游,主要技术难点在哪儿?