Juste matchmaking pour les jeux en ligne
La plupart des jeux en ligne arbitrairement de former des équipes. Souvent c'est à l'utilisateur, et ils vont choisir un serveur rapide avec un emplacement libre. Ce comportement génère des équipes non et les gens rage quit. Par le suivi d'un joueur de la statique (en tout ou statiques qui peuvent être réunis) comment pouvez-vous choisir les équipes qui sont aussi justes que possible?
Ces statistiques du joueur quelque chose de simple et scalaire? c'est à dire faire ils ont quelques "niveau de compétence", ou ont-ils des compétences mappé à travers de multiples critères?
Wong quelles que soient les statistiques qui peuvent être réunis.
Wong quelles que soient les statistiques qui peuvent être réunis.
OriginalL'auteur rook | 2010-07-03
Vous devez vous connecter pour publier un commentaire.
L'un des plus bien connues des systèmes de Microsoft, qui est TrueSkill algorithme.
Personnes ont également tenté de s'adapter à la Système Elo pour l'équipe de matchmaking, même si c'est plus conçu pour les 1-v-1 paires.
Microsoft Research est en fait l'un des meilleurs pôles de recherche dans son domaine - le reste de la société n'est pas toujours suivre.
OriginalL'auteur Amber
Après ma réponse précédente, j'ai réalisé que si tu voulais vraiment faire de la fantaisie que vous pourriez utiliser une vraiment simple, mais puissant idée: Chaînes de Markov.
Intuitive, l'idée derrière l'utilisation d'une Chaîne de Markov va quelque chose comme ceci:
Cette idée a par exemple été utilisé avec succès pour mettre en œuvre la page de Google rang de l'algorithme. Pour décrire comment vous pouvez l'utiliser de considérer les éléments suivants:
le nombre de compétences que chaque joueur ait une fois que la chaîne de markov est parvenu à un équilibre. C'est très robuste de mesure de chacun des joueurs de compétences à l'aide de la topologie de la victoire/perte de l'espace.
Quelques mises en garde: il y a plusieurs problèmes lors de l'application, directement, le plus gros problème va être séparées des réseaux trophiques (qui est votre chaîne de markov ne sera pas irréductible et donc la puissance de la méthode ne sera pas garantie à converger.) Heureusement pour vous, google a résolu tous ces problèmes et la mise en œuvre de leur algorithme page rank et tout ce qui reste pour vous est de regarder comment ils contourner ces problèmes, si vous êtes si incliné.
OriginalL'auteur ldog
Un autre moyen serait de créer simplement une liste de joueurs à la recherche pour les matches à un moment donné, triés par rang du joueur. Une fois que vous avez atteint suffisamment de personnes pour commencer un nouveau match (ou peut-être, deux de moins que le nécessaire), le groupe comme tel:
etc. etc. etc. jusqu'à ce que vos équipes sont remplis.
Si vous avez décidé de commencer un nouveau match avec moins que le nécessaire, puis ici, il est temps de laisser les joueurs attendent pour de nouvelles personnes à se joindre. Dès qu'une nouvelle personne rejoint, vous allez vouloir mettre sur l'équipe avec le moins de note combinée.
Alternativement, si vous voulez éviter les jeux qui combiné bons et les mauvais joueurs dans la même équipe, vous pourriez diviser tout le monde dans les niveaux, (groupes en fonction de leur classement) et seulement les gens dans le même niveau. Cela nécessiterait une nouvelle ouverture/liste triée pour chaque niveau supplémentaire.
Exemple
Jeu est 4v4
Dès que vous obtenez ces six, groupe dans les équipes en tant que tel:
Maintenant, nous attendons pour les deux joueurs de plus pour rejoindre.
D'abord, le joueur E vient avec 500 vcn. Il va à l'Équipe 1, parce qu'ils ont un plus faible score combiné.
Ensuite, le joueur F est livré avec 800 vcn. Il va à l'Équipe 2, parce qu'ils sont la seule équipe de gauche.
Total d'équipes:
Noter que les équipes étaient en fait assez juste jusqu'à ce que les deux derniers sont arrivés. Pour être honnête, la meilleur façon serait de ne créer le match quand vous avez assez de joueurs pour commencer. Mais alors, le temps d'attente peut être trop long pour le joueur.
Ajuster avec la façon dont beaucoup vous avez besoin avant de former le match. Moins = moins de temps d'attente, plus probablement injuste. Plus élevé = plus de temps d'attente, moins probablement injuste.
Si vous avez un pré-écran de jeu, la baisse serait également offrir plus de temps aux personnes de discuter et de parler avec leurs à ses coéquipiers lors de l'attente.
OriginalL'auteur Justin L.
Il est difficile d'estimer les compétences de tout un joueur par une mesure unique et d'une telle méthode est sujette à des abus. Toutefois, si vous ne vous souciez de la mise en œuvre de quelque chose de simple qui fonctionne bien, essayez les opérations suivantes:
Cela a l'évidence chute du cas où un joueur ne peut avoir qu'un gagnant-ratio de pertes de 5-0 et un autre de 50-20, la première a une infinité de pourcentage, tandis que l'autre est plus raisonnable de pourcentage. Il fait sens pour le système d'appariement de reconnaître cela et être beaucoup plus confiant que le dernier joueur a plus de compétence en raison de la cohérence nécessaire; toutefois, en opposant les deux joueurs l'un contre l'autre serait sans doute une bonne chose parce que le 5-0 player est probablement essayer de travailler le système en jouant contre des joueurs plus faibles, donc des piqûres contre toujours un bon joueur ferait tout le monde bonne.
Note, je parle de l'expérience de jouer uniquement à des jeux de stratégie comme Warcraft 3, où c'est le match typique comportement de prise. Il me semble que le pourcentage de victoires sur les pertes est un grand métrique pour le match des joueurs.
Recore: par la formulation de la question, je suppose que ce qu'il a été conçu pour le système automatique ou "aléatoire" matching comme vous l'appelez.
Mais une fois que vous commencer à assigner des matchs basée sur le niveau de compétence, alors vous ne pouvez pas utiliser la gagnante % comme une mesure utile plus. gagner 50% de jeux contre un pro n'est pas la même que de gagner 50% de jeux contre un newb.
OriginalL'auteur ldog
Match en fonction de plusieurs attributs. J'ai mis en place un simple système de matchmaking à l'aide d'AWS Cloudsearch (basé sur Apache Solr). Par exemple matching basé sur la combinaison des champs suivants est possible
Il est maintenant possible d'exécuter des requêtes inclusive de multiples domaines comme les suivants.
OriginalL'auteur smahesh