GithubHelp home page GithubHelp logo

luffah / terminus Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mprat/terminus

36.0 4.0 15.0 17.1 MB

Linux learning game

Home Page: https://www.luffah.xyz/bidules/Terminus

License: GNU General Public License v2.0

HTML 3.09% CSS 3.20% JavaScript 59.27% Makefile 0.87% Python 31.15% Shell 2.42%
game command-line educational-game javascript

terminus's Introduction

Hey, maybe you wanted to have the source of the modified game Terminus.
Sadly, this is the wrong page, now check the original branch.

Terminal game common

A tool box to create games with command line interface, based on a classical filesystem structure.

What does provide this (game) engine ?

  • a customizable terminal (command line) interface
    • for Web browser (Javascript)
    • from a shell (experimental - Python)
  • most of a shell functionnalities
  • picture and music support
  • some game dev tools : build, manage resources, track credits, split/group translations

Games

A rewrite of mprat's Terminus game (code)

Terminus is a text adventure game running on your Web browser.

In a mysterious land, both physical and magical powers had been surpassed by a new power : the command line. Lost somewhere in this land, you discover that you could use this power without knowing how.

Jouer (French) : Démo du jeu

Note : If you tested the original Terminus game, you may discover that : the scenario had been altered; the MIT part and the 'add' locker command had been removed, because these things are really specific to MIT; there is sounds...

Why ?

Originally, the project was intended to translate the game "Terminus" from English to French. Now, this framework is an attempt to be a kind of command line based "Twine" with files and programs as items for the player.

Dialogs outside of code

Dialogs and relation between object was written in code. This was an obstacle for translation contributors.

Here, the file structure and dialogs has been put outside of code. The dialogs are referenced with a keyword like (e.g. room_home_text). Translations can be found in each directory, but can be all gathered in one po file.

No Interactive Fiction maker that could easily describe files permissions and commands was found

The needs :

  • textual player input that provide completion
  • the world as filesystem
  • all items (that include game items and characters) described with dynamic properties
  • an item can have specific behavior with any command
  • the programs (commands that are not a shell function) are items
  • The player shall be able create/read/copy/move/rename/delete items and use commands on them

Here, each item have a text description and additional properties (including the program associated to the file). If it is a quest item, the properties can be filled when it appears in the right place.

This framework just reproduce the behavior of a shell. Why not just sandboxing some rootfs ?

Yes, it could do the job. You can even add sound, images and event with a small bunch of code that the source a profile on each directory. (look at tiv for images, and aplay for sounds)

But sometimes, you need to add some restrictions, and extra features to make a game interesting.

Start game

Build

  • ensure you have all resources in./game_art : make fetch_resources
  • assemble the game(s) in ./game
    • use make build to build for all Browsers/Platform
    • use make assemble if for some reason you want to build while skipping Nodejs (and npm) part

Start game

make server, select the game and go to the url given as response.

Why the terminal ?

Our usage of computers are focused on graphical user interfaces. By ignoring command line, you miss a huge collection of usefull tool you can use to automate your task.

Some examples of things you can easily do with command line :

  • find files or a specific informations
  • change a word for each file of a collection of thousand
  • convert your whole multimedia library in any format
  • insert text (or copyrights) in images and videos
  • press a key every 2 seconds, without touching your keyboard
  • install applications from source
  • use advanced options
  • access servers
  • develop scripts to repeat useful tasks

Helping

Things in thinking/doing are located in TODO file. Feel free to check it, raise issues and push PR if you got something.

Tips for game makers

Language

Edit .po files in game directory to edit translation. In tools/gamedev, there is tools to generate the .pot file, and ensure all references are translated.

Note for game dev

  • ./game/terminus/devenv.sh set up a bash shell for dev...
  • to work on develop branch : git fetch origin; git checkout --track origin/develop
  • get missing tools git submodule update --init --recursive

terminus's People

Contributors

axelsimon avatar daufinsyd avatar etnx avatar ludogre avatar luffah avatar mprat avatar mquinson avatar pitchum avatar superlutin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

terminus's Issues

L'intriguant panneau indéplaçable

Dans la bibliothèque, il y a un intriguant panneau avec une source de lumière
derrière. Mais il n'est pas possible de le déplacer. Quand on pénètre dans la
PièceSecrète, il est indiqué qu'elle était derrière le panneau. Ceci laisse à
penser que la PièceSecrète est accessible d'emblée, alors qu'elle devrait
nécessité le déplacement du panneau, et qu'en plus, celui-ci n'est pas
déplaçable.

sudo pas utilisable

J'ai réussi à accéder à la commande sudo en greppant password dans les fichiers du noyau. Néanmoins, je ne peut pas l'utiliser, même pour faire un "pkill -9 Magus", ce qui je pense résolverait le problème. Aussi, quand j'ai touch une Maison pour l'homme en pleur, je ne peut plus la supprimmer. Après avoir fait ça je me suis dit que j'aurais pu mkdir un Maison et mv l'HommeEnPleurs dans la maison.

Quand je fais help, la ligne sudo affiche sudo_help, comme si c'était une variable inconnue.
La commande man sudo ne marche pas non plus.

Pertinence de l'écriture inclusive

En relisant le texte de Terminus pour le corriger, j'ai remarqué qu'il suivait (parfois) les normes de l'écriture "inclusive" Je soulève ici un problème engendré par le choix de cette démarche pour Terminus, et je propose deux solutions possibles.

Énonciation et fiction

Tout d'abord, un petit rappel linguistique.

Dans certains situations d'énonciation, comme par exemple une allocation publique, l'énonciateur ou l'énonciatrice s'adresse à un ensemble d'individus composé d'hommes et de femmes. Le souci d'une parole usant le masculin comme le féminin pour désigner ce public peut s'avérer pertinente, pour marquer sa volonté de ne pas passer sous silence l'existence des femmes notamment.

Dans le cadre particulier de Terminus, la situation d'énonciation est différente : l'ordinateur qui raconte l'histoire, à la façon d'un livre dont vous êtes le héros, s'adresse à une seule personne. En outre, le mode d'énonciation est lui aussi différent : Terminus est un jeu informatique, plus précisément un jeu de type "first person coder", c'est-à-dire une fiction dans laquelle le joueur ou la joueuse doit s'identifier à un personnage qui en l'occrurence évolue dans un univers fantasy.

Cette identification au personnage est essentielle dans la construction du pacte fictionnel. Sans cette identification, le tu énoncé par l'ordinateur-narrateur ne fonctionnerait plus : le joueur ou la joueuse ne pourrait plus faire semblant d'être le personnage auquel s'adresse l'ordinateur.

Écriture inclusive versus pacte fictionnel

Dans ce contexte particulier, l'écriture dite inclusive — par l'utilisation des points médians et par l'emploi de la double flexion — présente un inconvénient majeur : elle rappelle constamment que le jeu s'adresse à un ensemble d'hommes et de femmes.

Or, le joueur ou la joueuse, dans le cadre du pacte fictionnel vidéoludique, souhaite au contraire instaurer une relation personnelle unique avec l'interface de jeu. En s'adressant explicitement à différents individus, l'ordinateur-narrateur instaure un retour au réel (celui de la multiplicité des destinataires) qui rompt le pacte fictionnel au détriment du plaisir du jeu.

L'identification au personnage est alors suspendue et l'émotion ressentie face aux péripéties de l'histoire s'amoindrit.

Possibilités de l'imaginaire

Il existe pourtant d'autres solutions que l'écriture inclusive pour contourner l'hégémonie du masculin que nous constatons dans le jeu vidéo.

Puisque l'identification dans le jeu est simulée, les caractéristiques du personnage ne sont aucunement obligées de correspondre avec celles du joueur ou de la joueuse. Qu'il s'agisse du sexe, de l'ethnie, de la religion, du tempérament, des goûts vestimentaires… n'importe quelle caractéristique imaginaire peut être interprétée par le joueur ou la joueuse et enrichir d'autant le pacte fictionnel.

Solutions proposées

En pratique, je vois trois solutions au problème posé par le choix de l'écriture inclusive :

  1. Revenir à l'état antérieur et adopter un genre grammatical exclusivement masculin. Solution simple, assez habitelle et efficace : le public mâle — qui est majoritaire parmi les "informaticiens" — s'identifiera spontanément au personnage.

  2. Proposer de choisir en début de partie entre un personnage féminin et un personnage masculin. Ainsi, les joueuses pourront choisir d'incarner un personnage masculin ou féminin selon leur envie, et les joueurs pourront eux aussi choisir entre ces deux options (je n'aborde pas la question de la transidentité…). Les concepteurs et/ou conceptrices du jeu évitent ainsi d'imposer un sexe et permettent au public d'effectuer son propre choix.

  3. Imposer le choix d'un personnage féminin. En effet, si la motivation à l'origine de l'écriture "inclusive" dans Terminus était d'accorder une visibilité habitellement refusée aux femmes, alors autant assumer cet engagement. Dans le cadre du pacte fictionnel, incarner un personnage féminin lorsqu'on est un homme est parfaitement possible et s'avère compatible avec le succès auprès du public, comme en témoigne le célèbre Tomb Raider et son héroïne Lara Croft.

Je préconise donc la troisième solution, qui présente l'avantage de démarquer Terminus par rapport aux autres jeux — les personnages principaux féminins sont rares dans le jeu vidéo — et de bousculer les stéréotypes concernant l'informatique (un truc de barbus). Toute création est un parti-pris, autant le reconnaître et l'affirmer en proposant d'incarner une héroïne.

Procédure pour la traduction

Bonjour!

J'utilise poedit pour l'édition de fichiers po. Dans terminus, je constate qu'il n'y a pas de fichier catalogue pot . Peut-être est-ce volontaire? Je ne sais pas.

Toujours est-il qu'un fois le fichier po corrigé, rien est indiquée dans le readme pour générer le fichier terminal.dialog.fr.js . :-(

Manque des indications de fin de niveau

Actuellement, le joueur ne peut distinguer clairement le moment où tout les objectifs d'un niveau (par exemple le passage du début jusqu'au portail) sont atteint.

Un idée pourrait être d'ajouter un minijeu (ou un simple écran) pour le préciser.

Erreur de scénario

Au niveau de la clairière (une fois le pont réparé) on est accueilli par le message suivant :

Tu entres dans Clairière. C'est une clairière couverte d'herbe avec une femme assise sur un rocher, soupirant…
Derrière elle, les ruines d'une maison.

Il faudrait donc renommer HommeEnPleurs en FemmeEnPleurs (ou adapter le texte et le contenu de HommeEnPleurs (naif) )

Cat au lieu de less ?

cat (concaténer) est une commande qui certes existe partout mais est nettement moins fonctionnelle que `less.

Y a-t-il une raison d'avoir remplacé cat par less, au-delà de son universalité ?

Génération automatique de .pot

En lien avec #22.
2 moyens à mettre en oeuvre:

  • un script node
  • ajout d'une command potgen
    Algo:
  • Rediriger pogen_content() (engine/pogen.js) dans le fichier pot.

On poursuit le travail ?

Bonjour à tous,

Ce jeu éducatif sous forme de "fiction interactive" est vraiment excellent !!!

Néanmoins, il y a des amélioration à faire et il faut développer pour aller plus loin. Peut-on reprendre se remettre au travail ?
Je souhaiterai exposer mes idées et retravailler un peu le scénario pour aller plus loin, pour ajouter toujours plus de commandes et développer avec l'ajout de paramètre aux commandes. Bref, il y a énormément de potentiel avec ce jeu éducatif.

Si vous êtes d'accord sur le principe, je propose de débuter le travail en complétant le wiki a propos de la version actuelle du jeu. cela devrais déjà permettre de pointer quelque couic que l'on pourrait corriger.

Bonne journée.

grep password

bonjour

(merci pour le jeu, c'est très cool)

je ne parviens pas à « écrire le bon grep » pour l'obtention du mot de passe dans FichiersNoyaux/PlusDeFichiersNoyau et j'essaie pléthore de commandes… mais rien n'y fait. j'ai tenté:

  • grep password= *.txt
  • grep password *.txt
  • grep password= L.txt M.txt Q.txt R.txt S.txt T.txt U.txt V.txt W.txt
  • grep password= L.txt
  • (tous les autres un par un)
  • (tout ça sans le =)

pouvez-vous me dire s'il y a une erreur ou si je dois simplement persévérer ;-)

Tabulation ne fonctionne plus correctement

Bonjour!

Dans la dernière version de la branche master, lorsqu'on essaie d'obtenir des suggestions à l'aide de la touche tabulation, si on clique sur une des suggestions, la complétion est incohérente. ???

Meaning of reading (cat) and executing (./) a file

Need help of smart peoples (philosopher, ux designer, creatives...) to give a simple and efficient meaning to cat file and ./file for most of the case a story can encounter.

See docs/linux_rules.md "Peoples and items" part

Incohérences dans le déroulement du jeu

Dans le premier lieu, il est possible d'interagir avec "Palourde" en exécutant ce fichier (./Palourde).

Dans la suite du jeu, on rencontre le Professeur, avec lequel on doit pouvoir interagir. L'exécution de ./Professeur n'est pas accepté. Il faut faire un cat pour parler, alors que cat est normalement utilisé sur des objets si j'ai bien compris.

Cela me semble incohérent.

Password issues

[obsolete]
Password shall not be a command .
AND
Password shall not be usable / visible until a specific event is triggered.

[demo] ajouter indice ou retour visuel au moment de taper le mot de passe

Trouver un moyen de respecter
ce qu'il se passe dans un terminal à l'entrée d'un mot de passe sudo (pas d'affichage de charactères),
tout en faisant ressentir qu'il se passe quelque chose :

  • effet lumineux ?
  • son (ce serait l'occasion d'utiliser l'api web audio) ?
  • texte (zone rectangulaire de bruits devant le mot de passe ? note dans man ? dans le messages reçus ?)

[scenario] où est l'enfant ?

Le comportement de la maman ne change pas après la libération, ca reste crédible — fugue, errance — mais sans plus d'élément scénaristique, c'est bancal et on ne sait pas vraiment si on a résolu l'énigme.

VIMproved pour toujours

Dans la bibliothèque, en consultant la livre VIMproved, il est indiqué qu'il
disparait. Hors, il reste consultable après l'action.

Rapport d'activité ou Todo.txt

Afin d'aider la-le joueur-euse à progresser, il pourrait être sympa d'ajouter un genre de liste de tâches indiquant : le pourcentage de commande découvertes, les tâches connues à faire, les tâches réalisées (en s'appuyant sur les info enregistrées dans les cookies - voir GameState).

Si l'utilisateur-trice est perdu, elle-il peut consulter cette aide avec (par exemple) la commande 'cat ~/todo.txt'.

Communiquer le nombre d'occurences de Magus

Dans la PiècesSecrète de la Bibliothèque, le bibliothécaire indique de lui
renvoyer le nombre d'occurence de "Magus" dans le livre HistoireDeTerminus. Une
fois que l'on connait la réponse, comment la lui indiguer?
En tous cas, ce n'est pas évident à deviner.

Grep password et sudo

Bonjour. Je n'arrive pas a passer le jeu au niveau du grep password= .txt or grep password= L.txt ni rien. J'ai essayé de chercher avec grep password= Q.txt or n'importe quel fichier txt, ca ne fonctionne pas. Meme en utilisant sudo cat Certificat et en tapant le MDP (IH**) ca ne fonctionne pas. J'ai vu sur github que vous avez mis a jour il y a deux mois le fichier https://github.com/luffah/Terminus/blob/master/src/js/terminus.level2.js concernant la commande grep. Le jeu etait mis a jour ou pas? Comment on peut reussir passer cette etape? Merci pour votre aide.
J'ai mis deux imprime ecran ici : https://images2.imgbox.com/c6/d2/AHwE4vFj_o.png et https://images2.imgbox.com/22/ab/uBZKCIuI_o.png

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.