【问题标题】:Efficient way to store multiplayer PvP data?存储多人 PvP 数据的有效方法?
【发布时间】:2014-05-09 23:14:40
【问题描述】:

我开始制作我自己的 Minecraft PvP 模组,但我遇到了墙,试图弄清楚如何存储玩家的数据。 mod的第一个版本是“pick-up”风格的团队死亡竞赛。 (拾取风格是当你和你的朋友决定球队并设定获胜条件时,就像一群邻居的孩子在创造一场足球比赛。)

我考虑过在组建球队时使用哈希图来存储球员姓名和球队价值(我稍后会为 2 支球队拍摄,但希望以后有更多)。当游戏开始时,我会切换到其他东西来存储球员积分、助攻、死亡等数据,并且需要保持每支球队总积分的运行总和。不过,似乎我应该能够用一种结构来做到这一点。我不确定哈希图以后会不会有用。

我还希望能够按球队对球员进行排序,并有一个记分牌来对球员进行从高到低的排名。数据需要快速访问和排序。玩家每次击杀只能获得 1 分,因此类似冒泡排序的方法可能会奏效。

我认为我在正确的轨道上,但我想看看是否有更好的方法。任何建议将不胜感激。如果有另一个 StackExchange 可以让我知道。

注意:我使用 Bukkit 编写 mod 因为它是服务器端。

【问题讨论】:

  • 我们在这里谈论的玩家数量是多少?如果它是 10,那么它的排序效率实际上并不重要(10 中的 n^2 是 100,100 大约等于 0)所以只需以尽可能最清晰的方式编写它。如果分析显示瓶颈优化
  • If I posted this kind of question in the wrong place let me know. 您可以在faqHow to Ask 找到相关信息...确实,它错误的地方。在论坛上你可能会有更好的运气。
  • 现在最多可以容纳 32 名玩家,我想稍后再做 64 名玩家,但现在对于普通/香草的我的世界服务器来说玩家太多了。
  • @MDeSchaepmeester 这个问题很好地属于接受主题的practical, answerable problems that are unique to software development。想知道保存软件信息的最佳方式是软件开发所独有的。它可能有点开放讨论,但我怀疑甚至有 10 个很好的答案。

标签: java minecraft bukkit


【解决方案1】:

我建议创建一个 Team 班级,有一个 ListMap 的团队来容纳他们。在创建团队时和游戏过程中无需使用不同的容器。

然后您可以在您的Team 类中输入ListMap 的球员、球队的得分、球队可能需要保持的任何其他信息以及访问这些信息所需的所有方法。

Keep it simple.

就排序而言,Collections 排序应该适用于这么多玩家。除非你认为你可以实现更快的排序......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 2019-05-13
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 2020-10-29
    相关资源
    最近更新 更多