1
1
GameShell : un "jeu" pour apprendre le shell Unix
2
2
=================================================
3
3
4
+ ![ Illustration inspired by the game] ( art/illustration-small.png )
4
5
5
- GameShell (gsh) est le résultat d'une réflexion sur comment enseigner les
6
- rudiments (et un peu plus) du shell à des étudiants en première année à
7
- l'université Savoie Mont Blanc.
6
+ Enseigner l'utilisation d'un shell Unix à des étudiants de première année à
7
+ l'université ou à des lycéens n'est pas toujours simple, ni très amusant.
8
+ GameShell a été conçu comme un outil pour aider les étudiants de [ l'Université
9
+ Savoie Mont Blanc] ( https://univ-smb.fr ) à découvrir un * vrai* shell, avec une
10
+ approche qui favorise l'apprentissage tout en s'amusant.
8
11
9
12
L'idée initiale, due à Rodolphe Lepigre, était de lancer une session bash avec
10
13
un fichier de configuration qui définissait des "missions", qui seraient
11
- "validées" pour avancer.
12
-
13
- Voila le résultat...
14
-
15
- N'hésitez pas à nous envoyer vos remarques, questions ou suggestions autour de
16
- GameShell. Nous sommes particulièrement intéressés pas toute nouvelle mission
17
- que vous pourriez créer !
18
-
19
- GameShell est distribué sous la licence [ GPLv3] ( https://www.gnu.org/licenses/gpl-3.0.en.html )
20
-
21
-
22
- ### Développeurs
23
-
24
- * Pierre Hyvernat
25
- * Rodolphe Lepigre
26
-
27
-
28
- ### contact
29
-
30
- Pierre Hyvernat
31
-
32
- http://www.lama.univ-smb.fr/~hyvernat
33
-
34
-
35
-
36
-
37
-
38
-
39
- Prérequis
40
- ---------
41
-
42
- GameShell devrait (??) fonctionner sur un système Linux standard. Pour
43
- Debian/Ubuntu, la seule vrai dépendance (à part ` bash ` ) pour jouer est le
44
- [ paquet] ( paquet ) ` gettext-base ` .
45
-
46
- Si vous souhaitez créer vos propres missions et les traduire, il faudra
47
- également installer le paquet ` gettext ` .
48
-
49
- Certaines missions ont des dépendances supplémentaires. Si elles ne sont pas
50
- satisfaites, ces missions seront simplement ignorées. Pour pouvoir lancer
51
- toutes les missions actuellement disponibles, il faut disposer des commandes
52
- suivantes
53
-
54
- - ` man ` (paquet ` man-db ` sous Debian/Ubuntu)
55
- - ` ps ` (paquet ` procps ` sous Debian/Ubuntu)
56
- - ` pstree ` (paquet ` psmisc ` sous Debian/Ubuntu)
57
- - ` nano ` (paquet ` nano ` sous Debian/Ubuntu)
58
- - ` tree ` (paquet ` tree ` sous Debian/Ubuntu)
59
- - ` cal ` (paquet ` bsdmainutils ` sous Debian/Ubuntu)
60
- - ` xeyes ` (paquet ` x11-apps ` sous Debian/Ubuntu)
61
- - ` python3 ` (paquet ` python3 ` sous Debian/Ubuntu)
62
-
63
- Sur un système Debian / Ubuntu, la commande suivante devrait garantir que vous
64
- pouvez lancer une partie de GameShell sans problème.
65
-
66
- $ sudo apt install gettext-base python3 man-db psmisc nano tree bsdmainutils x11-apps gettext
67
-
68
-
69
-
70
- ### Autres systèmes
71
-
72
- #### macOS
73
-
74
- Il devrait être possible de lancer GameShell depuis macOS, mais comme nous
75
- n'utilisons pas macOS, ce n'est pas beaucoup testé. Contactez nous en cas de
76
- problème ou si vous souhaitez nous aider la dessus.
77
-
78
- Le plus simple est probablement d'utiliser le gestionnaire de paquets [ homebrew] ( https://brew.sh/index_fr ) :
79
-
80
- ```
81
- $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
82
- ```
83
-
84
- puis d'installer les paquets nécessaires avec
85
-
14
+ "validées" pour avancer dans le jeu.
15
+
16
+ Voilà le résultat...
17
+
18
+ N'hésitez pas à nous envoyer vos remarques, questions ou suggestions en
19
+ ouvrant des [ "issues"] ( https://github.com/phyver/GameShell/issues ) ou en
20
+ soumettant des [ "pull requests"] ( https://github.com/phyver/GameShell/pulls ) .
21
+ Nous sommes particulièrement intéressés pas toute nouvelle mission que vous
22
+ pourriez créer !
23
+
24
+
25
+ Comment jouer ?
26
+ ---------------
27
+
28
+ ** Note:** GameShell est en phase de développement : la version courante n'a
29
+ pas été intensivement testée par des étudiants. N'hésitez pas à rapporter tout
30
+ problème que vous pourriez rencontrer et toute suggestion d'amélioration en
31
+ ouvrant une [ "issue"] ( https://github.com/phyver/GameShell/issues/new ) .
32
+
33
+ GameShell devrait fonctionner sur n'importe quel système Linux standard, et
34
+ aussi sur macOS et BSD (mais ces systèmes ont été moins testés). Sur Debian ou
35
+ Ubuntu, les seules dépendances (autres que ` bash ` ) sont les paquets ` awk ` et
36
+ ` gettext-base ` (le premier étant généralement installé par défaut). Certaines
37
+ missions ont des dépendances additionnelles : elles seront annulées si leurs
38
+ dépendances ne sont pas satisfaites. Sur Debian ou Ubuntu, lancez la commande
39
+ suivante pour installer toutes les dépendances pour le jeu et les missions.
40
+ ``` sh
41
+ $ sudo apt install gettext-base man-db psmisc nano tree bsdmainutils x11-apps
86
42
```
87
- $ brew install nano pstree tree man-db
43
+ Consultez le [ manuel utilisateur] ( doc/user_manual.md ) (en anglais) pour voir
44
+ comment installer les dépendances sur d'autres systèmes (macOS, BSD, ...).
45
+
46
+ En supposant que toutes les dépendances sont installées, vous pouvez essayer
47
+ la dernière version du jeu en lançant les deux commandes suivantes dans un
48
+ terminal.
49
+ ``` sh
50
+ $ wget https://github.com/phyver/GameShell/releases/download/latest/GameShell.sh
51
+ $ bash GameShell.sh
88
52
```
53
+ La première commande téléchargera la dernière version du jeu sous la forme
54
+ d'une archive auto-extractible, et la seconde commande initialisera et lancera
55
+ le jeu à partir de cette archive. Les instructions pour jouer sont données
56
+ directement dans le jeu.
89
57
58
+ Quand vous quitterez le jeu (avec ` control-d ` ou la commande ` gsh exit ` ) votre
59
+ progression sera sauvegardée dans une nouvelle archive (nommée
60
+ ` GameShell-save.sh ` ). Elle peut être lancée pour reprendre le jeu où vous vous
61
+ étiez arrêté.
90
62
91
- #### BSD ???
92
-
93
- Nous n'avons pas beaucoup testé, mais GameShell semble fonctionner sous
94
- freeBSD si vous installez les dépendances :
95
-
96
- ````
97
- $ pkg install bash gettext pstree wget
98
- ````
99
-
100
-
101
- #### Windows ???
102
-
103
- Il est peut-être possible de lancer GameShell depuis Windows si vous avez
104
- installé [ Cygwin] ( https://www.cygwin.com/ ) .
105
63
106
- Nous n'avons pas testé.
107
-
108
-
109
-
110
- Lancer GameShell
111
- ----------------
112
-
113
- ### 1/ depuis les sources
114
-
115
- Récupérez l'archive et lancez le script ` start.sh ` :
116
-
117
- $ rm -rf GameShell && mkdir GameShell && wget https://api.github.com/repos/phyver/GameShell/tarball -O - | tar -xz -C GameShell --strip-components 1
118
- $ ./GameShell/start.sh
119
- ...
120
- ...
121
-
122
- Si votre version de ` tar ` ne supporte pas l'option ` --strip-components ` ,
123
- utilisez
124
-
125
- $ rm -rf phyver-GameShell-* && wget https://api.github.com/repos/phyver/GameShell/tarball -O - | tar -xz
126
- $ ./phyver-GameShell-*/start.sh
127
- ...
128
- ...
129
-
130
-
131
- ### 2/ depuis le dépôt git
132
-
133
- Après avoir cloné le dépot, lancez le script ` start.sh `
134
-
135
- $ git clone https://github.com/phyver/GameShell.git
136
- $ ./GameShell/start.sh
137
- ...
138
- ...
139
-
140
-
141
- ### 3/ depuis une archive exécutable
142
-
143
- C'est le plus simple pour distribuer GameShell à des étudiants. Après avoir
144
- cloné le dépot, créez une archive exécutable avec le script ` archive.sh ` :
145
-
146
- $ cd GameShell
147
- $ ./utils/archive.sh
148
- copy missions
149
- 01_cd_1 --> 000001_cd_1
150
- ...
151
- ...
152
- generating '.mo' files
153
- removing 'auto.sh' scripts
154
- removing unnecessary (_*.sh, Makefile) files
155
- setting admin password
156
- setting default GameShell mode
157
- creating archive
158
- creating self-extracting archive
159
- removing tgz archive
160
- removing temporary directory
161
- $ ls
162
- ... GameShell.sh ...
163
-
164
- Le fichier ` GameShell.sh ` contient une instance de GameShell que l'on peut
165
- transférer sur n'importe quel ordinateur. Pour le lancer, vous pouvez utiliser
166
- soit
167
-
168
- $ ./GameShell.sh
169
-
170
- soit
171
-
172
- $ bash ./GameShell.sh
173
-
174
-
175
- ### 4/ en créant et utilisant une image Docker
176
-
177
- L'idée de GameShell est d'avoir une session "la plus proche possible" d'une
178
- session shell "standard". Je l'utilise donc sur des machines Linux "standard",
179
- ou sur une machine virtuelle.
180
-
181
- Il est possible de créer une image Docker en utilisant le fichier ` Dockerfile `
182
- fourni pour lancer GameShell sans s'occuper des dépendances :
183
-
184
- * création de l'image :
185
-
186
- $ docker build -t gsh .
187
-
188
- * lancement de l'image, si vous avez un serveur X :
189
-
190
- $ host +"local:docker@" && \
191
- docker run -it \
192
- -e DISPLAY=${DISPLAY} -v /tmp/.X11-unix:/tmp/.X11-unix \
193
- gsh
194
-
195
- * lancement de l'image, sans serveur X :
196
-
197
- $ docker run -it gsh
198
-
199
-
200
- Commandes de base
201
- -----------------
202
-
203
- GameShell est simplement une instance de bash avec des commandes
204
- supplémentaires. Vous pouvez les appeler avec la commande `` gsh `` .
205
-
206
- - ` gsh help ` : affiche une petite liste des commandes
207
- - ` gsh goal ` : affiche l'objectif de la mission courante
208
- - ` gsh check ` : vérifie si la mission actuelle est validée
209
- - ` gsh reset ` : recommence la mission courante
210
-
211
- D'autre commandes existent mais ne sont normalement pas utiles dans une partie
212
- standard. Vous pouvez en obtenir la liste avec
213
-
214
- - ` gsh HELP ` : affiche une liste complète des commandes ` gsh `
215
-
216
- Les commandes sont détaillés dans le fichier ` doc/gameshell.md ` .
64
+ Documentation
65
+ -------------
217
66
67
+ Pour en savoir plus sur GameShell les documents suivants sont disponibles (en
68
+ langue anglaise uniquement):
69
+ - Le [ manuel utilisateur] ( doc/user_manual.md ) explique, entre autres, comment
70
+ lancer le jeu sur toutes les plateformes supportées (Linux, macOS, BSD),
71
+ comment lancer le jeu à partir des sources, et comment générer une archive
72
+ de jeu personnalisée (ce qui est utile pour utiliser le jeu dans le cadre
73
+ d'un cours).
74
+ - Le [ manuel développeur] ( doc/dev_manual.md ) explique, entre autres, comment
75
+ créer une nouvelle mission, comment traduire le jeu et les missions, et
76
+ comment participer au développement du jeu.
218
77
219
- Ajout de missions
220
- -----------------
221
78
222
- La création de nouvelles missions est détaillées dans le fichier dédié
223
- ` doc/missions.md ` .
79
+ Qui développe GameShell?
80
+ ------------------------
224
81
82
+ ### Développeurs
225
83
84
+ Le jeu est développé par:
85
+ * [ Pierre Hyvernat] ( http://www.lama.univ-smb.fr/~hyvernat ) (développeur
86
+
87
+ * [ Rodolphe Lepigre] ( https://lepigre.fr ) .
226
88
227
- Contributeurs missions
228
- ----------------------
89
+ ### Contributeurs missions
229
90
230
91
* Pierre Hyvernat
231
92
* Rodolphe Lepigre
@@ -235,18 +96,17 @@ Contributeurs missions
235
96
* Sébastien Tavenas
236
97
* Tiemen Duvillard
237
98
99
+ ### Remerciements
238
100
239
- Remerciements
240
- -------------
101
+ * Tous les étudiants qui ont testé les toutes premières versions du jeu.
102
+ * Joan Stark (alias jgs) qui a créé des centaines d'ASCII-art à la fin des
103
+ années 90. La majorité des ASCII-art que vous rencontrerez dans GameShell
104
+ lui sont dus.
241
105
242
- * Tous mes étudiants qui ont testé les toutes premières versions
243
- * Joan Stark, qui a créé des centaines d'ASCII-art à la fin des années 90. La
244
- majorité des ASCII-art que vous rencontrerez dans GameShell lui sont dus.
245
- (Les "` jgs ` " que vous verrez sont ses initiales.)
246
106
247
107
Licence
248
108
-------
249
109
250
- GameShell est distribué sous la licence [ GPLv3] ( https://www.gnu.org/licenses/gpl-3.0.en.html )
110
+ GameShell est distribué sous la licence [ GPLv3] ( https://www.gnu.org/licenses/gpl-3.0.en.html ) .
251
111
252
112
Merci de pointer vers ce dépôt si vous l'utilisez.
0 commit comments