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 | 
 

 Work In Progress : Architecture globale du jeu (Piwaï)

Aller en bas 
Aller à la page : 1, 2  Suivant
AuteurMessage
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Work In Progress : Architecture globale du jeu (Piwaï)   Jeu 19 Juil - 0:59

Bien le bonjour.

Je créé ce post pour noter, jour après jour, ce que j'ai fait et ce que j'ai à faire.

Il est minuit, je suis crevé et demain jme lève à 7h30 (ça va encore, remarquez)... J'ai passé toute ma journée devant un PC... et toute ma soirée sur libertribes.

Il est désormais possible de s'inscrire, valider son compte, et se logguer. L'accès aux pages du site est sécurisé dans son intégralité, et il faut paramétrer les pages que l'on ne veut pas sécuriser (exemple : la page d'accueil). A tel point d'ailleurs qu'il faut (parce que jmen suis pas encore occupé) se logguer pour voir les erreurs 404 lol... Tu met n'importe quoi dans l'url, hop ca te propose de te loguer.


Le système de validation n'est pas encore parfait, mais je progresse dans la maitrise... Demain est un autre jour Wink .


Dernière édition par le Dim 29 Juil - 22:32, édité 3 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Jeu 19 Juil - 10:29

Tout d'abord, je vais résumer ce que je devais faire hier :
- Créer le module accueil
- Désactiver sfGuardUser
- Remplacer le module zoneJeu par le module game.
- Créer le module sfGuardAuth.
- Faire hériter sa classe d'actions de BasesfGuardAuthActions
- Ajouter les action register (pas de credential), validate (credential :
valide)(cf ici : http://trac.symfony-project.com/trac/browser/plugins/sfBlogPlugin/modules/blog_auth/lib/BaseBlog_authActions.class.php)
- Créer les templates signinSuccess.php, secureSuccess.php,
registerSuccess.php, registerDone.php, validateSuccess.php,
validateFailure.php
- dans schema.yml, supprimer la table joueur
- Ajouter la table user_profile (sans etatJoueur, qui est désormais un droit).
- Modifier app.yml :
Code:

all:
  sf_guard_plugin:
    profile_class:      userProfile
    profile_field_name: user_id 
    success_signin_url:      module/action
    success_signout_url:    module/action
- Modifier security.yml de l'application : mettre is_secure: on et credentials: valide dans :all.
- Modifier security.yml du module accueil : mettre is_secure: off dans :all.
-
Mettre en places les scripts de migration disponibles ici :
http://trac.symfony-project.com/trac/wiki/Migrations -> permet de
modifier la bd petit à petit.
- Créer les credentials dans la bd, via les modules d'administration sfGuardGroup, sfGuardPermission, sfGuardUser.

- Voir comment envoyer un mail lors du register, et comment générer le code de validation.
- Créer le template indiquant qu'on a pas le credential, pour les gens inscrits mais non validés -> c'est secureSuccess.php

Voir ici pour sfguard (enfin la c'est doctrine, mais au moins j'ai les sources) :
http://www.symfony-forge.com/sfGuardDoctrinePlugin/docs/-sep-__filesource-sep-fsource_sfGuardDoctrinePlugin__libmodeldoctrinePluginsfGuardUser.class.php.html#a146


Pour les emails : http://www.symfony-project.com/askeet/12


---------------------------------------------------------------
Ce que j'ai fait qui est différent de ce qui était prévu :
Pas de migrations : l'outil n'est pas encore réellement efficace, il faut faire les migrations en SQL et pas en yaml, ce qui perd beaucoup de son intéret.

Pas de credentials : le user de sfguard comprend déjà un champ is_valide. Si ce champ n'est pas validé, le joueur ne peut pas se connecter -> Ca résout le problème.

Pas de registerDone.php, mais une redirection une fois enregistré (pour des raisons de logique et en cas d'actualisation de la page).

Je n'ai pas eu le temps de voir pour le système de mail, et la validation est primaire.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Jeu 19 Juil - 11:20

NOTE : CE FORUM EST POURRI !!
Quand j'édite un message qui contient du code html, celui-ci disparait.. comment je fais pour noter mes codes ? Bah

je vais faire un autre post à chaque fois Wink

- Ajouter la fonction de mail à register.
Pour envoyer des mails : http://www.symfony-project.com/askeet/12
Code:
symfony init-module libertribes mail
Dans les actions :
Code:

public function executeSendRegister()
{
$this->mail = new sfMail();
$this->mail->addAddress($this->getRequestParameter('email'));
$this->mail->setFrom('Libertribes ');
$this->mail->setSubject('Inscription à Libertribes');

$this->mail->setPriority(1);

//Possibilité d'ajouter des fichiers, des images, en fichiers joints.

$this->username = $this->getRequest()->getAttribute('username');
$this->password = $this->getRequest()->getAttribute('password');
$this->key = $this->getRequest()->getAttribute('key');
}

Créer le template sendRegisterSuccess.php
Code:

<p>Bienvenue sur Libertribes!!</p>
 
<p>Ce site est actuellement en version alpha, merci de nous remonter tout bug découvert.</p>
 
<p>Un peu de blahblah, parce que c'est une alpha ;)</p>
 
<p>Pour valider votre compte, veuillez suivre ce lien :<br />
<?php echo link_to('sfGuardAuth/validate?key='.$key) ?>
</p>

<p>Veuillez conserver ces informations de connexion :</p>
 
<p>
Pseudo : <strong><?php echo $username ?></strong><br/>
Mot de passe : <strong><?php echo $password ?></strong>
</p>
 
<p>Pour vous connecter, allez sur la <?php echo link_to('page de connexion', 'sfGuardAuth/login') ?>.</p>
 
<p>Nous espérons vous voir participer activement à Libertribes.</p>
 
<p>L'équipe Libertribes</p>

Créer le template sendRegisterSuccess.altbody.php

Code:

Bienvenue sur Libertribes!!
 
Ce site est actuellement en version alpha, merci de nous remonter tout bug découvert.
 
Un peu de blahblah, parce que c'est une alpha ;)
 
Pour valider votre compte, veuillez suivre ce lien :

http://www.libertribes.fr/sfGuardAuth/validate?key=<?php echo $key ?>

Veuillez conserver ces informations de connexion :
 
Pseudo : <?php echo $username ?>

Mot de passe : <?php echo $password ?>
 
Pour vous connecter, allez sur la page de connexion :

http://www.libertribes.fr/login
 
Nous espérons vous voir participer activement à Libertribes.
 
L'équipe Libertribes

Créer le fichier mailer.yml pour qu'en dev ça envoie pas de mail.
Code:

dev:
  deliver:    off

all:
  mailer:    sendmail

Créer le fichier module.yml, pour empecher l'accès à la page depuis l'extérieur :
Code:

all:
  is_internal: on

Créer la table register, avec comme champs :
id, user_id (foreign key machin..), key: string, created_at:, first_village: string.

(Ca va permettre d'éliminer les inscriptions non validées, plus tard).

Modifier l'action register de sfGuard :
Code:

    $key = md5(rand(100000, 999999));

    //Enregistrer les infos dans la table register -> Notamment le nom du premier village.

    //A priori je commante car c'est déjà dans la requete.
    //$this->getRequest()->setAttribute('password', $user->getPassword());
    //$this->getRequest()->setAttribute('username', $user->getUsername());
    $this->getRequest()->setAttribute('key', $key);


    $raw_email = $this->sendEmail('mail', 'sendRegister');
    $this->logMessage($raw_email, 'debug');

Créer les tables village, et ce qui est nécessaire en même temps.
Code:


Ajout d'un last_request: timestamp pour user_profile.

  stock:
    id:
    iron: int
    food: int
    wood: int
    cyniam: int
    mana: int

  filled_box:
    id:
    x: int
    y: int
    stock_id:
    user_profile_id:

  built_box:
    id:
    type: int
    filled_box_id:
   
  town:
    id:
    name: string
    total_space: int
    used_space: int
    built_box_id:
    user_profile_id:

  map_zone:
    id:
    x: int
    y: int
    enabled: boolean
    created_at:
    updated_at:

symfony propel-build-model
symfony propel-build-sql
-> Ne récupérer que les parties intéressantes et les executer.

Modifier l'action validate de sfGuard :
-> Elle va voir si la clé existe dans la table register, si oui elle trouve l'utilisateur correspondant, vérifie

qu'il n'est pas déjà validé, et le valide. Elle supprime l'enregistrement de la table inscription.
Elle créé ensuite le premier village de l'utilisateur (récupère la dernière map_zone créée, puis une boucle

aléatoire sur la position du village, en vérifiant qu'il n'y en a aucun autour. La taille est aléatoire en fonction

du terrain).-> L'algorithme est à améliorer.

-Créer l'action overview dans le module game, vers laquelle redirige l'action index.
-Créer le template overviewSuccess.php
-Y afficher le nom des villages du joueur.

- Créer la fonctionnalité "oublie du mot de passe", ou l'on doit rentrer le mail et le login, avec le renvoit par

mail d'un nouveau mot de passe aléatoire. Dans l'idéal : ca envoie un lien par mail qui permet de valider le fait

qu'on veuille un nouveau mot de passe, ou non. Et ensuite on renvoie un mail pour donner le nouveau mot de passe ->

Création d'une clé aléatoire enregistrée dans la base, avec un compteur. Chaque fois qu'on redemande le mot de passe

pour le même utilisateur, la clé est incrémentée. On enregistre la date de la dernière demande. Lorsqu'une demande

est validée, on efface de la table. Si le nombre de demandes dépasse un seuil, et que la dernière demande est

récente, on refuse la demande.

Créer un password aléatoire :
Code:
$password = substr(md5(rand(100000, 999999)), 0, 6);

-Ajout d'un filtre après security (dans libertribes/config/filters.yml), pour enregistrer la dernière demande->

last_request sur user_profile + save ? (-> plus besoin de faire des save sur le user_profile).


Créer apps/libertribes/lib/lastRequestFilter.class.php
Code:

class lastRequestFilter extends sfFilter
{
  public function execute($filterChain)
  {
 
    // Execute next filter
    $filterChain->execute();

    $user=$this->getContext()->getUser();
    if (!$user->isAnonymous()) {
      $profile=$user->getProfile();
      $profile->setLastRequest(time());
      $profile->save();
    }
  }
}

Modifier apps/libertribes/config/filters.yml, mettre au milieu :
Code:

last_request:
  class: lastRequestFilter

Voir pour la conf de fichiers-> http://www.symfony-project.com/book/trunk/05-Configuring-Symfony


Voir pour le système de map->Comment faire pour ajouter des zones à tout moment ? ->Dans le soft de production de

map, définir les coordonnées de départ. Possibilité de coordonnées négatives. Enregistrer en bd les zones activées.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Ven 20 Juil - 10:34

Gros gros soucis...

Hier soir, j'avais quasi tout fini ce que je voulais faire...

La dessus, je décide de tester le svn...


Je fais une copie du dossier avant, au cas ou.

je fais un check out, il me dit ok, mais je vois pas de fichiers créés... étrange.. et pas de .svn non plus. D'autres part, impossible de l'ouvrir avec le client graphique, kdesvn. Serait-ce du au "svn+ssh" ? (ce qui, notez-le, ne se fait jamais dans les projets, étant donné que ya déjà un mot de passe pour le svn... mais bon, on n'est pas un projet normal, hein néo ?).

Donc jme dit "ché pas ske ca a fait, mais apparement rien de très intéressant". Je décide d'éffacer le dossier, et de le remplacer par la copie.

Mal m'en a pris... Ca a bien tout recopié. Sauf que certains fichiers avaient des droits particuliers... et que ça les a pas gardés. La dessus, hop le site en local ne marche plus...

J'ai passé bien 1h30 dessus... Pas moyen de rétablir le projet pour qu'il marche. Enfin... il ne manque qu'un "petit" truc, et si je désactive ce truc, ça marche. Sauf que moi, j'en ai besoin de ce truc, et puis ça marchait avant.


Me suis couché vers minuit 30, j'arrivai à peine à dormir, trop véner...

Rassurez-vous, rien n'est perdu : j'ai encore mes sources, et a priori, en procédant méthodiquement, ça devrait marcher.

Seul soucis : ce weekend, je passe tout mon temps avec ma copine. Ce qui veut dire que je ne ferai rien avant lundi soir.

A faire lundi soir :

1)Etablir un diagnostic : soit c'est mon projet qui déconne, soit c'est symfony que j'ai foutu en l'air. Pour le voir, il va falloir que je créé un nouveau projet, et que je fasse mon petit "truc" qui marche pas pour l'autre. Si c'est symfony qui foire, une petite réinstall et ça devrait rouler, et si c'est le projet, bah va falloir que j'y aille tranquillou en reconstruisant le projet et en testant phase par phase.

Plus de détails dans la journée Wink


Hum... Je viens de m'apercevoir que j'avais exactement le même ptit problème sur le serveur, alors que je viens d'y créer un projet neuf, et que c'set le symfony que sam a installé.

Pour vous résumer le soucis : J'ai créé un filtre qui va permettre, lorsqu'on est loggué, d'enregistrer à chaque requete la date de la dernière requete d'un utilisateur. L'interet, c'est de savoir si un joueur est connecté (on dit qu'il est connecté si sa dernière requete date de moins de 5 minutes par exemple).

La classe du fichier est censée être 'autoloadée', parce qu'il est callé dans le dossie lib de l'application libertribes. Et la, il n'est pas autoloadé par le cache (que j'ai bien sur vidé Wink ).

Mais comme le soucis apparait aussi sur le serveur, c'est plutôt (normalement) une bonne nouvelle, ça veut dire que c'est moi qui déconne.

Donc jvais continuer à chercher Wink (heureusement qu'il ya putty Very Happy).

------------------------------------
Sur le serveur : problème résolu, débilité de ma part.
Chez moi : si j'ai fait la même connerie, le problème devrait se résoudre. Sauf qu'il ne me semble pas que ce soit le cas, mais je testerai ça Wink.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Ven 20 Juil - 15:33

Une fois que j'arrive à faire fonctionner le projet en local :
Se placer dans le dossier racine de mon www local.

Code:
svn co svn+ssh://piwai@revevolutionnair.com/svn/projetmmo/libertribes www

Code:

export SVN_EDITOR=vim
cd www

rm -rf cache/*
rm -rf log/*
#Si nécessaire
chmod 777 cache
chmod 777 log
svn add * --force
svn propedit svn:ignore log
svn propedit svn:ignore cache
svn commit

Ce qu'il faudra que je fasse après :

Dans libertribes/config/settings.yml (pour ajouter un .html aux url).
Code:

dev:
  .settings
    suffix:        .html
prod:
  .settings
    suffix:        .html
-------------------------------------------------------------
Création du premier village :
Récupérer la dernière zone créée qui est enabled. Boucle while qui sélectionne une case au hasard, et qui valide seulement si cette case n'est pas occupée, et qu'aucune des 8 cases autour n'est occupée. Au bout de X tours, elle prend la première case non occupée qui vient.
-------------------------------------------------------------
Lors de l'appel à register, il faut créer une variable en flash, pour limiter l'accès à l'action registered.
-------------------------------------------------------------
Oubli de mot de passe :

- Créer la fonctionnalité "oublie du mot de passe", ou l'on doit rentrer le mail et le login, avec le renvoit par mail d'un nouveau mot de passe aléatoire. Dans l'idéal : ca envoie un lien par mail qui permet de valider le fait qu'on veuille un nouveau mot de passe, ou non.

Et ensuite on renvoie un mail pour donner le nouveau mot de passe -> Création d'une clé aléatoire enregistrée dans la base, avec un compteur. Chaque fois qu'on redemande le mot de passe pour le même utilisateur, la clé est incrémentée. On enregistre la date de la dernière demande. Lorsqu'une demande est validée, on efface de la table. Si le nombre de demandes dépasse un seuil, et que la dernière demande est récente, on refuse la demande.

Créer un password aléatoire :

Code:

$password = substr(md5(rand(100000, 999999)), 0, 6);
-------------------------------------------------------------
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Sam 21 Juil - 20:15

Je passe un tout ptit peu de temps dessus ce weekend : j'ai résolu le problème. Jdevais être très fatigué, jvois pas ou j'ai merdé... enfin bref...

Note : penser à créer un module d'affichage des pages d'erreurs (404, 505, etc) et à le dé sécuriser.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Lun 23 Juil - 11:45

J'ai redéfini les pages par défaut.

J'ai enfin mis les fichiers à dispo sur le svn.

J'ai tenté de mettre en place le serveur. Après quelques soucis du au cache (??) ça commence à marcher.

J'ai un problème de no_script_name, que j'ai du désactiver pour le moment (on verra si j'ai des réponses sur le forum symfony).

Petit soucis d'accès à la bd, il manque les droits insert au user libertribes... lol néo Wink .

EDIT : néo m'a réglé ça. Il y a encore le problème de no_script_name.

Je modifie un peu l'interface dev, avec la validation, pour que ça soit plus clair.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Lun 23 Juil - 12:29

TODO :

- Régler cette histoire de no_script_name (pas urgent, mais quand même...)
Cf mon post ici : http://www.symfony-project.com/forum/index.php/t/7731/)

- Voir pourquoi les mails ne sont pas envoyés (Symfony n'indique aucune erreur) -> Voir éventuellement avec Néo pour les logs du mailer.

- Ajouter la possibilité d'oubli de mot de passe (CF PLUS HAUT) quand les mails marcheront.

- Ajouter la création du premier village (CF PLUS HAUT) (peut-être semaine prochaine).

- Mettre en place la messagerie et les logs système.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Mar 24 Juil - 0:02

-> Messagerie en place.
Comptes réinitialisés Wink .

Voir pour comment modifier le message d'erreur quand le pseudo ou login est invalide (pour l'instant, message d'origine en anglais).

Reproduire le principe de la messagerie, mais pour les logs.
-> un helper de controleur pour envoyer un log ?

Déplacer autocomplete de messages vers sfGuardAuth ...

@++

Piwaï
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Mar 24 Juil - 12:25

Ce que j'ai fait :

Création du module users, détaché du module sfGuardAuth, qui lui ne sert plus qu'au login et logout (c'est plus logique)

Ajout du système de logs.
autocomplete a été déplacé.

Ajout de la fonction sendLog dans en static de LogPeer.

Ajout d'ajax dans la visualisation des logs + gestion si le user n'a pas activé javascript.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
neosys

avatar

Nombre de messages : 878
Age : 40
Localisation : rouen
Date d'inscription : 09/08/2006

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Mar 24 Juil - 15:04

Je post recrutement sur PHP france?
Tu informe ta liste de diffusion [INSA]?

Ou ca te semble trop tôt? Pour moi je pense qu'il faut pas hésiter...

Neosys
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Mar 24 Juil - 23:59

C'est peut-être un peu tôt.

Pourrais-tu faire un post (pas ici,
un nouveau post) sur le recrutement de developeurs, en résumant un peu
projet mmo, etc... Je le lirai, je corrigerai les fautes, et
j'ajouterai les notions techniques, ca te va ?



Résumé :
Messagerie en place

Logs en place, tout en ajax fun et d'autres part ça marche si on désactive l'ajax.



Note : Qui est donc l'utilisateur 'bazum' 'zumba' ?? Bazum bazum baba...
Qui paie son bazoom ?
http://desencyclopedie.wikia.com/wiki/Bazoom
https://www.youtube.com/watch?v=l3eTO82kLbo

TODO :

- Modifier le message
d'erreur quand le pseudo ou login est invalide (pour l'instant, message
d'origine en anglais).

- Faire fonctionner l'envoi d'emails (tester directement la fonction mail de php)

- Trouver comment activer no_script_name

- Oubli de mot de passe

- Réfléchir à la map, au premier village : décider des étapes de développement.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Mer 25 Juil - 13:09

Fait : Liste des utilisateurs, avec recherche d'un utilisateur.

Encore et toujours du refactoring.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
neosys

avatar

Nombre de messages : 878
Age : 40
Localisation : rouen
Date d'inscription : 09/08/2006

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Mer 25 Juil - 13:15

La map La map La map.
neosys
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Mer 25 Juil - 16:23

Un peu de réflexion autour de la map (pas mal de choses à faire) :

1) Le logiciel créé une série de fichiers, à partir de 3 images en niveaux de gris, d'images de tuiles et de fichiers de configuration (notamment : position de la coordonnées 0.0 -> Cela permet de définir un centre du monde, mais celui-ci est extensible éventuellement). Ces fichiers sont :

- Des images carrées. Chaque image représente une zone de la carte. Le nom de l'image est Map_X_Y.png, avec X et Y les coordonnées de la case en haut à gauche de l'image (exemple : Map_30_60.png ou encore Map_-30_30.png : on envisage le fait que les coordonnées puissent être négatives)

- Un fichier texte associé à chaque image. Ce fichier permet de définir la composition de la zone. Nom : Map_X_Y.txt .

- Un fichier de configuration en yml compréhensible par symfony, qui définit notamment les dimensions de la map, le point d'origine, etc.

2) Une classe métier Map, stockée dans lib/model : le constructeur prend les coordonnées x,y, et y associe en interne la zone à laquelle appartient ce couple (x,y). Il se sert du fichier de config symfony généré. Il va lire le fichier texte correspondant, et stock aussi le nom de l'image correspondante. Il a des méthodes permettant d'obtenir des informations sur chaque coordonnée. Il charge donc en mémoire tous les villages de la zone concernée, et leurs joueurs associés, etc.

3) Gros travail de réflexion à faire sur la façon dont la map est affichée à l'écran. Recherche à faire sur le sujet.


Principe : que des div, et de la css. Aucun tableau (les tableaux sont des tableaux, pas des maps Wink ).

Un grand div qui contient l'image de fond.

Un div par case, qui contient éventuellement une image (sinon une image png transparente ? ou juste image de fond ?).
Une propriété mouseover sur chaque page, avec une belle infobulle, qui donne des infos sur la case et propose différentes actions.

4 fleches pour changer de zone.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Mer 25 Juil - 22:36

Partie 1) OK, j'ai modifié le programme mapMmo pour qu'il produise les résultats nécessaires. J'ai ajouté les fichiers au site web.

Partie 2) : En cours -> Penser à modifier mapMmo pour qu'il tienne compte du nouveau format et de l'écriture des constantes.

Ca commence à prendre forme : Une fois connectés, essayez l'url suivante :

http://libertribes.revevolutionair.com/libertribes_dev.php/map/show/x/-30/y/-60

Actuellement, aucun js utilisé. Mais ça pose quelques soucis d'affichage quand on sélectionne le texte, et ça rame un poil.

Idée : utiliser javascript avec une fonction qui repère la position de la souris. Dès que la souris change de case, on affiche en bas les infos sur la case. Dès qu'on click, on repère les coordonnées de la souris, et on envoie une requete ajax pour mettre à jour les infos latérales, qui indique les actions que l'on peut effectuer sur la case.
->Plus besoin de charger les stocks lors du chargement d'une zone.

Note : des liens dont je vais m'inspirer pour faire mon js :
http://www.siteduzero.com/forum-83-138804-1274024.html#r1274024
http://www.vladdy.net/demos/cropimage.html
http://www.webreference.com/programming/javascript/mk/column2/

C'est assez cool Wink .



RAaaa je hais le javascript. C'est le truc le plus galère à programmer du monde : aucune documentation officielle, des sites tous vieux de 5 ans, des codes non commentés ultra complexes, C'EST DE LA MERDE !!


J'ai hate d'être à demain soir, vivement le break Wink .
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Sam 28 Juil - 11:33

Bon, pour le JS, c'est fait. La map commence à se mettre en place, et mes idées aussi.

Todo :
Ajouter findPositionForFirstTown dans la classe Map en méthode statique.

Ajouter getFirstVillagePosition dans UserProfile.

Modifier user/validate.

Supprimer tous les comptes (désolé les gars, normalement c'est la dernière fois... à l'heure actuelle, vous n'avez aucun village d'enregistré Wink ).

Déplacer les images de map depuis Web vers data.
Créer une fonction qui utilise GD, se sert des raw de map, et créé des maps avec les villages etc dessinés dans web.

Lors de l'appel à map/show, comparer les dates de modif entre le raw et le produit, et redessiner si nécessaire. Redessiner si le fichier n'existe pas.

Après chaque modifcation ayant un impact sur une zone, redessiner celle ci (pour l'instant : juste l'ajout d'un village).

Rediriger map/show sans paramètres vers la zone du premier village (en attendant de meilleures idées). Ou vers la dernière visitée si c'est enregistré en session.

Mettre en place le moyen de changer de zone, en Ajax (fleches sur le côté ?). Il ne faut proposer que si les zones sont accessibles.

Redéfinir la page d'erreur quand la map n'existe pas.

Modifier le modèle : la quantité de mana est stockée dans un village, pas dans un stock Wink .

Normalement, quand ca sera fait, on pourra voir la map et les villages dessus...


Au niveau des villageois :

Les villageois sont vus comme des ressources. Il y a une sorte de jauge virtuelle, qui augmente en temps réel. Quand elle est remplie, la jauge retourne à 0 et le villageois est produit. Plus on a de villageois, plus ça produit vite. Plus on a un niveau élevé pour la natalité, plus ça produit vite.
Cependant, le taux de natalité diminue avec l'augmentation de la population (ce qui est très réaliste). Ainsi, quand on a peu de villageois, 2 villageois produisent 1 villageois toutes les 5 heures (c'est un exemple). Quand on en a 300, 1 toutes les 15 heures...

A VOIR : A la création du premier village, quels sont les bâtiments disponibles (s'il y en a), quelles sont les unités disponibles ? (que des villageois ? Combien ??).

Quelle règle pour l'espace disponible ? Fonction aléatoire de la géographie ?
-> Dépend seulement du relief. Modifie avec une valeur min et une valeur max.

Note : dans l'espace connecté, permettre une css pour chaque race.
Il faut une page de description en plus dans le module home

Penser à ajouter le remember_me.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Dim 29 Juil - 21:11

Bon bah... j'ai tout fait, et jsuis trop mort !! Tu parles d'un weekend pour se reposer...


Bon, me restera plus qu'à faire la liste de ce qu'il faudra faire...

Notamment : approfondir svn:ignore, parce que c'est pas clair.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Lun 30 Juil - 10:14

Nouvelle todo liste :
(en gras, ce qui a été réalisé)

Todo à long terme :
- Gestionnaire de news
- Gestionnaire de faq
- Recrutement
- Changer erreur sfGuard. fillin sfGuard en cas d'erreur.
- no_script_name à régler.
- Gestion de l'oubli de mot de passe
- Chercher comment ignorer certains fichiers du svn, les différentes possibilités
- Chercher la règle a définir pour empecher l'exploration des répertoires. C'est lié à no_script_name, car lorsqu'il marchera on aura plus ce problème.
- Lors de l'ajout du dessin des armées positionnées en extérieur, penser à faire un système de double cache : le dessin des villages est aussi en cache, car les armées sont souvent modifiées.
- Pour l'affichage de la map, ne pas mettre les quickinfo dans des div, mais utiliser javascript pour remplir un seul div (stocker éventuellement les données en JSON, ou autre), suivant le mousemove.
- Vérifier la validité du pseudo (pas d'espaces ni trop de caractères bizarres). -> A débattre...

Todo immédiat :
- Changer sha1 en md5.
- Créer les css humans.css et sulmis.css
- Supprimer la css main.css
- Dans l'autocomplete (et recherche), enlever les utilisateurs non activés
- Proposer un autocomplete lors de l'inscription pour permettre de vérifier si le pseudo existe déjà.
- module town dont l'index permet la visuation d'un village a soit.
- Modifier lt_link_to_town. Créer lt_link_to_map_town. Modifier les endroits ou ils sont utilisés.
- Créer les tables army et regiment
- Créer le module Army, avec l'action pour voir la liste de ses armées, et l'action pour voir l'armée sur un lieu. Si ce lieux est un village, ajouter des liens.
- Modifier la table town pour intégrer la jauge de villageois, et le timestamp du dernier calcul.
- Modifier le module town
- Créer la fonction de calcul augmentant la jauge des villageois et créant les villageois si nécessaire, avec des paramètres stockés dans species.yml (taux de natalité) et dans libertribes.yml (autre params).
- Ajouter des villageois lors de la création d'un village
- La fct de calcul doit être appellée au moins chaque fois qu'un joueur veut voir les unités sur son village.
- Mettre à jour la doc de mapMmo et le fournir en téléchargement.
- Faire des fonctions de transfers d'unités dans le modèle.
- Mettre texte en Bacchus disponible quelque part en ligne.
- Passer villager_births en float
- Quand on arrive sur la map pour la première fois, montrer le premier village dans le div ajax.
- Voir dans post forum symfony a propos cours sur override classes symfony.
- Créer une army si nécessaire (possibilité qu'il n'y en ai pas).
- Voir pour passer la requête en Propel
- Mettre les actions sous formes de fichiers séparés pour le module users (si nécessaire).
- Optimiser certaines pages au niveau des requetes (map, et village/calcul de villageois).

Comment empecher les attaques de joueur faible ? Quel est le critère de classement ?

->Chaque ressource dépensée ajoute des points, relativement à la valeur de la ressource par rapport au mana. Chaque 1000 points font 1 point de score.
-> Une fois par jour, on calcule le nouveau score (il faut donc un buffer de points, temporaire).

-> A ajouter dans la bd.


Dernière édition par le Ven 3 Aoû - 12:00, édité 13 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Mar 31 Juil - 15:14

Les règles définies sont finalement :



1)1 village de 2 villageois produit 1 villageois en 6 heures quelquesoit le taux de natalité
2)1 village de 100 villageois produit 3 villageois en 6 h pour un taux de natalité de 1.


3) 1 village de 50 villageois produit 8 villageois en 6 heures, pour un taux de natalité de 1.


4)Il faut 100000 points pour faire un villageois

J'ai des problèmes au niveau du choix de la fonction.

Dans un premier temps, je vais ne tenir compte que de la règle 1), et même pas du taux de natalité.

t * a * x

avec a = 100000 / 6*3600*2 = 2.3148

ce qui donne une fonction affine très moche.

Il faudra par la suite que je détermine une fonction f(x) qui, pour t=6*3600 et n=1 :

Tend vers 0 en l'infini.
Passe par 100.000 en x=2
Passe par 800.000 en x=50
Passe par 300.000 en x=100

En termes français, ça veut dire une fonction qui au départ soit croissante mais de manière moins forte qu'une affine, pour atteindre un sommet, puis redescendre en exponentielle décroissante.

Une fonction de la forme t*x*exp((-x + a) / b) tend bien vers 0 en l'infini, mais ne tiens compte que de deux des règles suivantes.

Il faut que je trouve un paramètre à introduire en plus, un ptit c, qui modifie bien la courbe. Peut-être un x^c au lieu du x dans les coeff.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Ven 3 Aoû - 12:21

Todo list actualisée :

Todo à long terme :
- Gestionnaire de news
- Gestionnaire de faq
- Recrutement
- Changer erreur sfGuard. fillin sfGuard en cas d'erreur.
- Gestion de l'oubli de mot de passe
- Chercher comment ignorer certains fichiers du svn, les différentes possibilités
- Lors de l'ajout du dessin des armées
positionnées en extérieur, penser à faire un système de double cache :
le dessin des villages est aussi en cache, car les armées sont souvent
modifiées.
- Pour l'affichage de la map, ne pas mettre les quickinfo
dans des div, mais utiliser javascript pour remplir un seul div
(stocker éventuellement les données en JSON, ou autre), suivant le
mousemove.
- Vérifier la validité du pseudo (pas d'espaces ni trop de caractères bizarres). -> A débattre...
- Refaire les diagrammes en tenant compte des modifications.
- Renommer les fichiers qui ne doivent pas être mis à dispo en nom.example (notamment, la config de database et la config du lieu ou est installé symfony).
- Mettre dans l'en tete de chaque fichier php (sauf les templates) une référence à la licence.
- Propel : comment faire plusieurs inserts d'un coup ? -> forum
- Gestionnaire de bugs et taches intégré, utilisant les droits sfGuard.
- Interface d'admin pour gérer les arbres de bâtiment et les arbres de technologies


Todo à court terme :
- Automatiser les transferts d'unités (pour les déplacements) dans les classes du modèle.
- Overrider la classe symfony sfWebResponse (cf forum)
- Transformer la requête SQL avec une sum en requête Propel.
- Exploser les fichiers d'actions en 1 fichier par action lorsqu'ils sont trop gros (notamment users)
- Réfléchir aux batiments, et aux recherches. Notamment au niveau de la configuration...
- Modifier la couleur du texte renvoyé par l'autocomplete.
- Intégrer la notion d'espèce d'un régiment. Répercuter partout ou c'est nécessaire.
- Ajouter un lien depuis le village vers la map
- Mettre en place les activités pour les villageois, et la production.
- Et voir comment fonctionnent les batchs en symfony.
- Créer une nouvelle application réservée au batch. Elle contient dans son dossier lib la classe de gestion de l'update. Elle contient un module avec une unique action, qui permet de lancer le batch à la main (en attendant d'avoir du cron). Le seul environnement doit être dev (au niveau de /web), car cette page n'a pas lieu d'être en prod. Elle doit être créée en local (prob de droits).
- Du JS sur la répartition des prods -> voir avec paodao
- Poser la question des droits et de symfony et www-data.
- Remettre le texte de Bacchus -> tâche à assigner à Pao Very Happy
- Réeffacer la bd
- Remplacer les données
- Remplacer les données de config par des données en bd
- Extraire les données fixes qui ne bougent pas quand on régénère la bd.
- town et user stockent les batiments et acquis qu'on peut effectuer.
- Faire la page des recherches et celle des bâtiments, réfléchir au concept.
- Créer le batch en mettant les bon droits au bon endroit.


Dernière édition par le Ven 10 Aoû - 11:45, édité 22 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Ven 3 Aoû - 15:21

Annonce :

Vidage total de la bd imminent !!
Edit : c'est fait.

Les raisons en sont simples : j'ai ajouté pas mal de choses au modèle, et il est relou d'entrer à la main les éléments manquants pour les comptes déjà créés par le passé. Je vais donc une fois de plus tout effacer (dès que j'ai intégré la possibilité d'avoir une espèce pour les régiments).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Sam 4 Aoû - 16:24

Ce que je fais en ce moment : faire en sorte qu'on puisse choisir les activités de production des villageois.

J'en profite aussi pour obtimiser au niveau scripts qui accède à la bd : l'objectif est de ne pas dépasser 10 requêtes par page (pour le moment).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Dim 5 Aoû - 23:18

A faire désormais :

S'occuper du batch pour lui donner une interface.
Faire la fonction de production des ressources.
Un peu de JS quand yora le temps pour le côté magique.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
[INSA]Piwaï



Nombre de messages : 424
Age : 32
Localisation : Rouen ou Paris
Date d'inscription : 23/04/2007

MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   Lun 6 Aoû - 11:25

Production des ressources opérationnelle !!
->En répartissant les villageois, vous pouvez produire des ressources.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.piwai.info
Contenu sponsorisé




MessageSujet: Re: Work In Progress : Architecture globale du jeu (Piwaï)   

Revenir en haut Aller en bas
 
Work In Progress : Architecture globale du jeu (Piwaï)
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Work In Progress 1 !
» Dictionnaire raisonné de l’architecture française: XIe/XVIe
» ¤~~You still have lots more to work on~~¤
» [Continent Nord] Centre d'Architecture militaire
» Architecture du Japon féodal

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 :: [ARCHIVE 2006/10] :: Avancement :: développement-
Sauter vers: