diff options
author | piernov <piernov@piernov.org> | 2016-04-24 22:31:01 +0200 |
---|---|---|
committer | piernov <piernov@piernov.org> | 2016-04-24 22:31:01 +0200 |
commit | bcb8e2941d109daa70b2b129f2345531ded90ba2 (patch) | |
tree | ba0f28a6140ede1ad3be15dab887b7decd275779 /doc/Proposition initiale.tex | |
parent | 64e92bb7b10bf521aa2992d20c243c41573e0ee8 (diff) | |
parent | 24e5042fb1a1686fbaa994dc63bd1bd66cd918a0 (diff) | |
download | candybox-bcb8e2941d109daa70b2b129f2345531ded90ba2.tar.gz candybox-bcb8e2941d109daa70b2b129f2345531ded90ba2.tar.bz2 candybox-bcb8e2941d109daa70b2b129f2345531ded90ba2.tar.xz candybox-bcb8e2941d109daa70b2b129f2345531ded90ba2.zip |
Merge branch 'doc' into piernov
Diffstat (limited to 'doc/Proposition initiale.tex')
-rw-r--r-- | doc/Proposition initiale.tex | 69 |
1 files changed, 31 insertions, 38 deletions
diff --git a/doc/Proposition initiale.tex b/doc/Proposition initiale.tex index cc84261..da69071 100644 --- a/doc/Proposition initiale.tex +++ b/doc/Proposition initiale.tex @@ -59,54 +59,47 @@ node.write(img.node(image)) \maketitle %%\tableofcontents -\section{Fonctionalités} +\section{Fonctionnalités} \subsection{Mine} -La quantité d'or disponible dans la mine augmente périodiquement. Ce comportement est géré côté client en Javascript à l'aide d'une méthode programmée par \lstinline{window.setInterval}. On n'enverra pas une requête au serveur à chaque incrémentation pour limiter les problèmes de latence et ne pas avoir un flot de données transférées trop important. L'utilisateur pourra choisir à tout moment de transférer la quantité d'or disponible dans la mine vers son compte courant. Cette opération effectuera une requête vers le -bouton envoi requête au serveur avec le montant de la mine pour l'ajouter à l'or de la session de l'utilisateur. Cette opération passera par une requête au serveur, qui mettra alors à jour le solde et qui l'enverra au client. Le client remettra la quantité d'or dans la mine à zéro. +La quantité d'or disponible dans la mine augmente périodiquement. Ce comportement est géré côté client en Javascript à l'aide d'une méthode programmée par \lstinline{window.setInterval}. On n'enverra pas une requête au serveur à chaque incrémentation pour limiter les problèmes de latence et ne pas avoir un flot de données transférées trop important. L'utilisateur pourra choisir à tout moment de transférer la quantité d'or disponible dans la mine vers son compte courant. Cette opération effectuera une requête vers le serveur avec le montant de la mine pour l'ajouter à l'or de la session de l'utilisateur et renvoyer le nouveau solde. Le client réinitialisera la quantité d'or dans la mine et mettra à jour l'affichage. \subsection{Guilde de mineurs} -La création d'une guilde de mineurs demandera une certainer quantité d'or. Puis le recrutement de mineurs requierera aussi une quantité d'or. Ces requêtes seront envoyées au serveur qui décidera d'honorer ou non la demande, renvoyant au client les nouvelles informations pour mise à jour de l'affichage. Un nouveau mineur sera automatiquement assigné à la mine, et dès lors il apportera un bonus sur la quantité d'or perçue. - +Devra être construit au préalable. \\ +La création d'une guilde de mineurs ainsi que le recrutement de mineurs demanderont une certaine quantité d'or. Ces requêtes seront envoyées au serveur qui décidera d'honorer ou non la demande, renvoyant au client les nouvelles informations pour mise à jour de l'affichage. Un nouveau mineur sera automatiquement assigné à la mine, et dès lors il apportera un bonus sur la quantité d'or perçue. \subsection{Magasin} -Le magasin lira la liste des objets disponibles à partir d'un fichier stocké sur le serveur (en XML par exemple). Lors du chargement de la page cette liste sera transmise au client. -bouton → réclamation d'un certain objet au serveur parmi une liste prédéfinie - → renvoi l'objet au clietn pour affichage - Les objets incluence lde pouvoir d'attaque (pourcentage de chance de toucher) - -\subsection{Doinjon} → bouton → entre dans le donjon et lance le combat - - déroulement du combat côté client (perte de point de vie et victoire/défaite) - ensuite envoi du résultat du combat - côté serveur: tableau des différents monstres à combattre dans l'ordre - À l'issue du combat seulement le résultat est envoyé au serveur car on récupère le niveau du monstre et le nombre d'expéreince gagné associé dans le tableau - incrémentation et augmentation de niveau potentiele - "n" monstre par étage - Si le boss est vaincu, appelle fonction de fin du donjon - -\subsection{bouton enregistrement/chargement de partie}: normalement toutes les données intéressantes sont dans \$SESSION côté serveur on transforme le tableau en fichier XML - bouton load: opération inverse càd on remplkit \$SESSION avec les données du XML et on envoi tout au client - +Devra être construit au préalable. \\ +Le magasin lira la liste des objets disponibles à partir d'un fichier stocké sur le serveur (en XML par exemple). Lors du chargement de la page cette liste sera transmise au client. L'achat d'un objet se fera par l'intermédiaire du serveur, qui vérifiera le solde, débitera le compte et ajoutera l'objet à l'inventaire. Il renverra au client les informations utiles. Ces objets permettront par exemples d'augmenter la probabilité de toucher un ennemi ou augmenter le nombre de points de vie. + +\subsection{Donjon} +Le joueur peut à tout moment choisir d'entrer dans le donjon. À l'intérieur du donjon, il n'aura plus la possibilité de récupérer l'or de la mine.\\ +Les paramètres des étages du donjon et des monstres (nombre, niveau, nombre de points de vie, probabilité d'apparition, etc…) seront stockés dans un fichier sur le serveur (XML par exemple). Le déroulement du combat avec un monstre se fera côté client et l'issue sera envoyé au server. Ce dernier calculera le gain d'expérience et augmentera le niveau du joueur le cas échéant. Si il meurt avant la fin, le joueur perd de l'or. S'il réussit à battre le boss finale, il obtiendra un bonus d'or. + +\subsection{Enregistrement/chargement de partie} +Toutes les données à propos du jeux sont ainsi stockées dans la session de l'utilisateur côté serveur. Il suffira de sauvegarder le contenu du tableau \$\_SESSION dans un fichier XML pour enregistrer la partie. Le chargement de la partie procèdera à l'opération inverse, et enverra toutes les informations utiles au client. + \subsection{Interface utilisateur} +L'interface utilisateur restera sobre: un cadre contiendra les statistiques actuelles (or, niveau du joueur, etc...), un autre cadre listera les opérations possibles énumérées ci-dessus. Enfin, une zone sera réservée à la création de bâtiment, l'achat d'objets dans le magasin et les interactions dans le donjon. \section{Technologie} - -XHTML: pour affichage de la page web principale -CSS: Bootstrap style des boutons -Javascript: affichage dynamique, interaction dynamique avec l'interface utilisateur -Ajax: interaction dynamique client/serveur. Envoi des données au serveur -PHP: Session, stockage des données, envoie des données au client pour affichage -XML: pour sauvegarder et charger une partie -JSON: structure syntaxique pour transfert serveur/client -Git: gestion du code - -Hébergement sur piernov.org +\begin{itemize} +\item XHTML: pour affichage de la page web principale +\item CSS: Bootstrap +\item Javascript: affichage dynamique, interaction dynamique avec l'interface utilisateur +\item Ajax: interaction dynamique client/serveur, envoi des données au serveur +\item PHP: session, stockage des données, envoie des données au client pour affichage +\item XML: sauvegarde et chargement d'une partie, paramètres du jeu +\item JSON: transfert serveur/client +\item Git: gestion du code +\item Hébergement sur piernov.org +\end{itemize} \section{Planification} - -1ère semaine: mine, guilde, magasin -2e semaine: donjon + save/load(XML) -3e semaine: interface utilisateur, bugs, rapport, préparation soutenance. - +\begin{itemize} +\item 1ère semaine: mine, guilde, magasin +\item 2e semaine: donjon + save/load(XML) +\item 3e semaine: interface utilisateur, bugs, rapport, préparation soutenance. +\end{itemize} \end{document} |