Je me nomme Clément Nerma (pseudonyme, je précise), je suis lycéen, actuellement en classe de 1ère S Sciences de l'Ingénieur et développeur amateur sur mon temps libre.
Je vais vous présenter aujourd'hui un projet de jeu vidéo que j'ai commencé en novembre dernier (2015) et que j'avais arrêté pour finalement repartir de zérO.
En savoir plus sur le projet
Genèse
Haskier est un jeu sorti en version Alpha le 25 octobre 2015 et abandonné après 19 jours de développement. 7 versions ont vu le jour, mais le projet a finalement été stoppé car le code ne devenait plus maintenable.
Le 17 mars (2016), j'ai recommencé le projet à partir de zéro. 7 versions Alpha sont rapidement sorties, et le 25 mars la première beta a été disponible. (Pour plus d'infos, voyez la chronologie sur GitHub).
Généralités
Synopsis
Vous incarnez un jeune homme de 17 ans, étudiant en sécurité informatique, du nom de Shaun. Vous avez déjà développé un outil de prise de contrôle à distance assez redoutable, bien que vous soyez le seul à en connaître l'existence. Votre souhait est, depuis plusieurs mois, de rentrer dans une célèbre organisation de hackers nommée Anonymas. Cependant, celle-ci est très fermée et vous n'arrivez pas à y entrer par les manières "traditionnelles". Dès lors, Shaun s'infiltre sur l'un des serveurs du groupe pour en prendre le contrôle et, à partir des données qu'il y trouve et en recoupant plusieurs sources d'informations, parvient à dresser une liste des membres. Vous laissez alors un message sur leur serveur leur indiquant de vous recontacter s'ils ne veulent pas voir leur identité dévoilée au grand jour.
C'est là que commence le jeu.
Fonctionnement
Le jeu se déroule devant l'interface austère d'une ligne de commande.
Néophytes et lambdas, ne vous inquiétez pas, ce jeu est accessible à tous. Cette interface fonctionne comme l'Invite de Commandes sous Windows ou un Terminal Linux/Mac OS. Vous y tapez des commandes et le résultat s'affiche à l'écran.
Là où ça devient un jeu, c'est que ces commandes vous permettent de faire énormément de choses plus ou moins facilement, y compris de communiquer avec d'autres personnes.
Il existe des commandes pour tout faire, et elles ont été grandement simplifiées pour être accessibles à tous.
Le jeu en lui-même
Le jeu tourne autour d'un scénario que vous débloquez au fur et à mesure, organisé en parties elles-mêmes divisées en labels puis en objectifs, que vous devez remplir pour débloquer la suite. Comme dans tous les jeux, en somme. Sauf qu'ici, cette organisation est particulièrement importante comme nous allons le voir ensuite.
Les commandes que vous utilisez vous permettent d'effectuer un certain nombre d'opérations dont certaines ne vous sont pas accessibles dès le début du jeu. Vous avez accès un ordinateur personnel, votre serveur, d'où vous effectuerez toutes vos tâches.
La plupart du temps, il va s'agir de s'infiltrer sur tel ou tel serveur pour en extraire des informations. Mais le fonctionnement est évidemment bien plus complexe, sinon cela ne serait pas intéressant.
Le fonctionnement des serveurs...
Tout le jeu est organisé autour des serveurs, des ordinateurs capables de partager des fichiers avec d'autres ordinateurs. Chaque serveur possède un ou plusieurs comptes utilisateurs, comme sous Windows ou Linux en somme. Chaque utilisateur a le droit ou pas de faire certaines actions. Par exemple, un utilisateur X aura le droit d'accéder à tel dossier alors que Y n'y aura pas accès. X pourra également mettre en place un système de partage de fichiers alors que Y ne pourra pas. Le tout est contrôlé par le jeu qui vérifie vos permissions.
Il y a des commandes dites natives, c'est-à-dire qu'elles sont communes à tous les serveurs : echo, rm, ls, tree, help...
D'autres sont installables à partir d'une boutique d'applications en ligne qui vous permettent d'étendre les possibilités de votre serveur en y ajoutant de nouvelles fonctionnalités.
... Et les applications
À l'heure où je vous parle, il existe trois applications différentes, disponibles gratuitement sur la boutique en ligne (toutes ne le seront pas) :
icefox, un navigateur qui vous permet d'afficher des fichiers partagés par d'autres serveurs sous formes de pages web ;
vampp , un système permettant de mettre en place le partage de fichiers sur votre serveur.
ssh , qui permet de se connecter à un autre serveur à distance pourvu qu'on possède un nom d'utilisateur et un mot de passe valides.
Mise à jour du 23/06/2016
pico permet d'éditer des fichiers simplement à partir d'un éditeur de texte ressemblant au populaire nano
mailbox vous donne accès à une interface de boîte mail qui vous permet de lire mais aussi d'envoyer des emails virtuels
D'autres applications vous seront dévoilées au fur et à mesure du jeu
Les sauvegardes...
Le jeu sauvegarde automatiquement votre progression de manière très régulière. À chaque fois que vous saisissez une commande, votre partie est sauvegardée. Ne vous inquiétez pas pour la vitesse, une sauvegarde prenant actuellement moins de 2 millièmes de seconde.
Votre sauvegarde contient :
Tout ce qui est affiché à l'écran, de manière à ce que vous puissiez reprendre le jeu EXACTEMENT là vous en étiez ;
L'heure virtuelle du jeu, quelques infos utiles au système ;
Le contenu de TOUS les serveurs du jeu : les comptes utilisateurs, les fichiers, les applications... ;
Les variables (j'y revient un peu après)
À chaque nouvelle partie, le jeu crée une copie de votre sauvegarde, une archive. Vous allez voir pourquoi.
... Et les Game Over
Pour ne pouvez perdre le jeu (en tout cas, actuellement) qu'en remplissant mal l'objectif qui vous a été confié. Supposons que vous deviez saisir un code crucial, si vous rentrez le bon, le jeu continue, sinon vous perdez : Game Over.
Lors d'un Game Over, votre sauvegarde est automatiquement supprimée et irrécupérable. Vous voyez mieux maintenant pourquoi des archives sont faites à intervalles réguliers ? Si le jeu est aussi sévère, c'est tout simplement parce qu'un objectif qui n'est pas rempli ne PEUT PAS être rattrappé. Imaginons que vous ratiez le piratage d'un serveur et que quelqu'un s'en rendre compte, dans la réalité cela ne serait pas rattrapable.
Après un Game Over, vous pouvez restaurer une archive de votre sauvegarde (la procédure est dans le tutoriel).
Un peu d'humour ?
Vous vous rendrez vite compte que le jeu contient des petits clins d'oeils : Anonymas pour Anonymous, bien sûr, Icefox pour Firefox... Certains sont évidents, d'autres non. Je vous laisse le plaisir de les découvrir par vous-mêmes
Un exemple de mission :
Imaginons que vous devez vous infiltrer sur un serveur pour y récupérer des données. La première chose à faire est de vérifier que l'application de connexion à distance ssh est bien installée. Dès lors, comment faire ? Vous devez trouver comment forcer le login et le mot de passe pour vous connecter au serveur. Mais là, vous vous rendez compte que votre compte utilisateur ne possède pas les droits nécessairse pour lire le fichier dont vous avez besoin. Vous devez maintenant trouver comment effectuer une élévation de privilèges. Attention, ce ne sera pas forcément la même manipulation selon les serveurs, qui possèderont des sécurités différentes.
Objectifs
Mon objectif en créant Haskier est d'amuser le joueur et le maintenir en haleine grâce à un scénario qui incluera bien évidemment le maximum de suspense possibles. Les premières expériences de jeu ne seront pas forcément très agréables, mais une fois les commandes (si j'ose dire) bien en main, vous vous y plairez bien plus. Il est évident que ce jeu ne vas pas attirer des millions de joueur et que son allure assez austère risque d'en repousser certains, mais je vous demande de bien vouloir essayer, au moins pour voir à quoi ça ressemble. Le jeu n'est pas d'une difficulté élevée mais vous fera quand même réfléchir pour trouver la solution.
L'autre objectif est de créer un jeu autour de notions réelles : les serveurs partageant des fichiers, les tokens pour gérer les droits, le système multi-user, l'élévation de privilèges, l'utilisation des exploits...
Tout est simplifié pour être accessible à ceux qui ne connaissent rien à l'informatique, même si une connaissance de l'invite de commande aidera évidemment à s'en sortir. Une aide est présente pour chaque commande et décrit son utilisation.
Le projet et son originalité
Il n'y a pas d'âge pour jouer à ce jeu, même à cinquante ans il peut s'avérer intéressant (du moins, je pense). Il faut "juste" accrocher au principe d'avoir pour interface une invite de commande d'où on effectue toutes ses opérations, et pas une belle interface graphique.
Notez qu'il y a bien sûr des couleurs, du gras, de l'italique... Mais cela reste assez simpliste.
Ça a l'air assez intéressant (et assez impressionnant au vu de ton niveau d'études). En revanche je tombe sur une page blanche en suivant ton lien. La console m'indique ceci :
Je suis désolé, tout fonctionnait bien hier. Je vais essayer de redémarrer le serveur.... Voilà ça refonctionne. Je vais remettre une version PHP en ligne sur un autre hébergeur pour régler les problèmes... Quant à l'erreur 500, c'est un bug de mon hébergeur ;-(
Dans le tuto le 1er choix "pour commencer" je trouve que le texte met trop de temps a s'afficher , mais bon je suis au boulot la j'ai pas le temps de bien tout essayer mais sa a l'air super original !
Comment l'application icefox a-t-elle disparu ? As-tu supprimé le dossier "apps" ou "icefox" ?
Les .hps sont des fichiers JavaScript qui sont le code source des applications. Évitez d'y toucher si vous ne voulez pas risquer d'endommager sérieusement votre sauvegarde de jeu. Si vous les modifiez, vous prenez le risque que les applications ne fonctionnent plus.
ssh-back tu veux dire ?
ssh-back permet de revenir sur le serveur sur lequel on était avant une connection SSH
ssh-home permet de revenir au serveur initial
Mais cela sera expliqué plus loin dans le jeu (les fichiers du jeu sont en cours de développement et ne seront sans doute totalement jouables que demain)
Moi la commande ssh fonctionnait, puis le jeu à planter (une commande a échoué et je ne pouvais plus rien taper même après 2 minutes d'attente), et après avoir relancer le jeu la commande "ssh" n'existe plus
@Flavinho : Quelle commande as-tu tapé exactement ?
@Nada#3 : <stroke>Si tu reset ta partie... Ouvre la console JavaScript (Ctrl+Maj+J en général) et tape "r();" puis Entrée</stroke>
En fait tu peux juste utiliser : "game.goLabel('TUTORIAL'); go();"
RE-EDIT : La commande ssh-hack n'est pas utilisable actuellement, encore en cours de développement.
La version que je publierais ce soir / ou demain contiendra les outils nécessaires pour effectuer le (court) scénario actuel du jeu et quelques petites choses.
La bêta 0.2 viens de sortir. Le jeu est (normalement) totalement jouable jusqu'à la fin du court scénario actuellement disponible.
EDIT : Le jeu est prêt ! N'oubliez pas de réinitialiser votre sauvegarde pour bénéficier de la suite du jeu : ouvrez la console JavaScript et tapez r(); puis Entrée
Un truc qui serait sympa, c'est d'afficher l'intégralité du texte d'un coup (notamment pour le tutoriel). J'ai tenté de jouer, j'ai fait 1, j'ai attendu 10 ans, puis j'ai fait 2 et j'ai pas eu le courage d'attendre de nouveau (surtout que ça va jusqu'a 8)
Tu peux augmenter la vitesse d'affichage, mais seulement lorsque tu peux saisir des commandes. Sinon tu peux essayer d'ouvrir la console et d'écrire : readingLineDuration=25 et ça ira beaucoup plus vite
Petit soucis pour la 1er mission (recuperer le mdp dans le serveur) apres avoir recuperer le mot de passe le jeu a commencer a buger et je n'ai pas pu taper le mdp , j'ai donc eu le droit a un gameover (qui au passage a un soucis )
@victorbaudot : J'ai changé les constantes de vitesse mais je ne peux pas permettre l'appui sur la touche Entrée pour faire tout passer. En revanche le texte défilera bien plus vite sans que cela soit gênant pour ceux qui lisent plus lentement.
@valentin75 : Quelles commandes as-tu tapé ? Ce bug est vraiment bizarre... Essaye de réinitialiser ta sauvegarde (en tapant r(); dans la console JavaScript) et recommence une partie pour voir si le bug est toujours présent... Le serveur de cache a eu un problème il y a quelques dizaines de minutes, réessaye pour voir.
Je ne suis plus modérateur, ne me contactez plus pour des demandes, je n'y répondrai pas.
Site personnel : Julien Gidel - AutoMate - PHPresentation