问题标签 [matchmaking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
502 浏览

c# - Unity 简单游戏的服务器逻辑

我是游戏开发的新手,能否请你给我一个建议,告诉我如何在 Unity 上为 iOS 和 Android 平台上的游戏实现服务器。

有一项任务:在线 1 对 1 乒乓球游戏,您可以在其中下注您的游戏内货币。有(例如)3 种游戏模式,下注 5、20 和 100 个硬币。玩家选择他想玩的赌注并排队,然后第二个玩家排队等待相同的赌注,并自动为他们创建一个房间,他们可以在其中互相对战,最多可赢 10 分。期望通过游戏的技巧/经验来实现对手的选择。所以初学者和初学者一起玩,经验丰富的(服务器上的逻辑)。同样,房间应该是自动生成的。大厅不应该有可见的房间列表,只有赌注的选择和对手的期望。获胜者获得全额投注(不收取任何费用)。必须有一个数据库来保存每个玩家的结果和设置。通过社交网络和电子邮件进行授权。防止作弊者是一个低优先级。

我是如何计划的:所有物理和逻辑都发生在客户端。服务器为等待对手的玩家创建房间,并通过 UDP 提供平台位置交换,并通过 TCP 提供重要消息/事件。服务器端将没有游戏物理和逻辑。此服务器将连接到数据库以保存信息、排行榜和收集的硬币数量等...

主要任务: Unity 的 C# 服务器 在服务器上拥有自己的逻辑 使用数据库的能力。

我想使用 Photon 服务器来完成这些任务,但我不明白是否可以绑定数据库,例如 MySQL,并在服务器上处理最少的逻辑,这有可能吗?除了Photon还有什么服务器适合这个项目?(最好是免费的)。我会很高兴得到一些帮助并找到解决这个问题的正确方法。

谢谢。

0 投票
1 回答
70 浏览

ruby - Ruby:将数组划分为 2 个具有最接近平均值的数组

背景:我正在为一个小型多人视频游戏项目开发“匹配系统”。每个球员都有一个从0-10的排名,每支球队有4名球员。我试图找到一个平衡球队的好方法,让他们的平均排名尽可能接近,比赛尽可能公平。

我目前有缺陷的方法如下所示:

如果等级已经非常相似,这可以很好地工作,但这不是解决这个问题的正确方法。例如,它在这样的情况下失败:

这导致了非常不公平的团队:

相反,我希望这种情况下的团队是这样的:

0 投票
1 回答
436 浏览

python - 机器学习算法来查找相似或匹配的记录?

我有一个数据集,其中包含特定笔记本电脑(例如 Ram、硬盘)的记录/配置。现在我想创建一个算法,可以告诉我今年哪台笔记本电脑/台式机最接近该配置。我想根据最接近的匹配给出 3 个推荐?我应该使用哪种 ML 算法,最好的方法是什么?

0 投票
1 回答
67 浏览

php - 在用户中止匹配之前执行 SQL 查询

我创建了一个带有 1v1 配对系统的网站。

以下是它的工作原理:

如果我单击查找对手,它会在数据库中更改 matchmaking=1。

但是有一个问题,如果用户在网站真正找到对手之前点击“查找对手”按钮然后退出,则对手匹配不会重置为 0。因此,如果另一个用户来了,他可能会与一个不活跃的用户配对。

所以我认为(但我不确定)我需要一个系统来检测用户何时单击返回按钮。目标是获得一个无故障配对两个和两个用户的防故障系统。任何帮助表示赞赏。

索引.html

matchmaker.php(简而言之)

0 投票
1 回答
522 浏览

c# - Firebase Realtime Database - Matchmaking using transactions = High download usage

Problem

I'm using Firebase Realtime Database (for Unity) to manage the server side for a turn based game but I have a problem with my matchmaking... a high download usage.

Every online game have 2 base states to avoid more than 2 players join a game: Created and Joined

  • Created: A player try to join a game, if can't find one a new game will be Created
  • Joined: A player try to join a game, if find one change the state to from Created to Joined

I'm using RunTransaction to prevent more than 2 players from joining a game, but I checked that the latest data was not fetched from the database because of the local cache, adding keepSynced over my matches-{lang} child node will always have the latest data but naturally this produces a high download usage.

Question

  • Removing keepSynced players will have locally cached information for matches-{lang}, can I trust that by doing this there will be no more than 2 players per game? *Transactions are supposed to avoid this kind of problem.
  • Is there a way to avoid the local cache for a request and thus always get the updated data?
  • Could the best solution be to move the games to another node to reduce the size of the matches-{lang} node?

Thanks!

0 投票
2 回答
96 浏览

javascript - 尝试针对当前用户选择一个随机用户以匹配两者具有相同的角色

我目前正在尝试为我的不和谐代码创建某种匹配命令。

前半部分很好,但后半部分让我很头疼。例如,为了解释我希望代码如何工作,有许多用户具有相同的角色,并且使用此命令,我希望它选择两个用户。一个是我(使用命令的用户),另一个是列表中的随机数。

我得到了它的工作,但有时我可能会被选为第二个成员,如果可能的话,我想将自己排除在列表之外。考虑一下我自己寻找随机决斗。

选择成功后,该命令将删除队列角色并添加新的匹配角色。我希望我的解释清楚。提前致谢!

0 投票
2 回答
144 浏览

java - 匹配大多数可能组合的算法

我目前正在努力为我的配对系统编写算法。对于对数学一无所知的人来说,这可能是孩子们的游戏,好吧,我不知道。

让我们看下面的例子:

一个大厅正好由8 名玩家组成。
队列中有 9 方。派对规模为:1、6、3、8、2、1、5、3、2
。算法需要从这些派对中创建尽可能多的完整大厅。

可能只有满员的大厅。因此,可能存在无法匹配的各方。然后,那些将等待新的政党进入队列。

我当前的代码确实将各方与大厅匹配,但它缺乏找到最佳组合以找到尽可能多的完整大厅的功能。

示例:大厅大小正好为 7,派对:2,2,4,3,1,5 -> 2,5 和 4,3 可以匹配,但是 2,2,3 和 4,1,5 不能匹配被匹配。

我很感激任何帮助。

我当前的代码:

0 投票
0 回答
214 浏览

redis - 后台匹配玩家

我想进行匹配系统设计,以便一些用户可以在我的后端服务中匹配。

我有过滤器可以搜索,

  • 按名称过滤
  • 将来按任何属性过滤
  • 地理过滤器(带有 lang 和 long)
  • 有兴趣的过滤

所以就像,我喜欢纽约的冰淇淋,如果有任何一个喜欢冰淇淋并且住在纽约的用户,我们应该匹配!当然,会有很多用户。还有一件事,我喜欢冰淇淋五秒钟,我可以把我的喜欢换成另一件事。

我喜欢冰淇淋 5 分钟,而不是换其他东西。所以当我改变时,我不应该再匹配了。

这个用户当然可以匹配最佳用户,与另一个用户具有最高的共同兴趣百分比。这种配对搜索可能会改变,并且会是暂时的。

是否有任何文章、书籍或任何东西可以帮助我在我的后端服务中进行配对系统?

我认为 redis 会很好地满足这些需求,但我不确定。将用户聚集到同一个队列。我可以通过网络请求从客户端获取信息,但我不知道如何处理高用户流量并将它们与最适合的用户匹配。当然,我的系统将是一个可扩展的系统。

如果用户等待太久,将会出现饥饿!

我想我会使用带有 websocket 的 Spring/Spring 引导应用程序。

谢谢你的帮助!

0 投票
0 回答
41 浏览

python - 从 20 多名玩家中找到最均匀的 5V5 比赛

我正在尝试为我的英雄联盟大学俱乐部制作一个 python discord 机器人,它将让玩家一起组成 5V5 团队,每小时玩一场比赛。

到目前为止,我已经设法格式化一个看起来像这样的列表

[[UserName1, Rankvalue1],[UserName2, Rankvalue2],....][[SantyMax1, 1000],[SantyMax2, 1500]]填充实际用户数据时。

此列表适用于对机器人发出的消息做出反应的每个用户,因此它应该有 20-50 名玩家。

我的问题是,我如何制作具有接近平均排名值的 5V5 大厅?

活动的目标是让你在俱乐部结识新朋友的休闲游戏,所以我不希望前 10 名球员只在他们之间进行匹配。

我的想法是用原始数据集找到所有可能的球队排列,然后找到排名值最接近的两支球队,在两支球队之间创建一场比赛并从原始数据集中取出所有球员,然后冲洗并重复直到剩下不到10名玩家,但我不知道该怎么做。

0 投票
0 回答
25 浏览

amazon-web-services - 使用 AWS 创建匹配系统

有没有人初步了解如何使用 AWS 基础设施创建媒人系统?不幸的是,由于初始运营成本,AWS Gamelift 不是一个选项。

场景:当用户进入某个实例中已经存在的房间时,Loadbalance 需要将其发送到该特定实例。如果它在任何实例中都不存在,Loadbalance 可以将它路由到任何需求低的实例。

是否可以在 LoadBalance/Auto Scale 中进行任何配置来模拟匹配的行为,或者我是否需要创建一个服务来执行 Loadbalance 的工作并通过 AWS 开发工具包管理 AutoScale?