JeuWeb - Crée ton jeu par navigateur
Classements des joueurs - 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 : Classements des joueurs (/showthread.php?tid=5087)

Pages : 1 2 3 4 5 6 7


RE: classements des joueurs - php_addict - 18-08-2010

merci mille fois pour toute vos précisions. et un grand merci à Foxglove pour avoir pris le temps de m'écrire cette longue explication sur les hashtable et la dichotomie Wink

Je vais donc tenter cette solution:

- une table classements avec MySQL (independantes de la table joueur)
- un systeme de cache que je mettrais en place plus tard

encore merci

bonne journée


RE: classements des joueurs - Sh4rk - 18-08-2010

Tu devrais je pense te pencher pour faire ta base de donnée en partant d'un modèle UML valide.
Et je pense qu'il faudrait que tu actualise ton classement tous les * laps de temps, et de stocker les résultat également dans une table à part


RE: classements des joueurs - php_addict - 18-08-2010

(18-08-2010, 10:33 AM)Sh4rk a écrit : Tu devrais je pense te pencher pour faire ta base de donnée en partant d'un modèle UML valide.

c'est à dire ?


RE: classements des joueurs - Sh4rk - 18-08-2010

Ben en te basant sur un modèle UML quand tu vas faire ta base de donnée si tu respecte bien les relations du modèle UML tu auras une base de donnée très bien conçu, trop peu de personne utilise l'UML pour leur projet pourtant c'est indispensable pour partir sur de bonnes bases


RE: classements des joueurs - Ter Rowan - 18-08-2010

(18-08-2010, 05:52 PM)Sh4rk a écrit : c'est indispensable pour partir sur de bonnes bases

très utile plutôt qu'indispensable, je pense

des gens ont développé de très bonnes applications sans passer par de l'uml qui n'est quand même (malgré toutes les qualités qu'il porte) qu'un langage (le "L" ^^), un formalisme

qui plus est j'ai assité il y a quelques mois, à la présentation par un professeur de "l'état" de l'art de la recherche informatique sur tout cet aspect modélisation et l'une des pistes qui, en ce moment, serait de passer, petit à petit, à des langages fonctionnels spécialisés "DSL" si mes souvenirs sont bons pour "domain specific language" (attention pas au sens microsoft qui utilise aussi ce terme)

grosso modo l'idée est que :
- UML est extrêmement souple (on peut faire énormément de chose, donc surcharger énormément de chose) au point qu'on a plusieurs moyens pour représenter la même chose (==> on arrivera a plusieurs solutions techniques pour un même point de départ ==> UML ne garantit pas l'excellence puisque parmi toutes ces solutions possibles par UML, certaines sont potentiellement meilleures que d'autres)
- UML, si on l'applique sur l'ensemble du processus, génère une volumétrie de documentation importante,et trop de doc tue la doc, comme le reste. Il est parfois plus simple d'écrire une phrase, un schema XML ou un truc spécifique que je connais pas (chaque solution dépendant du contexte, du métier, des habitudes de travail, etc...) que de réinventer la roue en cherchant à s'unifier (le "U") au monde entier


entendons nous, UML est à mon sens très utile mais pas indispensable


RE: classements des joueurs - php_addict - 18-08-2010

merci je vais me renseigner sur le UML

je vous expose ce que j'ai tenté pour le moment, j'ai visé large:

- 10.000 joueurs (dix milles)
- les joueurs peuvent être classés selon 3 critères, pour l'exemple l'on va dire: points attaque - points defenses - points tralala

1ere etape:

je créé une table classement_temporaire ou je calcules les differents points des joueurs ( points attaque - points defenses - points tralala )
j'ai donc des champs du genre joueur_id , points attaque , points defenses, points tralala

2eme etape:

- je tries la table table classement_temporaire pour créer une table classement_points_attaque
- je tries la table classement_temporaire pour créer une table classement_points_defenses
- je tries la table table classement_temporaire pour créer une table classement_points_tralala

donc mes tables points attaque - points defenses - points tralala sont les 3 types de classements de mes joueurs, les tables sont classées donc l'affichage classé est tres rapide...

Bilan de l'operation:

temps d'execution des etapes 1 et 2 : environ 10 secondes (sans accelerateur php) et en localhost sur mon pc...

voili voilou... qu'en pensez vous ???


RE: classements des joueurs - Ter Rowan - 18-08-2010

et si tu essayais avec une table

joueur id, type classe, points


(avec type classement attaque, défense, tralala)

et une requete qui tri avec

select * from table order by type classe, points


ca te fait une seule requete quelque soit le classement (et le nombre de classement)


RE: classements des joueurs - niahoo - 19-08-2010

heu je dis surement n'importe quoi mais si tu as déjà une table avec chaque joueur, ses points de défense et d'attaque, à quoi bon recopier cette table ?

tu fais sur la table originelle et du coup, temps de traitement < 1seconde, non ?
______

je connais mal l'UML (en fait pas du tout), par contre j'utilise beaucoup Merise. Mais comme dit plus haut, l'un comme l'autre permettent de définir des modèles conceptuels qui peuvent avoir plusieurs solutions physiques, les unes étant meilleures que les autres.
Dans tous les cas, passer une heure sur du papier sera plus bénéfique que passer une heure les mains dans le code, la seconde option restant nécéssaire cependant.


RE: classements des joueurs - php_addict - 19-08-2010

(18-08-2010, 11:29 PM)Ter Rowan a écrit : et si tu essayais avec une table

joueur id, type classe, points


(avec type classement attaque, défense, tralala)

et une requete qui tri avec

select * from table order by type classe, points


ca te fait une seule requete quelque soit le classement (et le nombre de classement)

oui mais le soucis que j'ai c'est de pouvoir afficher la position du joueur dans son classement, si le joueur demande le classement "par points d'attaques" et si je veux afficher un truc du genre:

1 - joueur
2 - joueur
3 - joueur
4 - joueur
5 - LE JOUEUR A AFFICHER
6 - joueur
7 - joueur
8 - joueur

pour afficher cela il faut bien que je connaisse la position de LE JOUEUR A AFFICHER pour pouvoir afficher les joueurs avant et apres dans le classement non ?

j'ai eu beau essayé tout ce que j'ai pu je ne descend pas en dessous des 10 secondes pour créer mes 3 tables classement ;(

(10 secondes sur mon localhost avec windows7 et wamp...je peut pas essayer sur mon mutu ovh car je ne peut pas uploader une base de donnée de cette taille...)


RE: classements des joueurs - Ter Rowan - 19-08-2010

je suis loin d etre super pro en sql

mais tu dois avoir moyen d'obtenir à partir de la table

joueur id, type classe, points


une requete ou table (grosso modo la manière dont tu fais actuellement avec des colonnes, d ailleurs je serais intéressé de savoir comment tu calcules la place de chaque joueur) :

joueur id, type classement, points, classement


une fois arrivé là tu devrais être capable par une seule requête de ramener

10 gus avant / après le joueur voulu par type de classement (where id joueur = xxx and type de classement = yyy)

voire même en une seule requête ramener la sélection qui t intéresse pour tous les types de classement d'un coup


mais je me suis jamais penché sur les classements en tant que tel, du coup comme je n arrive pas à visualiser les requêtes que tu as du faire pour obtenir les résultats, je ne sais pas trop comment "ajouter" la transformation de colonne (tes trois classements) en ligne. Pourrais tu montrer tes requêtes (d'une ça me fera progresser, deux j'aurais certainement une meilleure réponse après, mais demain ^^ )