【问题标题】:MMO game algorithm to send other player information?MMO游戏算法发送其他玩家信息?
【发布时间】:2015-03-12 17:50:46
【问题描述】:

我正在为本地比赛制作 MMORPG 游戏,我已经开始在服务器上工作,我遇到的问题是我想要一种方法来检测每个玩家看到的其他玩家,以便我可以发送关于他们周围的玩家到特定的玩家。

首先我想将一个 2d 圆形对象附加到 Player 对象并为 Data 结构中的每个玩家进行碰撞检查,但这会非常消耗性能,有没有合适的算法呢?请帮帮我!

【问题讨论】:

    标签: java mmo


    【解决方案1】:

    您可以使用矩形进行手动检查,而不是使用圆形和碰撞检测库,这很好,因为您的屏幕和游戏区域可能是矩形:

    int dist = 100;
    if (Math.abs(a.x - b.x) < distX && Math.abs(a.y - b.y) < distY) {
        // send player b to player a
    

    您还可以手动检查两点之间的距离,这就像使用圆一样,但会消除碰撞检测库的开销。

    如果您的玩家移动速度不是很快,您可以每 10 个滴答声执行一次此检查,而不是每个滴答声。

    【讨论】:

    • yh 无论我是做一个圆形还是一个矩形,我想知道在向他们发送信息之前,我是否必须检查每个玩家与每个玩家。
    • 或者如果我为数据结构编写一个好的散列函数将所有碰撞的玩家放在一个散列桶中,那会有效地解决问题吗? :)
    • 你需要一个二维的桶数组;位置 x:0-100, y:0-100 之间的每个玩家都将被放置在桶 0,0 中,依此类推。然后检查每个玩家周围的水桶。但是不要担心这一点,除非您已经测量了矩形解决方案的实际瓶颈 - 除非您当前有 1000 名玩家,否则做更复杂的事情的开销将不值得。只需使用矩形。
    • 没问题,很高兴我能帮上忙!
    猜你喜欢
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    相关资源
    最近更新 更多