JeuWeb - Crée ton jeu par navigateur
Algo moteur de match de foot - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Algo moteur de match de foot (/showthread.php?tid=6694)



Algo moteur de match de foot - lolofast - 08-03-2013

Bonjour,

Je sais que le sujet a déjà été abordé mais je n'ai rien trouver de concret.

Je souhaite faire un petit moteur de match pour m'entrainer seulement je me demande comment faire exactement, je vous explique :

-Je vais donc faire des joueurs avec plusieurs notes

-Il faudrait que je prennent en compte la tactique

-Le moteur s'afficherais sous forme de texte en temps réel

-Un match dure 90min

J'avais penser a faire une boucle qui dis que l'ont par du milieu de terrain en fonction des notes des milieux, l'équipe A prends le ballon puis le joueur Y donne le ballon au joueur X qui se fait prendre le ballon par le défenseur de l'équipe B puis on attends 3min et on recommence.
Mais niveau performance je trouve que c'est pas super puis comment déterminé a qui le joueur va faire la passe ? Qui la récupère ?

J'avais penser aussi a faire des stats globale : c'est a dire on fait un total de toutes les notes de la défense on les divise par le nombre de défenseurs puis on les compare aux stats de l'attaque adverse seulement je trouve que ce script serais pas assez précis : comment donner une note a un joueur ? Comment dire qui a marqué ?

Bref je cherche encore mais si vous avez des idées je serais ravis d'en discuter avec vous, je vous met les notes technique des joueurs :
Tacle
Marquage
Tête
Endurance
Passe
Vision du jeu
Coup franc
Technique
Centre
Puissance
Finition
Vitesse
Appel de balle
Placement


RE: Algo moteur de match de foot - Dark-Slade - 08-03-2013

Moi je verrais plutôt cela en jeu de plateau, et pour matérialiser le faite qu'un joueur prend le ballon à un autre tu pourrais faire cela avec un système de collision. Je veux dire par là que par exemple le joueur X à la balle et le joueur Y fonce vers lui pour aller lui prendre et qu'ils se retrouvent tous les 2 sur la même cases , alors celui qui à les meilleures stats réussis à passer avec la balle ( je ne sais pas si cela est possible ^^) .


RE: Algo moteur de match de foot - lolofast - 08-03-2013

Pas mal comme idée cela rejoint ma solution 1, mais j'ai peur des performances.

D'autres avis ?


RE: Algo moteur de match de foot - Ter Rowan - 09-03-2013

Je donne la meme reponse que j ai donné la :

http://www.jeuweb.org/showthread.php?tid=9102

Soit on raisonne unitairement (cf agent) soit on raisonne statistiquement avec des événements aléatoires


RE: Algo moteur de match de foot - lolofast - 09-03-2013

Oui, c'est en gros le dilemme que j'ai cela ne m'apporte rien de concret mais merci quand même.


RE: Algo moteur de match de foot - Xenos - 09-03-2013

Salut,

+ pour les atouts, - pour les problèmes

En raisonnant agent par agent:
+ Facilité de conception (orienté objet, raisonnement sur un objet simple, l'agent)
+ Modularité (ajout d'un type d'agent, modification de paramètres, ajout de comportements/actions possibles)
+ Emergence (comportements faisant apparaitre une intelligence collective)
- Lourdeur des calculs (limités pour un match de foot: 11x2=22 joueurs +1 arbitre, ca va)
- Emergence (comportements imprévus rendant le déboggage compliqué)


En raisonnant statistiquement
- Théorisation mathématique requise (choix des fonctions qui, aux paramètres de l'ensemble des joueurs, associe le résultat du match)
- Faible modularité (mélasse de code, besoin de repartir au niveau "conception" si on veut ajouter un paramètre d'entrée)
- Comportements ultra-prévisible (la fonction f(paramètres)=score_du_match est simple face à un ensemble de 22 agents, qui ont un comportement macroscopique chaotique)
+ Déterminisme (en changeant tel paramètre et connaissant la fonction f() précédente, on en déduit immédiatement l'impact sur le résultat du match)
+ Rapidité de calcul (il suffit d'évaluer la fonction)

A toi de faire ton choix.
Dans le cadre d'un match de foot avec peu de joueurs, un système agent-par-agent me semble réalisable. Il sera plus long à développer qu'un système statistique, mais sera également bien plus immersif. Si tu préfères faire, pour l'instant, dans la rapidité de développement pour avoir une version jouable assez vite, alors privilégie la méthode statistique. Tu pourras toujours, plus tard, la remplacer par un système agent-par-agent.


RE: Algo moteur de match de foot - popayan - 14-03-2013

Mon expérience perso : le choix statistique est le plus réaliste, l'autre est bien trop compliqué à mettre en place et décourage très rapidement les développeurs qui s'y collent (et perso, je trouve que ça colle plus à un jeu de simu à la Fifa)

Sinon, je verrais ça comme ça :

Code :
match_actions [0] = "Bienvenue au stade #{stade_name} pour assister à la rencontre opposant l'équipe locale de #{team_1_name} face à #{team_2_name}. L'arbitre de ce match est M. #{referee_name}"
score[0] = 0
score[1] = 0
position_terrain = "13" #je découpe le terrain en 25 cases, à toi de voir comment tu veux le découper, 13 correspond au rond centrale
team_with_ball = random_start_team() #tu choisis qui donne le coup d'envoie
player_with_ball = team_1_player[9] #je décide que c'est le joueur 9 qui a la balle
nbr_actions = nbr_actions_random() #tu tires un nombre aléatoire réaliste, il peut dépendre de pleins de chose : la météo, la différence de niveau des 2 équipes, etc...
cpt_action = 1

while (cpt_action < nbr_actions) {
   match_actions[cpt_action] = random_action(position_terrain, team_with_ball, player_with_ball)
}


j'irais pas beaucoup plus loin parce que là, j'ai une angine et 40° de fièvre mais j'espère t'avoir aider. Au final, tu as juste à afficher le tableau pour avoir le déroulement du match.

Il te reste quand même le plus compliqué : la fonction random_action. En gros, tu tires au "hasard" un type d'action (passe réussie, passe interceptée, touche, corner, tir, but...) mais le hasard est pipé, par exemple si tu es dans ta surface et que tu as la balle, on va dire que tu as 70% d'avoir une passe réussie vers l'avant, 15% un passe ratée, 15% de mettre le ballon en touche; au contraire si tu es dans l'autre surface tu auras 70% de tirer, 10% d'obtenir un corner, 15% de se faire prendre la balle et 5% un but.

si tu as des questions, n'hésite pas!


RE: Algo moteur de match de foot - Jereldinho - 06-08-2013

Bonjour,

Je ne sais pas si le sujet est toujours d'actualité mais je peux apporter une réponse.

Je me suis lancer dans ce genre de projet et l'algo pour le calcul d'un match entre 2 équipes pèse 6000 lignes de code ...

Pour faire bref voila la logique :

- Un premier check des différentes valeurs est rassemblé (Decoupage en Gardien - Defense - Milieu - Attaque - potentiel - condition physique - moral - choix tactique ... )
- La 2eme partie du code permet d'obtenir les whiles dont bénéficiera l'equipe Domicile et Exterieur en fonction de leur écart de niveau . (Chaque while representera 1 action offensive et permettra de calculer la possession de balle.)
- 3eme partie les blessures cartons jaunes et rouges. Avec des mt_rand on defini s'il y aura des blessures des cartons rouges ou jaunes qui diminuerons le nombre de while.
- 4eme partie On attaque les whiles en démarrant du milieu de terrain. (Si le millieu de equipe a est largement supérieur à equipe b) Mt_rand de passage plus élevé vers la partie attaque.
cela permet de laisser un peu d'aléatoire dans le déroulement du match. donc idem entre Attaque et def et attaque et gardien... Au finale on déroule une action complete à l'aide de while mt_rand avec certains joueurs pour permettre de savoir s'il y aura un passeur un buteur si le défenseur à stoppé l'attaque, bref pour les stats de match c'est intéressant.
- Fin on assemble tout ça pour obtenir toutes les infos du déroulement du match notes des joueurs ... on ajoute bien sur ttes les stats dans la bd en prenant soin de remonter le moral des gagnants et inversement pour les perdant avec une perte de condition physique plus importante.

Bref j'ai très synthétisé et raccourcis les 6000 lignes de codes mais en gros il faut faire une comparaison enter les 2 équipes en laissant une bonne partie d'aléatoire, après tout il n'est pas impossible q'une petite équipe pleine d'espoir gagne sur un coup de théâtre. ;-)