diff --git a/README.md b/README.md
index d340eee..6ad3063 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
[![pipeline status](https://gitlab.crans.org/ynerant/squirrel-battle/badges/master/pipeline.svg)](https://gitlab.crans.org/ynerant/squirrel-battle/-/commits/master)
[![coverage report](https://gitlab.crans.org/ynerant/squirrel-battle/badges/master/coverage.svg)](https://gitlab.crans.org/ynerant/squirrel-battle/-/commits/master)
[![Documentation Status](https://readthedocs.org/projects/squirrel-battle/badge/?version=latest)](https://squirrel-battle.readthedocs.io/fr/latest/?badge=latest)
-[![PyPI](https://img.shields.io/pypi/v/dungeon-battle)](https://pypi.org/project/squirrel-battle/)
+[![PyPI](https://img.shields.io/pypi/v/squirrel-battle)](https://pypi.org/project/squirrel-battle/)
[![PYPI downloads](https://img.shields.io/pypi/dm/squirrel-battle)](https://pypi.org/project/squirrel-battle/)
[![AUR version](https://img.shields.io/aur/version/python-squirrel-battle)](https://aur.archlinux.org/packages/python-squirrel-battle/)
[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0.txt)
diff --git a/docs/deployment.rst b/docs/deployment.rst
new file mode 100644
index 0000000..1a4860d
--- /dev/null
+++ b/docs/deployment.rst
@@ -0,0 +1,311 @@
+Déploiement du projet
+=====================
+
+.. _PyPI: https://pypi.org/project/squirrel-battle/
+.. _AUR: https://aur.archlinux.org/packages/python-squirrel-battle/
+.. _Debian: https://gitlab.crans.org/ynerant/squirrel-battle/-/jobs/artifacts/master/raw/build/python3-squirrelbattle_3.14_all.deb?job=build-deb
+.. _installation: install.html
+
+À chaque nouvelle version du projet, il est compilé et déployé dans PyPI_, dans
+l'AUR_ et un paquet Debian_ est créé, voir la page d'installation_.
+
+
+PyPI
+----
+
+Définition du paquet
+~~~~~~~~~~~~~~~~~~~~
+
+.. _setup.py: https://gitlab.crans.org/ynerant/squirrel-battle/-/blob/master/setup.py
+
+La documentation sur le packaging dans PyPI_ est disponible `ici
+`_.
+
+Le fichier `setup.py`_ contient l'ensemble des instructions d'installation du
+paquet ainsi que des détails à fournir à PyPI :
+
+.. code:: python
+
+ #!/usr/bin/env python3
+ import os
+
+ from setuptools import find_packages, setup
+
+ with open("README.md", "r") as f:
+ long_description = f.read()
+
+ setup(
+ name="squirrel-battle",
+ version="3.14",
+ author="ynerant",
+ author_email="ynerant@crans.org",
+ description="Watch out for squirrel's knifes!",
+ long_description=long_description,
+ long_description_content_type="text/markdown",
+ url="https://gitlab.crans.org/ynerant/squirrel-battle",
+ packages=find_packages(),
+ license='GPLv3',
+ classifiers=[
+ "Development Status :: 4 - Beta",
+ "Environment :: Console :: Curses",
+ "License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
+ "Natural Language :: French",
+ "Operating System :: OS Independent",
+ "Programming Language :: Python :: 3",
+ "Programming Language :: Python :: 3.6",
+ "Programming Language :: Python :: 3.7",
+ "Programming Language :: Python :: 3.8",
+ "Programming Language :: Python :: 3.9",
+ "Topic :: Games/Entertainment",
+ ],
+ python_requires='>=3.6',
+ include_package_data=True,
+ package_data={"squirrelbattle": ["assets/*"]},
+ entry_points={
+ "console_scripts": [
+ "squirrel-battle = squirrelbattle.bootstrap:Bootstrap.run_game",
+ ]
+ }
+ )
+
+Ce fichier contient le nom du paquet, sa version, l'auteur et son contact,
+sa description en une ligne et sa description longue, le lien d'accueil du projet,
+sa licence, ses classificateurs et son exécutable.
+
+Le paramètre ``entry_points`` définit un exécutable nommé ``squirrel-battle``,
+qui permet de lancer le jeu.
+
+
+Installation locale du paquet
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+L'installation du paquet localement dans son environnement Python (virtuel ou non)
+peut se faire en exécutant ``pip install -e .``.
+
+
+Génération des binaires
+~~~~~~~~~~~~~~~~~~~~~~~
+
+Les paquets ``setuptools`` (``python3-setuptools`` pour APT, ``python-setuptools``
+pour pacman) et ``wheel`` (``python3-wheel`` pour APT, ``python-wheel`` pour pacman)
+sont nécessaires. Une fois installés, il faut appeler la commande :
+
+.. code:: bash
+
+ python3 setup.py sdist bdist_wheel
+
+Une fois cela fait, le dossier ``dist/`` contiendra les archives à transmettre à PyPI.
+
+
+Publier sur PyPI
+~~~~~~~~~~~~~~~~
+
+Il faut avant tout avoir un compte sur PyPI. Dans `votre compte PyPI
+`_, il faut générer un jeton d'accès API.
+
+Dans le fichier ``.pypirc`` dans le répertoire principal de l'utilisateur,
+il faut ajouter le jeton d'accès :
+
+.. code::
+
+ [pypi]
+ username = __token__
+ password = pypi-my-pypi-api-access-token
+
+Cela permet de s'authentifier directement par ce jeton.
+
+Ensuite, il faut installer ``twine``, qui permet de publier sur PyPI.
+
+Il suffit ensuite d'appeler :
+
+.. code:: bash
+
+ twine upload dist/*
+
+pour envoyer le paquet sur PyPI.
+
+
+.. note::
+
+ À des fins de tests, il est possible d'utiliser le dépôt ``_.
+ Les différences sont au niveau de l'authentification, où il faut l'en-tête
+ ``[testpypi]`` dans le ``.pypirc``, et il faut envoyer le paquet avec
+ ``twine upload --repository testpypi dist/``.
+
+
+Publier dans l'AUR
+------------------
+
+Fonctionnement du packaging
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. _python-squirrel-battle: https://aur.archlinux.org/packages/python-squirrel-battle/
+.. _python-squirrel-battle-git: https://aur.archlinux.org/packages/python-squirrel-battle-git/
+
+Deux paquets sont publiés dans l'AUR (Arch User Repository) :
+
+- python-squirrel-battle_
+- python-squirrel-battle-git_
+
+Le packaging dans Arch Linux se fait en commitant un fichier ``PKGBUILD`` dans
+le dépôt à l'adresse ``ssh://aur@aur.archlinux.org/packagename.git``,
+en remplaçant ``packagename`` par le nom du paquet.
+
+Le second paquet compile directement le jeu à partir de la branche ``master``
+du dépôt Git. Le fichier ``PKGBUILD`` dispose de cette structure :
+
+.. code::
+
+ # Maintainer: Yohann D'ANELLO
+
+ pkgbase=squirrel-battle
+ pkgname=python-squirrel-battle-git
+ pkgver=3.14
+ pkgrel=2
+ pkgdesc="Watch out for squirrel's knives!"
+ arch=('any')
+ url="https://gitlab.crans.org/ynerant/squirrel-battle"
+ license=('GPLv3')
+ depends=('python')
+ makedepends=('python-setuptools')
+ depends=('noto-fonts-emoji')
+ checkdepends=('python-tox')
+ ssource=("git+https://gitlab.crans.org/ynerant/squirrel-battle.git")
+ sha256sums=("SKIP")
+
+ pkgver() {
+ cd pkgbase
+ git describe --long --tags | sed -r 's/^v//;s/([^-]*-g)/r\1/;s/-/./g'
+ }
+ build() {
+ cd $pkgbase
+ python setup.py build
+ }
+
+ check() {
+ cd $pkgbase
+ tox -e py3
+ tox -e linters
+ }
+
+ package() {
+ cd $pkgbase
+ python setup.py install --skip-build \
+ --optimize=1 \
+ --root="${pkgdir}"
+ install -vDm 644 README.md \
+ -t "${pkgdir}/usr/share/doc/${pkgname}"
+ install -vDm 644 LICENSE -t "${pkgdir}/usr/share/licenses/${pkgname}"
+ }
+
+Ces instructions permettent de cloner le dépôt, l'installer et exécuter des tests,
+en plus de définir les attributs du paquet.
+
+Le fichier ``PKGBUILD`` du paquet ``python-squirrel-battle``, synchronisé avec
+les releases, est plus ou moins similaire :
+
+.. code::
+
+ # Maintainer: Yohann D'ANELLO
+
+ pkgbase=squirrel-battle
+ pkgname=python-squirrel-battle
+ pkgver=3.14
+ pkgrel=2
+ pkgdesc="Watch out for squirrel's knives!"
+ arch=('any')
+ url="https://gitlab.crans.org/ynerant/squirrel-battle"
+ license=('GPLv3')
+ depends=('python')
+ makedepends=('python-setuptools')
+ depends=('noto-fonts-emoji')
+ checkdepends=('python-tox')
+ source=("https://gitlab.crans.org/ynerant/squirrel-battle/-/archive/v3.14/$pkgbase-v$pkgver.tar.gz")
+ sha256sums=("6090534d598c0b3a8f5acdb553c12908ba8107d62d08e17747d1dbb397bddef0")
+
+ build() {
+ cd $pkgbase-v$pkgver
+ python setup.py build
+ }
+
+ check() {
+ cd $pkgbase-v$pkgver
+ tox -e py3
+ tox -e linters
+ }
+
+ package() {
+ cd $pkgbase-v$pkgver
+ python setup.py install --skip-build \
+ --optimize=1 \
+ --root="${pkgdir}"
+ install -vDm 644 README.md \
+ -t "${pkgdir}/usr/share/doc/${pkgname}"
+ install -vDm 644 LICENSE -t "${pkgdir}/usr/share/licenses/${pkgname}"
+ }
+
+Il se contente ici de télécharger l'archive de la dernière release, et de travailler
+dessus.
+
+
+Mettre à jour
+~~~~~~~~~~~~~
+
+Pour mettre à jour le dépôt, une fois les dépôts
+``ssh://aur@aur.archlinux.org/python-squirrel-battle.git`` et
+``ssh://aur@aur.archlinux.org/python-squirrel-battle-git.git`` clonés,
+il suffit de mettre à jour le paramètre ``pkgver`` pour la bonne version,
+de régénérer le fichier ``.SRCINFO`` en faisant
+``makepkg --printsrcinfo > .SRCINFO``, puis de committer/pousser.
+
+
+Construction du paquet Debian
+-----------------------------
+
+Structure du paquet
+-------------------
+
+L'ensemble des instructions pour construire le paquet Debian est situé dans le
+dossier ``debian/``.
+
+Le fichier ``changelog`` est à modifier à chaque nouvelle version, le fichier
+``compat`` contient la version minimale de Debian requise (``10`` pour Debian
+Buster), le fichier ``copyright`` contient la liste des fichiers distribués sous
+quelle licence (ici GPLv3), le fichier ``control`` contient les informations du
+paquet, le fichier ``install`` les fichiers de configuration à installer
+(ici le fix de l'affichage de l'écurueil), et enfin le fichier ``rules`` l'ensemble
+des instructions à exécuter pour installer.
+
+Le paquet ``fonts-noto-color-emoji`` est en dépendance pour le bon affichage
+des émojis.
+
+Mettre à jour le paquet
+-----------------------
+
+Pour changer la version du paquet, il faut ajouter des lignes dans le fichier
+``changelog``.
+
+
+Construire le paquet
+--------------------
+
+Il faut partir d'une installation de Debian.
+
+D'abord on installe les paquets nécessaires :
+
+.. code::
+
+ apt update
+ apt --no-install-recommends install build-essential debmake dh-python debhelper python3-all python3-setuptools
+
+On peut ensuite construire le paquet :
+
+.. code:: bash
+
+ dpkg-buildpackage
+ mkdir build && cp ../*.deb build/
+
+Le paquet sera installé dans ``build/python3-squirrel-battle_3.14_all.deb``.
+
+Le paquet Debian_ est construit par l'intégration continue Gitlab et ajouté
+à chaque release.
diff --git a/docs/documentation.rst b/docs/documentation.rst
new file mode 100644
index 0000000..74965be
--- /dev/null
+++ b/docs/documentation.rst
@@ -0,0 +1,31 @@
+Documentation
+=============
+
+La documentation est gérée grâce à Sphinx. Le thème est le thème officiel de
+ReadTheDocs ``sphinx-rtd-theme``.
+
+Générer localement la documentation
+-----------------------------------
+
+On commence par se rendre au bon endroit et installer les bonnes dépendances :
+
+.. code:: bash
+
+ cd docs
+ pip install -r requirements.txt
+
+La documentation se génère à partir d'appels à ``make``, selon le type de
+documentation voulue.
+
+Par exemple, ``make html`` construit la documentation web, ``make latexpdf``
+construit un livre PDF avec cette documentation.
+
+
+Documentation externe
+---------------------
+
+À chaque commit, un webhook est envoyé à ``_, qui construit
+tout seul la documentation Sphinx, la publiant à l'adresse
+``_.
+
+De plus, les documentations sont sauvegardées à chaque release taguée.
diff --git a/docs/index.rst b/docs/index.rst
index ce312c3..ff6bcf3 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -13,11 +13,11 @@ Bienvenue dans la documentation de Squirrel Battle !
:target: https://squirrel-battle.readthedocs.io/fr/latest/?badge=latest
:alt: Documentation Status
-.. image:: https://img.shields.io/pypi/v/dungeon-battle
+.. image:: https://img.shields.io/pypi/v/squirrel-battle
:target: https://pypi.org/project/squirrel-battle/
:alt: PyPI
-.. image:: https://img.shields.io/pypi/dm/dungeon-battle
+.. image:: https://img.shields.io/pypi/dm/squirrel-battle
:target: https://pypi.org/project/squirrel-battle/
:alt: PyPI downloads
@@ -37,6 +37,8 @@ Bienvenue dans la documentation de Squirrel Battle !
install-dev
tests
display/index
+ deployment
+ documentation
.. toctree::
:maxdepth: 3