mercredi 27 février 2019

Alan Wake (in English)

I passionately hated Alan Wake and its soooooo cliché story of a writer dealing with very malevolent ghosts that interfere with his writing as much as his personal life. Stephen King has written all about it and there's not much more to say. All this would have been forgivable if this scenario had not been a pure pretext for a nasty survival-horror where you have to escape from heaps of enemies to have the right to watch the next cinematic and have a few minutes of pure exploration, here and there; rather nice sceneries  actually, that you'd like to see really serve a purpose – and they helped me to verbalize out loud, during the game, that I was absolutely, absolutely fed up with the place I live in and that I'll have to change my surroundings, just to survive. At least that's what it was for...

Alan Wake



J'ai passionnément détesté Alan Wake et son histoire plus-cliché-que-moi-tu-meurs d'écrivain aux prises avec des fantômes très malveillants qui parasitent son écriture autant que sa vie privée. Stephen King a tout écrit sur le sujet et il n'y a pas grand-chose à en dire de plus.

Tout cela aurait été pardonnable si ce scénario n'avait pas été un pur prétexte pour un survival-horror horripilant où il faut échapper à des monceaux d'ennemis pour avoir le droit de regarder la cinématique suivante et quelques minutes d'exploration pure, ici et là, volées à une histoire qu'il faut suivre docilement ; des décors plutôt jolis et dont on aimerait qu'ils servent réellement à quelque chose – et qui m'ont aidé à verbaliser à haute voix, en cours de partie, que j'en avais absolument, absolument assez de l'endroit où je vis et qu'il va me falloir changer de cadre, pour simplement survivre. Ça aura au moins servi à ça...

vendredi 8 février 2019

La Tempête

Après une bonne année de corrections, d'améliorations et de travail sur une version anglaise, mon jeu La Tempête sort enfin, dans les deux langues, sur itch.io :

https://stephanef.itch.io/la-tempete
https://stephanef.itch.io/the-storm



Il est évidemment disponible aussi dans sa nouvelle version sur le site de référence en France :

http://www.fiction-interactive.fr/la-tempete/

Je ne connais pas les statistiques sur ce dernier site, mais je dois dire que sur itch.io, jusqu'ici, ce n'est pas très glorieux : 8 téléchargements pour la version française (mais il est vrai qu'on peut y jouer en ligne : je ne sais pas combien de personnes l'ont fait) et 34 pour la version anglaise.

La fiction interactive est un petit monde où il y a au moins autant d'auteurs que de joueurs, et où il est donc difficile d'obtenir l'attention de ses confrères, absorbés eux-mêmes par le développement ou la promotion de leurs propres œuvres. Et à part le webzine SPAG, qui chronique de manière sélective et élitiste (et ce n'est pas un reproche), et évidemment les "réseaux sociaux" comme on dit au journal télévisé, il existe assez peu de moyens, au final, de se faire connaître du public, et pire encore, du public qui existe... peut-être, au-delà de ses pairs.

*

Mon but en commençant ce jeu il y a un peu moins de deux ans, à une époque où je bossais à 100% sur des fictions interactives à liens hypertextes, était de retrouver ce "bon vieux feeling" du parser, que j'avais redécouvert en jouant à Untold Stories (épisode 1) mais en dépassant une bonne fois cette limite du "je ne sais pas quoi taper / je ne sais pas comment formuler ce que je veux faire" qui bloque tant de joueurs – et moi le premier.

Deux grandes pistes, donc :

– Une implémentation maximale – il m'est insupportable d'avoir une réponse d'erreur (ou ultra-générique) dans un jeu, quand je veux examiner, par exemple, un objet décrit dans le texte d'une room.

– Essayer d'intégrer un maximum de synonymes pour les verbes et les noms, et veiller à ce que les expressions de la vie courante soient correctement comprises par le jeu. Par exemple, "prendre un bain" ne signifie pas PRENDRE un objet BAIN. De même que "pousser la porte" signifie en réalité l'ouvrir...

Pour donner quelques exemples concrets :

J'ai remplacé la plupart des réponses de base des actions, ou en ai crée.

An InteractiveFiction has some text called JumpingResult. The JumpingResult of an InteractiveFiction is "Vous n[']avez aucune raison de faire cela".

La kind InteractiveFiction me permet, au début de chaque jeu, de déclarer "(Nomdujeu) is an InteractiveFiction" et ensuite d'adapter les réponses des actions comme j'en ai envie.

SuperMario is an InteractiveFiction. The JumpingResult of an SuperMario is "Bravo, vous avez compris le principe du jeu".

J'ai essayé de développer autant que possible l'action "utiliser", en lui faisant détecter, selon l'objet auquel elle s'applique, la réponse la plus pertinente. Quelques exemples :

– Utiliser un container, une porte ou une fenêtre, équivaut à l'ouvrir ou le/la fermer, selon son état.
– Utiliser un objet mangeable, équivaut à le manger.
– Utiliser un objet que l'on peut, équivaut à le lire.
– Utiliser un vêtement équivaut à le mettre.

Au passage, cela a demandé de créer certaines kinds, comme les fenêtres, ou les vêtements. Le genre d'objet que l'on peut retrouver dans n'importe quelle fiction interactive ou presque, quel que soit son cadre.



(Cliquer pour élargir)

Le but de tout cela n'étant pas d'appauvrir Inform 7 mais de permettre au joueur qui ne sait comment formuler exactement une action, de tenter le tout pour le tout avec le verbe "utiliser".

Parallèlement, pour éviter justement au maximum les situations où le joueur ne sait pas quoi taper, à cause d'un parser trop exigeant, j'ai cherché à multiplier autant que possible les synonymes, du genre :

Understand "prendre [direction]" or "prendre ->/à/a/au/en/vers/par [direction]" as going when ParserON is true.
Understand "aller ->/à/a/au/en/vers/par [direction]" or "aller [direction]" as going when ParserON is true.
Understand "avancer ->/à/a/au/en/vers/par [direction]" or "avancer [direction]" as going when ParserON is true.
Understand "marcher ->/à/a/au/en/vers/par [direction]" or "marcher [direction]" as going when ParserON is true.
Understand "cheminer ->/à/a/au/en/vers/par [direction]" or "marcher [direction]" as going when ParserON is true.
Understand "courir ->/à/a/au/en/vers/par [direction]" or "courir [direction]" as going when ParserON is true. 

Ou encore :

Understand "actionner [something]" or "allumer [something]" or "demarrer [something]" or "commuter [something]" or "mettre [something] en marche/route" or "mettre en marche/route [something]" or "remettre [something] en marche/route" or "remettre en marche/route [something]" as switching on when ParserON is true.

On remarquera le "when ParserON is true". C'est un truth state que j'ai crée pour pouvoir tout simplement désactiver le parser quand j'en ai envie – par exemple pour passer, dans un jeu, du parser à des liens hypertextes, sans risque que les deux approches se télescopent.

*

J'ai simplifié / automatisé certaines choses, comme par exemple avec la commande "allumer la lumière" (formulable de diverses façons) qui détecte automatiquement tous les luminaires dans une pièce, et les allume, s'ils sont éteints. L'inverse fonctionne aussi. Le but n'étant pas uniquement d'ajouter un gadget technique au jeu, mais de progresser vers une compréhension des expressions les plus quotidiennes, les plus banales, les plus naturelles qu'utilisent les gens – sauf les joueurs professionnels de fictions interactives, qui ont l'esprit perverti par plusieurs décennies de jeux à l'approche ultra-analytique.

*

Les rooms sont systématiquement doublées par des backdrop (à la room ChambreRoom est lié le backdrop ChambreBackdrop, par exemple) qui me permettent aussi bien de gérer les déplacements que les actions en tous genre (penser à, fouiller, etc) que l'on peut imaginer.

The CuisineBackdrop is a Lieu. It is everywhere. The EnteringDestination of the CuisineBackdrop is CuisineRoom. The ExitingDestination of the CuisineBackdrop is JardinRoom. Understand "kitchen" as the CuisineBackdrop. The printed name of the CuisineBackdrop is "kitchen". The noise of the CuisineBackdrop is "[the Noise of CuisineRoom]". The ThinkingResult of the CuisineBackdrop is "A well-equipped room, brand new and immaculate. A dream kitchen, that looks as if it has never been used, as perfect and impersonal as a photo in a magazine. If someone ([italic type]but who ?[roman type]) asked you, you would say, without hesitation, that you love cooking and spending hours at the kitchen counter. Yes, without hesitation. No doubt about it".

Ainsi, si n'importe où dans la maison, le joueur tape "aller dans la cuisine", ou "penser à la cuisine", c'est le backdrop qui est détecté et qui répond à l'action. Soit par une réponse narrative (The ThinkingResult of the CuisineBackdrop) soit par un déplacement (vers la EnteringDestination du backdrop).

*

Ce ne sont là que quelques exemples de ce que je tente de faire pour sortir des jeux à parser qui offrent une souplesse d'utilisation et un niveau de réponse au joueur, satisfaisants.

Je travaille déjà sur un autre jeu, très réduit lui aussi en nombre de rooms et d'objets, mais où je cherche à pousser beaucoup plus loin la variété des actions possibles, et des formulations possibles pour les accomplir. J'en dirai plus quand il y aura quelque chose d'un tant soit peu présentable.