\documentclass[a4paper,12pt]{article}

\usepackage[french]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{tabularx}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{eurosym}
\usepackage{epsfig}

\title{AJAX 2024 - Descriptif du projet}
\author{D.Moreaux}

\begin{document}
\maketitle

\section{Introduction}
Le projet sera composé de deux volets auxquels on accédera par des 
URL différentes.
\begin{itemize}
\item L'éditeur de scénario
\item Le moteur de jeu
\end{itemize}

Il permettra d'encoder une aventure en mode texte selon le principe du
système The Quill 
\begin{verbatim}
https://www.worldofspectrum.org/infoseekid.cgi?id=0006857
\end{verbatim}
un programme utilisé pour créer un bon nombre d'aventures en mode texte dans
les années 80.

Plusieurs versions ont existé, les dernières permettant des actions automatiques
sur les objets. Le manuel de la version Amstrad de ces versions de The Quill peut être trouvé
à l'adresse
\begin{verbatim}
https://www.cpcwiki.eu/imgs/c/cf/The_Quill_%28Gilsoft%29_Manual.pdf
\end{verbatim}

Un guide du débutant qui propose une petite aventure peut être trouvé à
l'adresse 
\begin{verbatim}
https://archive.org/details/QuillBeginnersGuide
\end{verbatim}

Il est possible de tester le programme directement sur archive.org à l'adresse
\begin{verbatim}
https://archive.org/details/
  zx_Quill_Adventure_System_The_vC02_1983_Gilsoft_International
\end{verbatim}

\section{Structure du projet}
\subsection{Le moteur de jeu}
Pendant une partie, les éléments variables (drapeaux, position, position des
objets) sont conservés dans la session.

Un système de connexion (login/pass) permettra à plusieurs joueurs de jouer
simultanément mais permettra aussi une sauvegarde automatique lorsque l'on
fait un logout (si on quitte la page sans demander ``sauver et quitter'', la
partie en cours est perdue). Cette sauvegarde est automatique ainsi que la
récupération de l'état de la partie au retour.

En plus de cela, il sera possible d'utiliser les mécanismes de sauvegarde et
chargement ``in game''. Quand on demandera pour sauvegarder ou charger, une
liste des emplacements de sauvegarde sera proposée et on choisira l'emplacement
qui convient.

La page de jeu contient principalement la zone de texte (prévoir un nettoyage
lorsqu'on se déplace) et la zone d'entrée (validation soit par un bouton, soit
en interceptant la touche ``enter'').

La totalité de la mécanique de jeu sera située côté serveur, le client ne recevra que
ce qu'il doit afficher (ce qui permet d'éviter la fuite des informations).
\subsection{L'éditeur}
Contrairement au programme The Quill, le projet proposera un menu fixe
(barre de menu) qui permettra d'accéder aux différentes sections.

Au lieu d'utiliser un sous-menu permettant de lister, ajouter, effacer,\dots
on affichera les informations accompagnées de la mécanique qui permet de les
modifier (formulaire d'ajout, bouton d'effacement et d'édition). On utilisera
des boutons avec icônes pour modifier (un crayon) et effacer (une croix).

Pour les descriptions des pièces et les programmes, seule une version abrégée
sera affichée et en cliquant dessus, on aura un affichage complet.

Pour l'éditeur d'actions, les choix des mots, des conditions et des actions
seront fait à l'aide de listes déroulantes.

Lorsqu'il est nécessaire de préciser un objet, une salle ou un message, une liste
déroulante affichera le numéro et le nom de l'objet, la première ligne de la
description de pièce (ou un nombre maximum de caractères) ou le début du message.

Le mode de test ne sera pas inclus dans l'éditeur (il suffira de passer dans la
page du mode de jeu).

\subsection{Ajoutes possibles}
\begin{itemize}
\item On peut prévoir d'associer une image à une pièce qui apparaîtra quand la
pièce sera décrite.
\item On peut prévoir les extensions présentes au niveau du programme qui a
  suivi The Quill à savoir The P.A.W. (Professional Adventure Writer) mais
  ces ajoutes ne sont pas toujours aisées à implémenter (parser amélioré avec
  une gestion des adverbes et prépositions + mot par exemple)
\item On peut prévoir l'ajout de musiques (sous la forme de fichiers mp3 par
  exemple). Cela nécessiterait une nouvelle commande et la possibilité d'upload
  de fichiers (pas évident à réaliser en AJAX)
\item On peut utiliser l'API WebAudio pour implémenter la
  commande de son d'origine (l'API en question est assez compliquée)
\item On peut prévoir une rose des vents cliquable sur la page de jeu qui
  effectue automatiquement les ordres correspondant aux directions
\item \dots
\end{itemize}

\section{Aides au projet}
Différentes informations seront poussées dans la DB en cours de projet. Ces mises à
jour de la DB effaceront des changements que vous pourriez avoir faits.

Il s'agira de données de tests (pour lesquelles un fichier .SQL supplémentaire sera
fourni).

Je préviendrai avant d'effectuer ces changements, si vous désirez conserver les données
que vous avez encodées, pensez à sauvegarder votre base de données dans un fichier SQL.

Si de nouveaux éléments apparaissent dans la DB, il s'agira exclusivement d'ajoutes (de
colonnes, tables ou contenu). Aucune colonne ou table ne sera renommée ou effacée en cours
d'année. Cela assurera que le programme reste compatible avec la DB modifiée.

Les manuels cités ci-dessus décrivent parfaitement le cycle de jeu (sous forme
d'ordinogramme) et autres informations. Il y sera régulièrement fait référence.
\end{document}
