Affichage des articles dont le libellé est Morrowind. Afficher tous les articles
Affichage des articles dont le libellé est Morrowind. Afficher tous les articles

lundi 11 novembre 2013

Maps infinies

Je travaille depuis quelques temps sur un système, en Inform7, pour avoir une map démesurément grande, voire "infinie", du point de vue de l'expérience du joueur, en tous cas ; par exemple une map qu'il serait impossible d'explorer entièrement avant que, d'un point de vue réaliste, le personnage ne meure de vieillesse, tant cela prendrait de temps.

J'aime les jeux comme Daggerfall ou Elite qui sont infinis, pris dans ce sens-là ; des jeux inépuisables et inexplorables, et qui plus est, dotés d'un contenu généré procéduralement à chaque nouvelle partie, ce qui rend l'expérience de jeu unique et toujours renouvelée. Mais qui sont, malheureusement aussi, des jeux monotones, répétitifs, et finalement pauvres en contenu, qu'il soit procédural ou pas ; avouons-le.

Je me cogne exactement à ce problème : j'essaie de créer une map dont il faudrait, par exemple, un mois (ingame) pour la parcourir ; on pourrait se déplacer dans toutes les directions, où que l'on soit (supposant que l'on soit en extérieur), il n'y aurait qu'une seule room dans le jeu (soit le monde entier), avec un système de coordonnées verticales et horizontales qui indiquent au joueur où il se trouve sur la carte. Et selon les coordonnées spatiales du joueur, la description des lieux et leur contenu en terme d'objets changerait. En -1 ; 15 on lirait "Vous vous trouvez dans des marais putrides", alors qu'en -1 ; 16 on sortirait des marais pour lire "Vous êtes dans une plaine à l'herbe bien grasse" - et le programme se chargerait de faire apparaître une ferme, un chien, un rocher, que sais-je, qui disparaitraient à nouveau au prochain déplacement. Tout ceci est rodé et fonctionne.

Du moins, ça fonctionne techniquement ; en terme de gameplay, pas du tout. Il est naturellement impossible d'écrire une description "à la main" pour chaque position possible sur la carte (admettons qu'elle aille de 1 ; 1 à 100 ; 100 - cela ferait déjà 10 000 localisations possibles) ; peut-être est-il possible d'écrire des description générées procéduralement, selon le type de terrain où le joueur se trouve, l'heure, la météo, les objets présents, et divers critères aléatoires qui donneraient des descriptions un peu moins répétitives et monotones, mais malgré ça, ça ne fonctionne pas.

Parce que contrairement à un jeu en 3D (au hasard : Morrowind ou GTA), une fiction interactive (basique) n'a que des mots à offrir.

Et qu'aller quinze fois vers le nord pour lire "Vous êtes dans une plaine. Vous voyez un sapin" , "Vous êtes dans une plaine. Vous voyez trois rochers et deux champignons", "Vous êtes dans une plaine. Vous voyez une vieille ruine et un ruisseau qui coule avec un bruit joyeux", etc, c'est parfaitement assommant.

Que le monde soit très réduit en terme de rooms, ou gigantesque, il faut que les lieux aient un sens – dans tous les sens du terme, c'est à dire une raison d'être, un contenu, et une articulation réelle, cohérente, avec le reste de l'espace. Du coup il est plus facile de placer un jeu dans un contexte urbain : les lieux ont déjà une signification en eux-même et une articulation logique. Dans la nature, par contre, tout est plus répétitif et vide ; si on peut être charmé par les couleurs d'une forêt ou un reflet de lumière particulier sur l'eau dans un jeu à graphismes, dans une fiction interactive, c'est beaucoup plus compliqué à mettre en œuvre...

J'avais envisagé par exemple – en dehors des descriptions et autres messages d'ambiance procéduraux faisant varier automatiquement et aléatoirement les messages du jeu – d'inclure après les descriptions de lieux, des citations de faux auteurs, ou faussement encyclopédiques, pour ancrer les lieux du jeu (les lieux chiants : forêts, plaine, marais, etc). Et / ou des indications plus techniques comme la température extérieure, pour un côté plus roguelike. Ça aurait pu donner quelque chose du genre : 

"Vous êtes dans la forêt au nord de Marithza. Tout autour de vous, de hauts sapins, majestueux, aux branches lourdement chargés d'aiguilles d'un bleu profond. Le ciel est d'un bleu intense, sans nuages. Au loin on distingue les monts enneigés du Grand Sanctuaire.
"Tous marchaient en silence, tête baissée, ignorant la faim et le froid sur la route du Grand Sanctuaire " (Evgueni Korsan) 
Vous pouvez voir : deux girolles, un grand rocher, une ruche.
Température extérieure : 25 °. Position : 35 ° nord, 23 ° ouest"

J'ai mis en rouge ce qui pourrait être une partie de la description générée aléatoirement (prise au hasard dans un ensemble de phrases d'ambiance liées à la forêt par exemple) – en bleu, un message lié aux conditions météo dans le jeu, que l'on aurait où qu'on soit (en extérieur, tout au moins). En fuchsia, une citation prise au hasard dans un ensemble de citations liés au lieu du Grand Sanctuaire.

Tout ceci est sympathique et plus parlant que "Vous êtes dans une forêt, y a des arbres" deux cent fois de suite quand le joueur avance deux cent fois dans la forêt, mais ça ne suffit quand même pas.

Et puis, dans la vraie vie, on ne peut jamais vraiment aller dans TOUTES les directions, en permanence. Dans l'absolu, si ; mais en pratique, non. L'espace est organisé, il y a des routes, des parcelles privées, des lieux sans intérêt, aussi.

Comment faire alors pour concilier "map gigantesque" et "map qui a du sens" ?

Note du 19 mars 2018 :

Je n'ai toujours pas trouvé la réponse à cette question...  et même en ayant plusieurs fois, au fil des années, tenté de reprendre ce système de map à coordonnées, et en l'améliorant, je n'ai jamais trouvé comment l'exploiter de manière pertinente dans une fiction interactive, c'est-à-dire, malgré tout, un jeu fondamentalement fondé sur une histoire.

samedi 18 décembre 2010

Interactive fictions

I've been working for a few weeks on what is called an "interactive fiction".

Basically, a text-based adventure game, not necessarily entirely text-based (there may be illustrations) but whose operation, whose gameplay, is entirely text-based.

A world in which events, characters, in short, everything is described by text, and where the player enters textual commands to act.

It may sound ultra primitive, but the capabilities of today's computers, compared to those of the 80's - when the great standards of this genre were released, for example, on CPC, The Black Sect, Omeyad, Sram 2, Orphée – and the possibilities offered by modern programming languages, such as Inform7, which I use, make the games almost infinite in size and complexity.

So I am, for the moment, because it will grow again, at no less than 520 places where the player can move. Nothing prevents me, apart from the work time, from adding twice or three times as many, or ten times as many, to create a world or a city that is rich and explorable in its every corner. With an equally virtually infinite number of non-player characters and items to manipulate, missions and subplots, in short, as on Zombo.com there is no limit other than the imagination.

Of course, I wouldn't hate to have an illustrator with a brain directly connected to mine, who would give an objective, immediate, visual existence to what I'm clumsily trying to translate into sentences. But having a tool as powerful as Inform7, and as easy to use, is already unhoped-for.

The programming language resembles the human language. Its syntax is quite rigorous, but once you get the hang of it, it works on its own.

Example:

HeadRoomHouse is a room. It is north from MaisonChefCouloir. The printed name is "In the bedroom". The description is "[if unvisited]You enter the bedroom of what was once the Bauer couple. The cupboards are open, their contents spilled on the floor, desecrated. The bed has been used as a latrine. Whoever came here obviously did everything they could to defile this place. You are in the bedroom. The cupboards are open, their contents spilled on the floor, desecrated. The bed has been used as a latrine[end if]".

A code that defines the existence of a room (HeadRoomHouse), its name on the screen and its descriptive text, with variables (the text varying if the room has already been visited, or not). Let's admire the economy of means!

Another one: 

Every turn when the Prostitute is in the location of player:
If a random chance of 1 in 10 succeeds
begin;
say "[one of]The girl smiles at you with a teasing look. The girl: 'Do you want to come along, my wolf? The prostitute lights a cigarette and sighs. The prostitute looks exhausted, the night is going to be long; you feel sorry for her. The girl, in a whining voice: 'Do you have some booze? [The girl brushes her hair back, holding a small oval mirror in one hand. The girl nods discreetly to her pimp, who is standing in the distance. The girl smiles at the men who pass by, looking at them from head to toe, without modesty. The prostitute runs her fingers through her hair, sighs. The girl smiles at you with a slightly sad look. In random order";
end if.

A code, here, that allows to display randomly, when the player is in the presence of a non-player character, some ambiance messages, purely free of charge, but that give an impression of life, of autonomy of the game world.

Again, minimal code, for something that really brings to the game – and in a language so close to human that it requires no learning as such. The manual of the software is sufficient for most of the cases where the syntax is a possible problem.

So I'm enjoying creating a city as large and rich as possible, where the player can lead an absolutely non-linear life. Maybe I'll try (technically, it's a bit more difficult, but feasible) to take a model from GTA, in the "total freedom / no end" genre. And why not work constantly to increase the game, by sending updates to my players, who will be able, without losing their saves, to constantly have new places to explore, new objects, new situations to discover.

Until a language is simple and powerful enough to generate these new features by itself.

*

That being said:

I consider interactive fictions as an authentic ludic genre, in its own right, but also as an authentic literary genre – they could be in the 21st century, what the novel was in the 19th and 20th; a place of exploration of reality and human problems, and of reflection, even of proposal (political, philosophical) where an even greater identification of the "reader", and even a form of cyber-bovarianism will make the thing even more effective.

On the condition that we mutate the novel itself, by integrating into it all that the F.I. has of labyrinthine, of variant, of random, but also of redundant, of buggy, of limited – because it is also, in the same way as the traditional narration, but at another level, a faithful image of reality.

I imagine a book – can we still say a novel? but in the end what does it matter – whose text would resemble a video game source code.

A thrifty, precise, systematic, ordered, hierarchical language, which, without those damn stylistic effects that rot literature – and which are not "style" – establishes a world.

A text that integrates the different levels of consciousness and reality that we go through every day – the daily, mechanical, almost unconscious acts – daydreaming, memories – the waking dream that are the virtual worlds in 2D or 3D, etc.

It is not a question of "making science fiction". It is not about gimmicks or literary processes to be in the air of time.

I started reading a novel this afternoon that says it better than I can in a few sentences:

"Coding is everything that poetry meant to me back when we were in college. Precision, eloquence, power, completeness. Fourteen lines can fill you with the entire universe."

God wrote the source code for the universe. There is nothing to stop us from imitating him.

Fictions interactives

Je travaille depuis quelques semaines à ce qu'on appelle une "fiction interactive".

En gros, un jeu d'aventure textuel, pas forcément entièrement textuel (il peut y avoir des illustrations) mais dont le fonctionnement, le gameplay, sont entièrement basés sur le texte.

Un monde dans lequel les événements, les personnages, bref, tout est décrit par du texte, et où le joueur entre des commandes textuelles pour agir.

Ça peut sembler ultra primaire, mais les capacités des ordinateurs actuels, par rapport à ceux des années 80 – où sont sortis les grands standards de ce genre, par exemple, sur CPC, La Secte Noire, Omeyad, Sram 2, Orphée – et les possibilités offertes par les langages modernes de programmation, comme Inform7, que j'utilise, rendent les jeux quasiment infinis en terme de taille et de complexité.

Ainsi j'en suis, pour l'instant, car ça va encore grandir, à pas moins de 520 lieux où le joueur peut se déplacer. Rien ne m'empêche, à part le temps de travail, d'en ajouter encore le double ou le triple, ou dix fois, pour créer un monde ou une ville riche et explorable dans ses moindres recoins. Avec un nombre tout aussi virtuellement infini de personnages non-joueurs et d'objets à manipuler, de missions et d'intrigues secondaires, bref, comme sur Zombo.com il n'y a pas d'autre limite que l'imagination.

Évidemment, je ne détesterais pas avoir sous la main un illustrateur au cerveau directement branché sur le mien, qui donnerait une existence objective, immédiate, visuelle, à ce que j'essaie maladroitement de traduire en phrases. Mais avoir un outil aussi puissant qu'Inform7, et aussi simple d'utilisation, est déjà inespéré.

Le langage de programmation ressemble au langage humain. Sa syntaxe est assez rigoureuse, mais une fois qu'on a pris certains réflexes, ça va tout seul.

Exemple : 

MaisonChefChambre is a room. It is north from MaisonChefCouloir. The printed name is "Dans la chambre à coucher". The description is "[if unvisited]Vous entrez dans la chambre à coucher de ce qui fut autrefois le couple Bauer. Les armoires sont ouvertes, leur contenu renversé au sol, profané. Le lit a servi de latrines. Ceux qui sont venus ici ont manifestement tout fait pour souiller ces lieux.[otherwise]Vous êtes dans la chambre à coucher. Les armoires sont ouvertes, leur contenu renversé au sol, profané. Le lit a servi de latrines.".

Code qui définit l'existence d'une pièce (MaisonChefChambre), son nom à l'écran et son texte descriptif, avec des variables (le texte variant si la pièce a déjà été visitée, ou pas). Admirons l'économie de moyens !

Un autre : 

Every turn when the Prostituee is in the location of player:
If a random chance of 1 in 10 succeeds
begin;
say "[one of]La fille vous sourit d[']un air aguicheur.[or]La fille : 'Tu veux venir, mon loup ?'.[or]La prostituée s[']allume une cigarette en soupirant.[or]La prostituée a l[']air épuisée, la nuit va être longue ; vous avez pitié d[']elle.[or]La fille, d[']une voix geignarde : 'T'aurais pas un peu de gnôle ?'.[or]La fille se recoiffe, tenant d[']une main un petit miroir ovale.[or]La fille fait un signe de la tête, discret, à son souteneur qui se tient au loin.[or]La fille sourit aux hommes qui passent, les regardent de la tête aux pieds, sans pudeur.[or]La prostituée passe ses doigts dans ses cheveux, soupire.[or]La fille vous sourit d[']un air un peu triste.[in random order]";
end if.

Code, ici, qui permet d'afficher aléatoirement, lorsque le joueur se trouve en présence de tel personnage non-joueur, des messages d'ambiance, purement gratuits, mais qui installent une impression de vie, d'autonomie du monde du jeu.

Là aussi, code minimal, pour quelque chose qui apporte vraiment au jeu – et dans un langage tellement proche de l'humain qu'il ne nécessite aucun apprentissage en temps que tel. Le manuel du soft est suffisant pour la plupart des cas où la syntaxe pose un éventuel problème.

Je me fais donc plaisir à créer une ville aussi étendue et riche que possible, où le joueur puisse mener une vie absolument non-linéaire. Peut-être essaierai-je (techniquement, c'est un peu plus coton, mais faisable) de prendre modèle sur GTA, dans le genre "liberté totale / pas de fin". Et pourquoi pas travailler sans cesse à augmenter le jeu, en envoyant les updates à mes joueurs, qui pourront, sans perdre leurs sauvegardes, avoir sans cesse de nouveaux lieux à explorer, de nouveaux objets, de nouvelles situations à découvrir.

En attendant qu'un langage soit assez simple et puissant pour générer ces nouveautés tout seul.

*

Ceci étant :

Je considère les fictions interactives comme un authentique genre ludique, à part entière, mais aussi comme un authentique genre littéraire – elles pourraient être au 21ème siècle, ce que le roman fut au 19ème et au 20ème ; un lieu d'exploration du réel et des problématiques humaines, et de réflexion, voire de proposition (politique, philosophique) où une identification encore accrue du "lecteur", et même une forme cyber-bovarisme rendront la chose encore plus efficace.

À condition de faire muter, donc, le roman lui-même, en y intégrant tout ce que les F.I ont de labyrinthique, de variant, d'aléatoire, mais aussi de redondant, de bogué, de limité – parce que c'est aussi , au même titre que la narration traditionnelle, mais à un autre niveau, une image fidèle de la réalité.

J'imagine un livre – peut-on encore dire un roman ? mais au fond quelle importance – dont le texte ressemblerait à un code-source de jeu vidéo.

Une langue économe, précise, systématique, ordonnée, hiérarchique, qui, sans ces foutus effets de style qui pourrissent la littérature – et qui ne sont pas "le style" – instaure un monde.

Un texte qui intègre les différents niveaux de conscience et de réalité que nous traversons tous tous les jours – les actes quotidiens, mécaniques, presque inconscients – la rêverie, les souvenirs – le rêve éveillé que sont les mondes virtuels en 2D ou en 3D, etc.

Il ne s'agit pas de "faire de la science-fiction". Il ne s'agit pas de gadgets ou de procédés littéraire pour être dans l'air du temps.

J'ai commencé ce midi la lecture d'un roman qui en quelques phrases dit ça mieux que je ne le pourrai :

"Le codage, c'est tout ce que la poésie représentait pour moi du temps où nous étions en fac. Précision, éloquence, puissance, exhaustivité. Quatorze lignes peuvent te remplir l'intégralité de l'univers."

Dieu a écrit le code-source de l'univers. Rien ne nous interdit de l'imiter.

vendredi 16 juin 2006

Doors you can't open

I found a few screenshots of Omeyad on the net, an old Amstrad CPC game published by Ubi Soft in the heyday of parsers and 0, 1 and 2 mode. Insofar as I have this game on my emulator, this discovery had nothing to do with a heart-rending reunion, but it's still incredible, the nostalgia that old video games continue to generate.

Rather like a rag doll that leaves more to the imagination of the kid playing with it, than an ultra-realistic figurine that talks, walks, dances, shoots guns and makes coffee for the whole family, these old games, short, limited, with minimalist graphics, were dream machines. You're in a corridor in Omeyad, or at the top of a hill in Oxphar, or in a tavern in Iron Lord, you can't open all the doors, or go down to the village you see in the distance (a few vague pixels on a screen), or go and talk to the tavern patrons, and then, inevitably, your imagination starts to work.

Making my own little Black Sect-like game is an old fantasy. When I was designing the scenery in Paint, I had the idea of adding a little man in the background, with red eyes. I figured he'd have absolutely no role in the action, but his presence would be intriguing and make you dream. Just like a mountain, where you can't see what it's hiding.

Note from March 21, 2018:

Games from 1995, 2000, 2005, and soon 2010, generate and will generate as much nostalgia as CPC games. Just look at the sighs that we, that I, heave at Daggerfall, Morrowind, Gothic 2... Of course, all this has to do with biographical factors, with nostalgia for adolescence, regardless of the era in which it was experienced. However, the limitations of older games tend to suggest doors that can't be opened and impassable mountains that make you wonder what's behind them, and that's their strength, their charm: imagination and wonder need mystery, unanswered questions.

Portes qu'on ne peut pas ouvrir

J'ai trouvé sur le net quelques screenshots d'Omeyad, vieux jeu Amstrad CPC édité par Ubi Soft à la grande époque des analyseurs de syntaxe et du mode 0, 1 et 2. Dans la mesure où j'ai ce jeu sur mon émulateur, cette découverte n'eut rien de retrouvailles déchirantes, mais c'est tout de même incroyable, la nostalgie que continuent à générer les vieux jeux vidéos.

Un peu comme la poupée de chiffons qui laisse plus de latitude à l'imagination du gosse qui joue avec, qu'une figurine ultra-réaliste qui parle, marche, danse, tire au fusil et fait le café pour toute la famille, ces vieux jeux, courts, limités, aux graphismes minimalistes, étaient des machines à rêver. Tu es dans un couloir, dans Omeyad, ou au sommet d'une colline dans Oxphar, ou dans une taverne dans Iron Lord, tu ne peux pas ouvrir toutes les portes, ni descendre vers le village que tu vois au loin (quelques pixels vagues sur un écran), ni aller parler aux clients de la taverne, et là, forcément, ton imagination commence à fonctionner.

Faire mon propre petit jeu à la Secte Noire est un vieux fantasme. En dessinant un décor dans Paint, j'ai eu l'idée de rajouter un petit bonhomme au fond, avec les yeux rouges. En me disant qu'il n'aurait strictement aucun rôle dans l'action mais que sa présence serait intrigante, ferait rêver. Tout comme un montagne, dont on ne verrait pas ce qu'elle cache.

Note du 21 mars 2018 :

Les jeux de 1995, 2000, 2005, et bientôt 2010, génèrent et généreront autant de nostalgie que les jeux CPC. Il n'y a qu'à voir les soupirs que nous, que me font pousser les Daggerfall, Morrowind, Gothic 2... Tout cela tient naturellement à des facteurs biographiques, à la nostalgie de l'adolescence, quelle que soit l'époque à laquelle on l'a vécue. Néanmoins, les vieux jeux ont plus tendance, par leurs limitations, à proposer des portes qu'on ne peut pas ouvrir et des montagnes infranchissables dont on se demande bien ce qu'elles cachent, et cela fait leur force, leur charme : l'imagination et l'émerveillement ont besoin de mystère, de questions sans réponse.