31-12-2012, 12:24 PM
(31-12-2012, 11:22 AM)hercull a écrit : 1)pour les tables et les colonnes je choisi MyISAM ou INODB?
InnoDB est très bien, il te permettra d'utiliser des transactions.
(31-12-2012, 11:22 AM)hercull a écrit : 2)pour la table scheduled_events je dois créer une colonne scheduled_events_id?
Comme clé primaire pour cette table, je te conseille de simplement nommer la colonne
id
.(31-12-2012, 11:22 AM)hercull a écrit : 3)Quelle est la différence entre la colonne finish_date et finish_at? car tu me propose de rajouter la colonne finish_date mais dans la requête SQL tu écri finish_at, désolé de mon faible niveau.
C'est une erreur, je te conseille d'utiliser
finish_at
.(31-12-2012, 11:22 AM)hercull a écrit : 4)Pour ne pas avoir à refaire ma base plusieurs fois à cause d'erreur de ma part, je dois construire combien de table?
une table "player" contenant(player_id, player_pseudo, player_email, player_mdp, autre?
C'est toi qui voit ce que tu mets dans ta table
players
. Je te conseille d'opter pour des termes anglais (c'est la langue la plus appropriée à la programmation) et de ne pas utiliser d'abréviations. Tu n'as pas besoin de préfixer tes colonnes non plus, puisqu'elles le sont naturellement par le nom de la table. Je te suggère donc d'avoir des colonnes nommées id
, name
, email
, password_hash
, etc.(31-12-2012, 11:22 AM)hercull a écrit : pour les ressources du joueur je dois créer une autre table ou je les met dans la table "player"?
imaginons qu'il y a 5 types de ressources table "resources"(or, pierre, bois, fer, matière spécial)
Si tu as seulement une poignée de ressources, utiliser des colonnes dédiées (
gold
, stone
, wood
, iron
, special_stuff
) me paraît plus pertinent et simple.(31-12-2012, 11:22 AM)hercull a écrit : Ensuite je dois construire une table pour les batiments, une autre pour les recherches et une autre pour les unités?
-table "building"(building_id, building_name, building_cost, building_level, building_number, building_propriety, building_time?
-table "research"(research_id, research_name, research_cost, research_level, research_effect, research_time?
-table "unit"(unit_id, unit_name, unit_cost, unit number ,unit_propriety, unit_time?
Quoi d'autre?
Là aussi je te suggère d'abandonner les préfixes des colonnes, mais l'idée est là. Je te suggère d'utiliser une colonne par type de ressource pour exprimer les coûts (ça ajoute des colonnes mais ça rend le script plus simple, donc facile à maintenir et à comprendre).
De même, attention aux informations potentiellement complexes comme
effect
ou propiety
. Je pense qu'on pourrait discuter de ce que tu stock dedans dans un second temps.(31-12-2012, 11:22 AM)hercull a écrit : 5)Comment gérer le changement de temps de construction et le changement de prix des batiments , unités et recherche en fonction de leur niveau?
Tout dépend de ces coûts : sont ils statiques ou calculés de manière dynamique (en fonction du niveau de la recherche, de technologies débloquées, etc.) ?
Dans un cas comme dans l'autre, tu devrais faire des fonctions "boîte noire" qui te donnent le coût d'un bâtiment B effectuée par un joueur J.
cost_for_upgrade($building, $player)
. Comme ça tu pourras changer son implémentation à un seule endroit le jour où tu veux modifier la méthode de calcul. L'expression des coûts pourra t'être retournée sous la forme d'un tableau associatif array('wood' => 180, 'stone' => 800)
(31-12-2012, 11:22 AM)hercull a écrit : 6)peux tu me donner plus d'explication pour l'utilisation d'une tache CRON?
Les tâches CRON sont des scripts exécutés à intervalles réguliers par le système (dans la même veine, il y aussi des tâches AT, exécutées ponctuellement à un instant donné). Ça permet d'extraire les tâches des processus Web, ce qui permet souvent d'éviter d'infliger aux joueurs qui doit exécuter une résolution d'avoir une page lente. J'ai écrit un article Utiliser l'asynchrone : pourquoi et comment ? , je t'invite à le lire.
Certains hébergement proposent ce genre de tâche, sinon des services externe le font.