我正在建立在线多人台球游戏,我正在努力想出多人物理模拟的最佳方法。我想到了三种可能的场景,每种场景都有各自的优点和缺点,我想听听那些已经实现了类似的东西,或者在多人在线游戏方面有经验的人的一些看法。多人台球游戏物理模拟
1号方案:在客户端上物理模拟:在打开播放器采取了一枪发射击和服务器电源的角度,以及服务器更新所有的客户提供这些价值,使他们能够模拟射击独立。
优点:
- 低服务器过热
缺点:与同步
- 问题。无论客户的帧频如何,客户都必须模拟精确的模拟。 (可能用一个像描述的一些巧妙的算法来解决here)
- 作弊。玩家可以通过调整物理引擎来作弊。 (可以确定使得在拍摄与其他球员的球位置结束的比较时,如果只有两名球员都在表(即不spectaculars)的骗子是那么谁?)
第二个场景:
对一个(即“主”)客户端(例如,谁拍摄过的人)进行物理模拟,然后将每个物理步骤广播给其他人。
优点:
- 没有问题同步。
缺点:
1.Server过热。每个时间步骤,“主”客户端将把所有球的坐标发送到服务器,服务器将不得不将它们广播给房间中的其他人。 2.“主人”玩家的作弊仍然有可能。
3rd场景:物理将在服务器上模拟。
优势:
- 没有可能作为模拟运行独立客户端的欺骗。
- 不同步的问题,一个模拟意味着每个人都将看到同样的结果(事件如果不是因为在网络滞后的同时)
缺点:
- 巨大的服务器超载。不仅服务器必须每秒钟为每个桌子计算30/60次物理(可能同时有100个桌子),而且还必须将所有坐标广播到房间中的每个人。
编辑 一些类似的游戏一个我做,万一有人熟悉他们是如何克服这些问题:
http://apps.facebook.com/flash-pool/
http://www.thesnookerclub.com/download.php
http://gamezer.com/billiards/
想到的另一种方法是传输速度/矢量,并且仅在与铁轨,另一个球等发生碰撞时重新传输......另外,我已经接触到的几个在线游戏在最终达成一致一旦运动停止,将所有的东西都放到正确的位置。 – JimR 2012-04-01 17:58:27
感谢您的提示。从我所看到的情况来看,这种方法可以集成到方案1中,以确保两种模拟是同步的并防止作弊。 – Alex 2012-04-01 18:32:14