aboutsummaryrefslogtreecommitdiffstats
path: root/doc/Proposition initiale.tex
blob: da69071f9fe037cc612b77751e321e0e41ad2862 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
\documentclass{article}
\usepackage{luatextra}
\usepackage{polyglossia}
\usepackage{ulem}
\usepackage{framed}
\usepackage{color}
\usepackage{listings}
\usepackage{geometry}
\usepackage{amsmath}
\usepackage{unicode-math}
\usepackage{hyperref}

\usepackage{ifluatex}
\ifluatex
  \usepackage{pdftexcmds}
  \makeatletter
  \let\pdfstrcmp\pdf@strcmp
  \let\pdffilemoddate\pdf@filemoddate
  \makeatother
\fi
\usepackage{svg}

\setmathfont{xits-math.otf}

\setmainlanguage{french}
\setmainfont{Latin Modern Roman}

\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}

\lstset{language=bash,
  basicstyle={\small\ttfamily},
  keywordstyle=\color{blue},
  commentstyle=\color{dkgreen},
  stringstyle=\color{mauve},
  tabsize=4
}


\geometry{margin={1in,1in}}

\newcommand\image[2]{
\directlua{
local image = img.scan({filename = "#1"})

image.height = image.height * #2
image.width  = image.width  * #2

node.write(img.node(image))
}
}

\title{Organisation}
\author{Alexandre RENOUX - Pierre-Emmanuel NOVAC}

\begin{document}

\maketitle
%%\tableofcontents

\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 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}
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}
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}
\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}
\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}