LiberTribes, les Tribus d'Hegoa projet lauréat 2006 Envie d'agir

Développement du 1er jeu libre de Rev[Evolution]Air Arts, Sciences et Libertés association loi 1901
 
AccueilAccueil  CalendrierCalendrier  GalerieGalerie  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  

Partagez | 
 

 Base de données

Aller en bas 
AuteurMessage
Tuska



Nombre de messages : 14
Age : 26
Date d'inscription : 18/01/2011

MessageSujet: Base de données   Ven 4 Mar - 18:33

Ce thread sert pour la SQL-Devteam à poster leurs travaux.

Les Devs sont fortement encouragés à laisser un post s'ils veulent un fix de la DB (même à le faire eux mêmes tant qu'ils le notifient ici)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Tuska



Nombre de messages : 14
Age : 26
Date d'inscription : 18/01/2011

MessageSujet: Re: Base de données   Ven 4 Mar - 18:35

## Voici le schema actuel de la DB, il n'est ni testé, ni fonctionnel, le code n'a pas encore été écrit.
## Je le poste simplement à titre indicatif.
## Merci de me donner vos idées, suggestions, ou corrections.

//LES TABLES TEMPLATES SONT DES OBJETS GENERIQUES, ELLE SONT TOUJOURS LIEES A UNE AUTRE TABLE. EXEMPLE : objet_template -- objet -- avatar

MONDE
--
id : integer
nom : varchar(30)
population : integer
type : varchar(30)
--

COMPTE
--
id : integer
pseudo : varchar(30)
password : varchar(30)
mail : varchar(30)
dateinscription : datetime
lastip : varchar(21)
lastlogin : datetime
datenaissance : datetime
inactif : bool
statut : ?
confirme : ?
--

PEUPLE
--
id : integer
nom : varchar(30)
taux_nat : integer //nombre d'unites spawnables par jour
nb_slot_doigt : integer
--

AVATAR
--
id : integer
id_compte : integer
id_peuple : integer
id_carte : integer
nom : varchar(30)
niveau : integer
xp : integer
age : integer
background : text
agressivité : integer
efficacité : integer
commerce : integer
escroquerie : integer

--

SLOTS_PERSONNAGES //Valeur booleenne indiquant si le slot est utilise ou non, pour les doigts.
--
id_avatar : integer
slot_tête : bool
slot_visage : bool
slot_cou : bool
slot_epaules : bool
slot_bras : bool
slot_torse : bool
slot_poignet : bool
slot_gants : bool
slot_ceinture : bool
slot_jambes : bool
slot_pieds : bool
nb_slot_doigt : integer //se reporter à la table PEUPLE nb_slot_doigt == PEUPLE.nb_slot_doigt - SLOTS_PERSONNAGES.nb_slot_doigt
--

SLOTS_OBJETS //On peut utiliser plusieurs slots pour un seul objet.
--
id_objet : integer
slot_utilisé : varchar(10) //emplacement sur le corps : "tete, visage, cou, epaules, bras, torse, poignets, gants, ceinture, jambes, pieds" (me dire s'il faut en ajouter)
--

OBJET_TEMPLATE
--
id : integer
nom : varchar(30)
description : text
niveau_min : integer
niveau_max : integer
bonus_soin : integer
bonus_magie : integer
bonus_formation_vivante : integer
bonus_formation_nonvivante : integer
bonus_attaque : integer
bonus_defense : integer
bonus_metier : integer
duree_vie : integer (-1 si illimité)
type : varchar(30)
cout_prod_fer : integer
cout_prod_bois : integer
cout_prod_cyniam : integer
temps_prod : integer
metier_requis : id_metier
niveau_metier : integer
--

OBJET
--
id_obj : integer
id_avatar : integer
id_createur : integer
--

METIER_TEMPLATE
--
id : integer
nom : varchar(30)
description : text
--

METIER
--
id_metier : integer
id_avatar : integer
niveau : integer
xp : integer
xp_suivant : integer
--

CASE
--
id : integer //advice : pos_x+pos_y
id_monde : integer
etat : varchar(30) //Colonisée, pas colonisée...etc
pos_x : integer
pos_y : integer
geographie : varchar(30)
climat : integer // climats a definir : "1:tres froid, 2:froid, 3:continental, 4:mediterrannen, 5:tropical, 6:desertique, 7:montagnard.....etc"
hydrometrie : integer // 5 stades : "1:Tres sec, 2:sec, 3:normal, 4:humide, 5:tres humide"
tuile : id_tuile
taille : integer
bonus_defense : integer
bonus_nourriture : integer
--

VILLAGE
--
id : integer
nom : varchar(30)
id_case : integer
id_avatar : integer
population : integer
--

BATIMENT
--
id : integer
nom : varchar(30)
description : text
prix_base_bois : integer
prix_base_fer : integer
prix_base_cyniam : integer (niveau suivant : niveau * coût)
prix_base_paysan : integer
temps_base : integer //En secondes
--

CONSTRUCTION
--
id_bat : integer
id_village : integer
niveau : integer
prix_next_bois : integer
prix_next_fer : integer
prix_next_cyniam : integer
prix_next_paysan : integer
temps_next : integer //En secondes
--

SCIENCE
--
id : integer
nom : varchar(30)
description : text
prix_base_fer : integer
prix_base_bois : integer
prix_base_cyniam : integer
temps_recherche_base : integer //En secondes
--

SCIENCE_CONNUE //Une science est liee a un village
--
id_science : integer
id_village : integer
niveau : integer
prix_next_bois : integer
prix_next_fer : integer
prix_next_cyniam : integer
temps_recherche_next : integer //En secondes
--

SORT_TEMPLATE
--
id : integer
sort_village : bool //(true:village/false:unit)
nom : varchar(30)
description : text
degat : integer
invoque : id_unite
temps_cast : integer
temps_cooldown : integer
cout_cyniam : integer
cout_mana : integer
cout_magicien : integer
bonus_cac_a : integer
bonus_distance_a : integer
bonus_magie_a : integer
bonus_cac_d : integer
bonus_distance_d : integer
bonus_magie_d : integer
--

SORT_CONNU_UNIT
--
id_sort : integer
id_unit : integer
niveau : integer
--

SORT_CONNU_VILLAGE
--
id_sort : integer
id_village : integer
niveau : integer
--

UNITE_TEMPLATE
--
id : integer
nom : varchar(30)
description : text
cout_fer : integer
cout_bois : integer
cout_cyniam : integer
temps_formation : integer
entretien_nourriture : integer //Qte de nourriture consommee par unite de temps
entretien_cyniam : integer
--

UNITE
--
id_unit : integer
id_case : integer
id_avatar : integer
niveau : integer
xp : integer
xp_next : integer
cac_a : integer
distance_a : integer
magie_a : integer
cac_d : integer
distance_d : integer
magie_d : integer
pv_curr : integer
pv_max : integer
vitesse_depl : integer
qte_transport : integer
heros : bool //Pas bien compris le concept de Heros, peut etre a revoir.
--

DIVISION
--
id_division : integer
id_unite : integer
cac_a : integer //somme des valeurs d'attaque au cac des unites composant la division.
distance_a : integer
magie_a : integer
cac_d : integer //somme des valeurs de defense au cac des unites composant la division.
distance_d : integer
magie_d : integer
--

ARMEE
--
id : integer
nom : varchar(30)
id_division1 : integer //une armee est composee de 3 divisions.
id_division2 : integer
id_division3 : integer
vitesse_depl : integer
cac_a : integer //somme des valeurs d'attaque au cac des divisions composant l'armee.
distance_a : integer
magie_a : integer
cac_d : integer //somme des valeurs de defense au cac des divisions composant l'armee.
distance_d : integer
magie_d : integer
--

QUETE //Pas bien compris le concept de quete, peut etre a revoir
--
id_createur : integer
id_case : integer
description : text
recompense : id_objet
nb_rec : integer
temps_fin : integer
--

HdV
--
id_objet : integer
id_vendeur : integer
prix : integer
temps_fin : timestamp
id_acheteur : integer
offre : integer
--

GUILDE
--
id : integer
nom : varchar(30)
id_createur : integer
date_creation : timestamp
--

GUILDE_CHAR
--
id_guilde : integer
id_avatar : integer
rang : varchar(30) //rangs à définir
--

PACTE_TEMPLATE //Il peut s'agir par exemple d'un pacte de non-agression.
--
id : integer
nom : varchar(30)
description : text
--

PACTES
--
id_guilde1 : integer
id_guilde2 : integer
id_pacte : integer
--
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
paodao

avatar

Nombre de messages : 522
Age : 38
Localisation : paris/rouen
Date d'inscription : 10/08/2006

MessageSujet: Re: Base de données   Dim 6 Mar - 22:32

salut
deja merci de ta participation
j'ai pas d'avis sur l'organisation generale de la bdd, je m'y connais pas assez
ceci dit j'aurais une petite remarque sur le nom des variabales
hesite pas a etre verbeux (comme tu la fait sur presque toutes les variables)
evite les cout_prod_fer prefere cout_production_fer ou id_bat prefere id_batiment
on a l'autocompletion, on s'en fout que les noms de variables fassent 3km et c'est plus clair
et si quelqu'un d'autre arrive sur le projet c'est aussi plus clair pour lui
globalement (et c'est pratiquement ce que tu as deja fait) hesite pas à donner des noms qui ont du sens au fonctions, variables... et pas des abrégé qui peuvent portée à confusion si on reviens sur le code 6 mois après
mieux vaux un "affiche_mes_coordonnees" qu'un "affCoord"
apres j'aurais une preference pour l'anglais, mais c'est completement personnel comme point de vue :-)
merci
a+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://paodao.3DVF.net
Tuska



Nombre de messages : 14
Age : 26
Date d'inscription : 18/01/2011

MessageSujet: Re: Base de données   Dim 6 Mar - 23:06

Ok, lors de la rédaction de la DB, je rallongerais les noms. Smile

Pour l'anglais, ça m'est tout à fait égal, je ferais donc selon les demandes, à la majorité.

Et en fait, c'est plus un avis sur les données que sur la structure, je veux dire : est-ce qu'il vous semble manquer quelque chose en matière de données?
(Par exemple, je n'ai pas encore bien géré les échanges commerciaux).

En fait, étant encore assez nouveau sur le projet, je n'ai pas une idée totalement claire des mécaniques de jeu, du level design...etc.

Donc je fais un peu comme j'imagine, et ça peut être faux.

La question est vraiment plus sur le fond que sur la forme.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Tuska



Nombre de messages : 14
Age : 26
Date d'inscription : 18/01/2011

MessageSujet: Re: Base de données   Lun 7 Mar - 0:04

// DB NOUVELLE VERSION, EN ANGLAIS, AVEC LES CLES PRIMAIRES(%) ET ETRANGERES(#)

//LES TABLES TEMPLATES SONT DES OBJETS GENERIQUES, ELLE SONT TOUJOURS LIEES A UNE AUTRE TABLE. EXEMPLE : objet_template -- objet -- avatar

WORLD
--
%world_id : integer
name : varchar(30)
population : integer
type : varchar(30)
--

ACCOUNT
--
%account_id : integer
nickname : varchar(30)
password : varchar(30)
mail : varchar(30)
inscription_date : datetime
lastip : varchar(21)
lastlogin : datetime
birth_date : datetime
inactive_account : bool
status : ?
confirmation : ?
--

RACES
--
%race_id : integer
name : varchar(30)
birth_rate : integer //nombre d'unites spawnables par jour
finger_slots_number : integer
--

character
--
%character_id : integer
#id_account : integer
#id_peuple : integer
#map_id : integer
name : varchar(30)
level : integer
xp : integer
age : integer
background : text
aggressiveness_attribute : integer
efficiency_attribute : integer
trading_attribute : integer
swindling_attribute : integer
------- //Combien de professions par personnage?
#first_profession_id : integer
first_profession_level : integer
xp : integer
xp_next_level : integer
-------
--

CHARACTER_SLOTS //Valeur booleenne indiquant si le slot est utilise ou non, pour les doigts.
--
%#character_id : integer
head_slot : bool
face_slot : bool
neck_slot : bool
shoulders_slot : bool
arms_slot : bool
torso_slot : bool
wrists_slot : bool
ands_slot : bool
belt_slot : bool
legs_slot : bool
feet_slot : bool
#finger_slots_number : integer //se reporter à la table PEUPLE finger_slots_number == PEUPLE.finger_slots_number - SLOTS_PERSONNAGES.finger_slots_number
--

OBJECT_SLOTS //On peut utiliser plusieurs slots pour un seul objet.
--
%object_id : integer
used_slot : varchar(10) //emplacement sur le corps : "tete, visage, cou, epaules, bras, torse, poignets, gants, ceinture, jambes, pieds" (me dire s'il faut en ajouter)
--

OBJECT_TEMPLATE
--
%object_template_id : integer
name : varchar(30)
description : text
min_level : integer
max_level : integer
healing_bonus : integer
magic_bonus : integer
living_unit_training_bonus : integer
material_unit_training_bonus : integer
attack_bonus : integer
defense_bonus : integer
profession_bonus : integer
life_span : integer (-1 si illimité)
type : varchar(30)
iron_cost : integer
wood_cost : integer
cyniam_cost : integer
production_delay : integer
required_profession : id_metier
required_profession_level : integer
--

OBJECT
--
%object_id : integer
#object_template_id : integer
#character_id : integer
#creator_id : integer
--

PROFESSION_TEMPLATE
--
profession_id : integer
name : varchar(30)
description : text
--

CASE
--
%case_id : integer //advice : pos_x+pos_y
#world_id : integer
state : varchar(30) //Colonisée, pas colonisée...etc
pos_x : integer
pos_y : integer
geography : varchar(30)
climate : integer // climats a definir : "1:tres froid, 2:froid, 3:continental, 4:mediterrannen, 5:tropical, 6:desertique, 7:montagnard.....etc"
hydrometrics : integer // 5 stades : "1:Tres sec, 2:sec, 3:normal, 4:humide, 5:tres humide"
tile : id_tuile
size : integer
defense_bonus : integer
crops_growth_bonus : integer
--

VILLAGE
--
%village_id : integer
name : varchar(30)
#case_id : integer
#owner_id : integer //id du personnage propriétaire de la case/du village
population : integer
--

BUILDING_TEMPLATE
--
%building_template_id : integer
name : varchar(30)
description : text
basic_wood_price : integer
basic_iron_price : integer
basic_cyniam_price : integer
basic_peasant_price : integer
base_construction_delay : integer //En secondes pre exemple
--

BUILDING
--
%building_id : integer
#building_template_id : integer
#village_id : integer
building_level : integer
next_level_wood_price : integer
next_level_iron_price : integer
next_level_cyniam_price : integer
next_level_peasant_price : integer
next_level_delay : integer //En secondes per exemple
--

SCIENCE_TEMPLATE
--
%science_id : integer
name : varchar(30)
description : text
basic_wood_price : integer
basic_iron_price : integer
basic_cyniam_price : integer
basic_research_delay : integer //En secondes par exemple
--

SCIENCE //Une science est liee a un village
--
%science_id : integer
#village_id : integer
level : integer
next_level_wood_price : integer
next_level_iron_price : integer
next_level_cyniam_price : integer
next_level_research_delay : integer //En secondes
--

SPELL_TEMPLATE
--
%spell_id : integer
village_spell : bool //(true:village/false:unit)
namr : varchar(30)
description : text
damage_done : integer
invocation : id_unite //null si pas d'invocation d'unité
cast_delay : integer
cooldown_delay : integer
cyniam_cost : integer
mana_cost : integer
wizard_cost : integer
close_quarter_attack_bonus : integer
range_attack_bonus : integer
magic_attack_bonus : integer
close_quarter_defence_bonus : integer
range_defence_bonus : integer
magic_defence_bonus : integer
--

UNIT_SPELL
--
%#spell_id : integer
%#unit_id : integer
spell_level : integer
--

VILLAGE_SPELL
--
%#spell_id : integer
%#village_id : integer
spell_level : integer
--



UNIT_TEMPLATE
--
%unit_template_id : integer
name : varchar(30)
description : text
wood_cost : integer
iron_cost : integer
cyniam_cost : integer
training_delay : integer
food_upkeep : integer //Qte de nourriture consommee par unite de temps
cyniam_upkeep : integer
--

UNITE
--
%unit_id : integer
#unit_template_id : integer
#case_id : integer //pour la position sur la map de l'unit
#character_id : integer //id du personnage proprietaire
level : integer
xp : integer
xp_next_level : integer
close_quarter_attack : integer
range_attack : integer
magic_attack : integer
close_quarter_defence : integer
range_defence : integer
magic_defence : integer
current_hp : integer
max_hp : integer
moving_speed : integer
carriage_capacity : integer //pour des morceaux de bois par exemple, NB : MORCEAUX DE BOIS A IMPLEMENTER DANS LA BASE.
hero : bool //Pas bien compris le concept de Heros, peut etre a revoir.
--

DIVISION
--
%division_id : integer
#unit_id : integer
name : varchar(30)
close_quarter_attack : integer //somme des valeurs d'attaque au cac des unites composant la division.
range_attack : integer
magic_attack : integer
close_quarter_defence : integer //somme des valeurs de defense au cac des unites composant la division.
range_defence : integer
magic_defence : integer
--

ARMEE
--
%army_id : integer
name : varchar(30)
#first_division_id : integer //une armee est composee de 3 divisions.
#second_division_id : integer
#third_division_id : integer
moving_speed : integer
close_quarter_attack : integer
range_attack : integer
magic_attack : integer
close_quarter_defence : integer
range_defence : integer
magic_defence : integer
--

QUESTS //Pas bien compris le concept de quete, peut etre a revoir NB / A COMPLETER
--
%quest_id : integer
#creator_id : integer //id du personnage qui a créé la quête
#case_id : integer
description : text
reward : object_id
deadline : timestamp
--

MARKET
--
%order_id : integer
#object_id : integer
#seller_id : integer
#buyer_id : integer
auction_start_price : float
immediate_sell_price : float
deadline : timestamp
auction_current_price : integer
--

GUILD
--
%guild_id : integer
name : varchar(30)
#creator_id : integer
guild_birth_date : timestamp
--

GUILDE_CHAR
--
%#guild_id : integer
%#member_id : integer
rank : varchar(30) //rangs à définir
--

PACT_TEMPLATE //Il peut s'agir par exemple d'un pacte de non-agression.
--
pact_template_id : integer
name : varchar(30)
description : text
--

PACT
--
%pact_id : integer
#pact_template_id : integer
#first_guild_id : integer
#second_guild_id : integer
--
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Base de données   

Revenir en haut Aller en bas
 
Base de données
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Base de donnée étendue pour Star Wars D6
» Base de Données Française SW JCE
» Correction de la base de donnée
» Base de données des Surnoms
» Base de données pour avatar

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
LiberTribes, les Tribus d'Hegoa projet lauréat 2006 Envie d'agir :: Developpement, Programmation informatique :: SQL-
Sauter vers: