Zed
#1
Zed est un projet de site web et d'art numérique qui propose de créer, d'explorer et d'interagir dans une galaxie.

Cette galaxie contient divers objets (astéroïdes, planètes) pouvant être explorés sous forme graphique ou sous forme textuelle, à la façon d'un livre dont vous êtes le héros.

ll y a de cela une petite semaine j'ai lâché l'expression livre dont vous êtes le héros sur un canal IRC, éveillant la curiosité de Meneldur qui m'a invité à présenter ici-même le projet.

[Image: Zed%20site%20web%20et%20m%C3%A9taphore%2...e=htmljpeg]

Quelle est la genèse de ce projet ?

En février, je relisais les romans de Iain Banks du cycle de la Culture, ce qui m'inspira de créer un site web expérimentant plusieurs choses qui m'ont marqués durant mon adolescence et continue à me marquer aujourd'hui : le rétrofuturiste, le cyberpunk, des jeux comme Space Quest, la demoscene, les livres dont vous êtes le héros, des jeux de rôle comme Ars Magica, la programmation de logiciels interagissant avec un logiciel environnement, des valeurs de liberté, de refus de la publicité et du commercial, de partage, d'éthique.

Après avoir jeté des notes sur papier et commencé à coder la carcasse et le moteur du site, j'ai laissé reposer pour mieux me faire une idée de ce que devra être Zed avant de reprendre son développement fin juin.

Côté technique

Zed s'appuie sur un format XML dont je finalise en ce moment le schéma. Des classes de PHP lisent cela et en font une sortie HTML.

Exemple de code XML :
http://image.bayimg.com/fangoaaci.jpg

Et son résultat :
http://image.bayimg.com/fangpaaci.jpg

Cela permet donc d'écrire son paragraphe tout en listant les choix pour diriger le perso (concrètement en lieu et place des rendez-vous au 30 y a un lien).

Chaque utilisateur de Zed a un perso qui est à un endroit précis (e.g. sur l'astéroïde Kaos, dans la ville Zeta, à l'endroit n° 3).

S'il revient dans l'histoire, celle-ci redémarre donc à la section correspondant à sa localisation (e.g. le bloc section ayant <local>3</local>)

Corollaire: le format devra probablement évoluer pour permettre un branchement plus conditionnel, c'est-à-dire permettre à certains paragraphe de définir un flag utilisateur indiquant qu'il a choisi une certaine voie ou action, et en fonction de ce flag rediriger vers la section ad hoc.

Une autre particularité sont les hooks, la possibilité de raccrocher une section de l'histoire à une fonction du site. Exemple concret :<hook type="spatioport"/> va rajouter au texte la liste des vaisseaux présent dans le spatioport de cet astéroïde / de l'endroit (encore une autre utilité de la localisation) et en orbite, avec la possibilité pour le perso de quitter l'histoire pour s'envoler vers d'autre cieux ou au contraire d'entrer dans l'histoire, après y avoir aterri avec son propre vaisseau (s'il laisse son vaisseau en orbite, la téléportation devrait plutôt se faire vers le point d'entrée de l'histoire).

Et donc, ça permettra quoi tout cela ?

Zed peut devenir un projet d'écriture collective, vu qu'il permet :

- de créer des corps (planètes, astéroïdes) dans la galaxie et d'y associer une histoire dont vous êtes le héros, qui sera jouable par l'ensemble des utilisateurs de Zed allant sur place.
- d'illustrer ces histoires.

Zed deviendra alors un projet d'art numérique, où le visiteur pourra évoluer d'histoire en histoire, tout en sociabilisant avec d'autres personnes rencontrées sur Zed.

L'HyperShip sera particulièrement itnéressant à ce niveau car il contient une tour dont les couloirs peuvent accueillir des œuvres, tel un musée (l'on voit une vue sur l'espace et devant des cadres transparents ; un clic, et hop l'on peut téléverser une œuvre).

[Image: jankbaacj.jpg]

Ces couloirs donneront sur les appartements/cabines/quartiers des utilisateurs du site, qui pourront les décorer à leur goût (soit en u/l une image, soit via un moteur javascript de choix de textures pour le sol et les murs et une bibliothèque d'objets à insérer). Il sera également possible de relier ces endroits à une HDVH.

L'HyperShip sera donc un hybride entre art graphique, histoires littéraires et contenu utilisateur.

Feedback

Voilà ma vision du projet. Mais vous, à la lecture de ce post, quelle en est votre vision ?

Que pensez-vous que cela pourrait donner ?

Comment verriez-vous l'écriture d'aventures dont vous êtes le héros dans ce contexte ?

Question bonus

Je présume que bon nombre d'entre vous ont repéré d'où vient le nom de code Zed ?
La connaissance s'accroît quand on la partage.
Répondre
#2
Salut à toi Zed (de Belgique?),

Je pense qu'il y a matière à faire concernant ton idée, cela me rappel un livre "Révolte sur la lune"...
Concernant le graphisme tu maitrise le sujet; par contre sur l'aspect technique, tu sembles oublier la base de donnée.
En effet le XML et les classes PHP est un bon début pour un site "fixe" mais cela t'obligeras à créer autant de page que de lieu/évènement dans l'histoire (cf screen fourni).

Peut être que je me trompe sur le développement souhaité mais à mon avis du devrais penser à utiliser PHP/Mysql pour rendre ton site dynamique. Rien que pour le flag permettant de savoir si l'utilisateur à déjà effectué l'action/la visite du lieu.

Note : La grande majorité des LDVH sont des challenges entre l'auteur et le lecteur (tuer la princesse, sauver le dragon, rendre l'or aux riches Gne ), en bref finir l'histoire et accéder au but. A moins que celui ci soit la socialisation (le mot est à la mode).

Je t'encourage à persévérer si tu pense tenir une idée!
Rome ne s'est pas faite en un jour
Répondre
#3
(14/07/2010, 01:45)Fidelcastor a écrit : Salut à toi Zed (de Belgique?),
Je viens de Belgique, yep. Zed par contre est le nom de code du projet, et est tiré d'un livre dont vous êtes le héros.

(14/07/2010, 01:45)Fidelcastor a écrit : Je pense qu'il y a matière à faire concernant ton idée, cela me rappel un livre "Révolte sur la lune"...
Concernant le graphisme tu maitrise le sujet;
Merci, ton jugement est moins sévère que le mien, je ne suis pas satisfait du design actuel que je trouve un peu tristounet et en manque de finition.

(14/07/2010, 01:45)Fidelcastor a écrit : Par contre sur l'aspect technique, tu sembles oublier la base de donnée.
En effet le XML et les classes PHP est un bon début pour un site "fixe" mais cela t'obligeras à créer autant de page que de lieu/évènement dans l'histoire (cf screen fourni).

Peut être que je me trompe sur le développement souhaité mais à mon avis du devrais penser à utiliser PHP/Mysql pour rendre ton site dynamique. Rien que pour le flag permettant de savoir si l'utilisateur à déjà effectué l'action/la visite du lieu.

Il y a bel et bien une base de données pour Zed. Son schéma est consultable sur http://dereckson.pastebin.com/T8drrSCc (les tables pertinentes étant persos, persos_flags je présume).

Ceci dit, l'on peut imaginer (et j'effectuerai une release open source dans ce sens une fois le schéma stabitlisé, à destination des auteurs souhaitant une solution légère) de stocker les flags, l'inventaire ou la localisation du héros dans un cookie. MySQL n'est demandé que pour la persistance.

Pour avoir une idée de que cela donnera, le code est consultable à l'adresse suivante : http://bitbucket.org/dereckson/zed/src/tip/includes/story/

(14/07/2010, 01:45)Fidelcastor a écrit : Note : La grande majorité des LDVH sont des challenges entre l'auteur et le lecteur (tuer la princesse, sauver le dragon, rendre l'or aux riches Gne ), en bref finir l'histoire et accéder au but. A moins que celui ci soit la socialisation (le mot est à la mode).

Résoudre des portions de l'histoire donneront des avantages précis, tels l'accès à de nouveaux lieux et de nouvelles possibilités (e.g. accéder à un bar où peut se jouer un jeu de carte ou trouver un vaisseau spatial ou une AI acceptant d'en construire un).

Reste que pour garder en cohérence, l'aventure sauver le monde que tout le monde peut faire 20x et qui fait que la princesse se fait kidnapper puis libérer 20x d'affilée, c'est un peu bateau. Il faudra donc soit trouver des quêtes et objectifs attrayant pour les explorateurs, soit sacrifier le réalisme.

Mais il est vrai que Zed en tant que patchwork de plusieurs idées n'aura pas de but facilement déterminable et que la personne à la recherche d'une fin risque d'être déçue.

Pour rencontrer des gens, papoter et prendre le thé, il y aura la tour de l'HyperShip, qui est conçue pour cela. Je suis d'accord avec toi, le verbe sociabiliser et le substantif sociabilisation sonnent faux et sont artificiellement mis à la mode.

(14/07/2010, 01:45)Fidelcastor a écrit : Je t'encourage à persévérer si tu pense tenir une idée!
Rome ne s'est pas faite en un jour

Merci. Et si Rome s'effondre sous la proie des barbares, on aura un tas de bibliothèques PHP sympa sous licence opensource à réutiliser sur d'autres sites.
La connaissance s'accroît quand on la partage.
Répondre
#4
Salut à toi Dereckson,
Ce que je vois est très bien, bonne construction de table (j'ai rigoler pour
perso_sex enum('M','F','N','2') et me pose la question pour le N.. et le 2)

Penses tu intégrer un système de commerce/échange?

Pourras t-on vieillir? Et les voyages en vaisseau ?

J'attends de lire la suite et souhaite une soirée à toute la Belgique!
Répondre
#5
Héhé, pour le genre, N = neutre ou autre / 2 = hermaphrodite. Note que pour autre, nous devrions peut-être rajouté un 3.



Vu que la société galactique dominante sont [strike]des hippies anarchistes[/strike] une civilisation ayant estimée que l'argent n'était pas nécessaire pour partager les richesses, a priori l'on peut se dire que l'intérêt du commerce est quelque peu limité.

L'Hypership peut théoriquement fabriquer n'importe quel item.

Le type et le design d'item, de même que ses capacités pourront être déterminé par les utilisateurs.

Un moyen pour développer une alternative serait que les IA de l'hypership devienne nostalgique et exigent de fabriquer sauf urgence tout objet à partir de matières premières, en lieu et place de puiser l'énergie d'une étoile à proximité pour générer la matière.

Techniquement, le système d'items sera ouvert et permettra de facilement programmer le sien :

Une première classe Item avec un ensemble de propriétés (Name, Weigth, ImageID pour le nom le poids et le look de l'item) et d'événements (on_craft, on_double_click ou on_use, etc.).

Pour les items purement décoratif avec juste un nom, un poids, une image, la classe Stuff sera là pour cela.

Pour des objets devant interagir avec l'utilisateur, faudra écrire du code PHP dans un premeir temps dans le code de Zed, dans un seconds temps y aura une API pour pouvoir héberger l'objet à l'extérieur.

* * *

Pour les déplacements en vaisseau, là on est strictement dans le domaine de l'API (à l'exception de l'Hypership qui lui aussi voyage, lui se pilote depuis une salle ad hoc ou via une interface de commande que l'on peut obtenir dans la dite salle).

Tout vaisseau sera un programme indépendant, qui consommera la Ship API.
Le début est sur http://bitbucket.org/dereckson/zed/src/tip/api.php (pour l'instant l'authentification et le déplacement fonctionne, regarde vers la ligne 100).

Je publierai le code du Demios en C# sous forme de starter kit et je prépare un second vaisseau, le Zlurb sous forme de script TCL pour être utilisé depuis un eggdrop, un robot IRC.

L'idée est que Zed soit une collection d'objets, et pour les vaisseaux, de programmes indépendants signalant leur position et recevant les passagers clandestins ou requêtes officielles pour monter à bord via une API.

C'est un bon prétexte pour apprendre la programmation (tu veux ton propre vaisseau ? tu le codes ou reprends un code existant).

Les non programmeurs pourront utiliser divers vaisseaux laissés sur place, si ceux-ci autorisent quiconque à les piloter.

Au pis, si l'on est coincé sur une planète, on pourra envoyer une demande d'aide à l'HyperShip, qui sera diffusée à toute personne à bord + aux vaisseaux environnnants.

* * *

Pour l'écoulement du temps et le vieillissement, quelles sont tes suggestions ?
La connaissance s'accroît quand on la partage.
Répondre




Utilisateur(s) parcourant ce sujet : 2 visiteur(s)