Pool Nspire
Voir le premier message non lu • 10 messages
• Page 1 sur 1
Pool Nspire
Salut à tous !
Peut-être connaissez-vous déjà mon jeu de billard pour TI Nspire, Pool Nspire !
La version sur TI-Planet est une assez ancienne version, j'ai beaucoup avancé entre temps..
J'avais déjà implémenté il y a deux ans (j'ai dû arrêter à cause de la rentrée en MP) la physique du jeu, une vue 3D immersive, puis les règles ainsi qu'un début d'intelligence artificielle plutôt satisfaisant. Elle était capable de jouer selon les règles, et de faire des combos de n boules !
Après la grosse mise-à-jour d'ABA Logique, il était temps que je continue Pool Nspire... (en partie sous la pression de Nikitouzz ) Mais la flemme a fait que j'ai pas mal traîné..
Or, il se trouve que j'ai suivi un cours additionnel à mon école à propos d'algorithmes rapides (c'était des astuces et de la théorie pour réduire la complexité d'opérateurs linéaires, typiquement, l'algo de FFT, ou du calcul d'interaction entre des particules ou des planètes) et on devait rendre un petit rapport sur un sujet en relation avec le cours - sur un article par exemple - pour valider le module.
Et là, j'ai eu une idée de génie : dans mon jeu de billard, l'algo de détection de collision entre les boules est de complexité quadratique, et il y avait moyen de le rendre bien plus performant !
Alors j'ai fait d'une pierre deux coups ! Je me suis remis à Pool Nspire en commençant par implémenter ce fameux algo. Puis j'ai fait mon rapport là-dessus. D'ailleurs, je vous le joint si vous voulez, c'est plutôt intéressant.
=> (oui, le cours était en anglais, donné par un prof italien, un sacré bordel... :') )
Le prof a beaucoup apprécié mon rapport ! ^^
Et ensuite, puisque j'étais lancé, j'ai continué mon jeu ! En particulier, quelques améliorations sur la physique du jeu, et SURTOUT, j'ai continué l'IA !
Je n'ai pas encore totalement fini, mais elle commence à devenir assez monstrueuse. Je vous ai pris une capture d'un match IA vs IA et je trouve ça vraiment cool à regarder.
Comme vous avez pu le voir, elle est maintenant capable de faire des bandes et des combos, et de combiner le tout !
Voilà, j'espère vous avoir donné l'eau à la bouche, Pool Nspire ne devrait pas trop tarder à sortir.
A bientôt !
Peut-être connaissez-vous déjà mon jeu de billard pour TI Nspire, Pool Nspire !
La version sur TI-Planet est une assez ancienne version, j'ai beaucoup avancé entre temps..
J'avais déjà implémenté il y a deux ans (j'ai dû arrêter à cause de la rentrée en MP) la physique du jeu, une vue 3D immersive, puis les règles ainsi qu'un début d'intelligence artificielle plutôt satisfaisant. Elle était capable de jouer selon les règles, et de faire des combos de n boules !
Après la grosse mise-à-jour d'ABA Logique, il était temps que je continue Pool Nspire... (en partie sous la pression de Nikitouzz ) Mais la flemme a fait que j'ai pas mal traîné..
Or, il se trouve que j'ai suivi un cours additionnel à mon école à propos d'algorithmes rapides (c'était des astuces et de la théorie pour réduire la complexité d'opérateurs linéaires, typiquement, l'algo de FFT, ou du calcul d'interaction entre des particules ou des planètes) et on devait rendre un petit rapport sur un sujet en relation avec le cours - sur un article par exemple - pour valider le module.
Et là, j'ai eu une idée de génie : dans mon jeu de billard, l'algo de détection de collision entre les boules est de complexité quadratique, et il y avait moyen de le rendre bien plus performant !
Alors j'ai fait d'une pierre deux coups ! Je me suis remis à Pool Nspire en commençant par implémenter ce fameux algo. Puis j'ai fait mon rapport là-dessus. D'ailleurs, je vous le joint si vous voulez, c'est plutôt intéressant.
=> (oui, le cours était en anglais, donné par un prof italien, un sacré bordel... :') )
Le prof a beaucoup apprécié mon rapport ! ^^
Et ensuite, puisque j'étais lancé, j'ai continué mon jeu ! En particulier, quelques améliorations sur la physique du jeu, et SURTOUT, j'ai continué l'IA !
Je n'ai pas encore totalement fini, mais elle commence à devenir assez monstrueuse. Je vous ai pris une capture d'un match IA vs IA et je trouve ça vraiment cool à regarder.
Comme vous avez pu le voir, elle est maintenant capable de faire des bandes et des combos, et de combiner le tout !
Voilà, j'espère vous avoir donné l'eau à la bouche, Pool Nspire ne devrait pas trop tarder à sortir.
A bientôt !
Mes programmes => ici !
-
Loulou 54Premium
Niveau 13: CU (Calculateur Universel)- Messages: 1985
- Images: 8
- Inscription: 02 Aoû 2009, 00:00
- Localisation: 54, près de Metz
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: Ingé Logiciel chez Amazon
Re: Pool Nspire
Tiens, un revenant
Très bien
Très bien
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
-
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)- Messages: 6859
- Inscription: 23 Déc 2009, 00:00
- Localisation: France
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: -
- GitHub: debrouxl
Re: Pool Nspire
Aucune chance de gagner si c'est l'IA qui commence
Je sais que tu t'appelle Anonymous !!
-
QuanticPotatoPremium
Niveau 13: CU (Calculateur Universel)- Messages: 100
- Inscription: 26 Juil 2014, 20:31
- Localisation: Rennes
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: MP
Re: Pool Nspire
Oui alors évidemment je ferai différents niveaux de difficulté. Mais je pense que la rendre moins forte ne sera pas un problème en rajoutant un peu d'aléatoire pour simuler de la maladresse..
Mes programmes => ici !
-
Loulou 54Premium
Niveau 13: CU (Calculateur Universel)- Messages: 1985
- Images: 8
- Inscription: 02 Aoû 2009, 00:00
- Localisation: 54, près de Metz
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: Ingé Logiciel chez Amazon
Re: Pool Nspire
Très intéressant ce PDF, je l'ai parcouru rapidement mais je vais le lire plus en détail
re-bienvenue, sinon
re-bienvenue, sinon
MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)-
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)- Messages: 14614
- Images: 1218
- Inscription: 01 Juin 2007, 00:00
- Localisation: France
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Twitter/X: adriweb
- GitHub: adriweb
Re: Pool Nspire
Adriweb a écrit:Très intéressant ce PDF, je l'ai parcouru rapidement mais je vais le lire plus en détail
re-bienvenue, sinon
D'acc !
Oui j'étais moins actif ces derniers temps mais je continuais à lire les news de temps en temps. Merci !
Mes programmes => ici !
-
Loulou 54Premium
Niveau 13: CU (Calculateur Universel)- Messages: 1985
- Images: 8
- Inscription: 02 Aoû 2009, 00:00
- Localisation: 54, près de Metz
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: Ingé Logiciel chez Amazon
Re: Pool Nspire
Vraiment sympas ton PDF Clair et précis.
Sinon, bon retour parmi nous
Sinon, bon retour parmi nous
Donald Knuth a écrit:Beware of bugs in the above code; I have only proved it correct, not tried it.
-
AlexRider38Généreux
Niveau 13: CU (Calculateur Universel)- Messages: 650
- Images: 0
- Inscription: 03 Nov 2010, 00:00
- Localisation: France
- Genre:
- Calculatrice(s):→ MyCalcs profile
Re: Pool Nspire
Super ! Le jeu gagne tout de suite en intérêt. J'ai deux suggestions. La première concerne le fait qu'en réalité, une boule ne met pas tant de temps à ralentir à la fin ; il faudrait revoir ton modèle de frottement. C'est surtout énervant à cause du temps d'attente pour chaque tour. La deuxième te propose d'ajouter le fait qu'une boule est en rotation sur elle-même et qu'elle peut donc rouler avec ou sans glissement. Il faudrait dans ce cas permettre de tirer plus en-dessous ou au-dessus de la boule.
-
mdr1Premium
Niveau 14: CI (Calculateur de l'Infini)- Messages: 1083
- Images: 12
- Inscription: 28 Mar 2011, 00:00
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: Je voyage toujours en première.
Re: Pool Nspire
Oui les effets de rotation des boules ne sont pas pris en compte et je ne compte pas les ajouter pour plusieurs raisons :
- On arrive aux limites de la TI : le jeu n'est pas très rapide malgré les améliorations
- Je ne sais pas trop comment modéliser ça.. (même si j'ai quelques idées )
- Le comportement des boules contre les bandes notamment sera changé, et ça demandera beaucoup de travail pour adapter l'IA à ces comportements (même si la boule est frappée sans effet).
Pour ce qui est du frottement, je ne me suis pas trop posé de questions, j'ai modélisé ça comme ça :
à chaque frame, je fais v=v*c_f avec c_f le coefficient de frottement tel que 0 < c_f < 1.
En fait, cela correspond à la modélisation discrète (i.e. séquentielle) de l'effet d'une force de frottement fluide sur les boules. Tiens, je vais essayer de te le démontrer proprement :
Avant tout, sache qu'il est maintenant possible de passer le tour en appuyant sur ! ça devrait régler tes problèmes d'impatience. (c'était pareil pour moi hein )
Bon, on s'intéresse au système suivant : {boule}
A l'état initial, la boule vient d'être frappée et a une vitesse v0.
Bilan des forces :
- Le poids
- La réaction du support qui compense le poids
- La force de frottement, supposée de type "frottement fluide" qui s'exprime ainsi : F=-k*v avec k un coefficient dépendant de la nature du fluide, de l'état de surface et de la géométrie de la boule.
On a un problème unidimensionnel. On travaillera donc sur la droite de déplacement de la boule et on utilisera des scalaires.
Sur la trajectoire de la boule, on a donc, d'après la loi de Newton :
m*a(t)=-k*v(t)
soit : dv/dt=-k/m*v
donc : v(t)=v0*exp(-k/m*t)
Or mon modèle séquentiel correspond à cette suite :
v(n+1) = v(n)*c_f avec 0<c_f<1
soit : v(n)=v0*c_f^n (suite géométrique)
Les frames correspondant à des instants de période T, la première loi, avec t=n*T, donne :
v(n*T) = v0*exp(-k/m*n*T)
= v0*(exp(-k*T/m))^n
= v0*c_f^n avec 0 < c_f=exp(-k*T/m) < 1
D'où le fait que mon modèle correspond à un modèle de frottement fluide !
Bref, c'est joli et ça paraissait suffisamment réaliste donc j'ai gardé ça.
Maintenant qu'on en parle, il n'est pas impossible que cette modélisation ne soit pas adaptée à la modélisation d'une boule qui roule avec du frottement... Je vais chercher un peu, tiens.
- On arrive aux limites de la TI : le jeu n'est pas très rapide malgré les améliorations
- Je ne sais pas trop comment modéliser ça.. (même si j'ai quelques idées )
- Le comportement des boules contre les bandes notamment sera changé, et ça demandera beaucoup de travail pour adapter l'IA à ces comportements (même si la boule est frappée sans effet).
Pour ce qui est du frottement, je ne me suis pas trop posé de questions, j'ai modélisé ça comme ça :
à chaque frame, je fais v=v*c_f avec c_f le coefficient de frottement tel que 0 < c_f < 1.
En fait, cela correspond à la modélisation discrète (i.e. séquentielle) de l'effet d'une force de frottement fluide sur les boules. Tiens, je vais essayer de te le démontrer proprement :
Avant tout, sache qu'il est maintenant possible de passer le tour en appuyant sur ! ça devrait régler tes problèmes d'impatience. (c'était pareil pour moi hein )
Bon, on s'intéresse au système suivant : {boule}
A l'état initial, la boule vient d'être frappée et a une vitesse v0.
Bilan des forces :
- Le poids
- La réaction du support qui compense le poids
- La force de frottement, supposée de type "frottement fluide" qui s'exprime ainsi : F=-k*v avec k un coefficient dépendant de la nature du fluide, de l'état de surface et de la géométrie de la boule.
On a un problème unidimensionnel. On travaillera donc sur la droite de déplacement de la boule et on utilisera des scalaires.
Sur la trajectoire de la boule, on a donc, d'après la loi de Newton :
m*a(t)=-k*v(t)
soit : dv/dt=-k/m*v
donc : v(t)=v0*exp(-k/m*t)
Or mon modèle séquentiel correspond à cette suite :
v(n+1) = v(n)*c_f avec 0<c_f<1
soit : v(n)=v0*c_f^n (suite géométrique)
Les frames correspondant à des instants de période T, la première loi, avec t=n*T, donne :
v(n*T) = v0*exp(-k/m*n*T)
= v0*(exp(-k*T/m))^n
= v0*c_f^n avec 0 < c_f=exp(-k*T/m) < 1
D'où le fait que mon modèle correspond à un modèle de frottement fluide !
Bref, c'est joli et ça paraissait suffisamment réaliste donc j'ai gardé ça.
Maintenant qu'on en parle, il n'est pas impossible que cette modélisation ne soit pas adaptée à la modélisation d'une boule qui roule avec du frottement... Je vais chercher un peu, tiens.
Mes programmes => ici !
-
Loulou 54Premium
Niveau 13: CU (Calculateur Universel)- Messages: 1985
- Images: 8
- Inscription: 02 Aoû 2009, 00:00
- Localisation: 54, près de Metz
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: Ingé Logiciel chez Amazon
Re: Pool Nspire
Alors j'ai fait quelques recherches et je suis tombé sur un TIPE intéressant :
https://sites.google.com/site/tipebilla ... rottements
Vers la fin, après confrontation à l'expérience il conclut cela à propos du roulement sans frottement :
La perte d'énergie de la boule peut apparemment se modéliser par une force dont l'expression serait de la forme
F = -f*v pour v>0,2m/s
Et sinon par une force de la forme
F = -f'*signe(v)
avec f ≈ 0.027 kg/s
et f' ≈ 0.0048 N
Ce qui conforte mon modèle lorsque la boule roule vite mais qui effectivement présente une inexactitude lorsque la vitesse est trop faible. A faible vitesse, on aurait une force constante, donc décroissement linéaire de la vitesse.
Il serait peut-être intéressant d'apporter cette modification alors..
https://sites.google.com/site/tipebilla ... rottements
Vers la fin, après confrontation à l'expérience il conclut cela à propos du roulement sans frottement :
La perte d'énergie de la boule peut apparemment se modéliser par une force dont l'expression serait de la forme
F = -f*v pour v>0,2m/s
Et sinon par une force de la forme
F = -f'*signe(v)
avec f ≈ 0.027 kg/s
et f' ≈ 0.0048 N
Ce qui conforte mon modèle lorsque la boule roule vite mais qui effectivement présente une inexactitude lorsque la vitesse est trop faible. A faible vitesse, on aurait une force constante, donc décroissement linéaire de la vitesse.
Il serait peut-être intéressant d'apporter cette modification alors..
Mes programmes => ici !
-
Loulou 54Premium
Niveau 13: CU (Calculateur Universel)- Messages: 1985
- Images: 8
- Inscription: 02 Aoû 2009, 00:00
- Localisation: 54, près de Metz
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: Ingé Logiciel chez Amazon
10 messages
• Page 1 sur 1
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 6 invités