山中YamanakaYamanaka

Trip to Yamanaka, group photo

のweb-siteで山中のバスツアーの写真が有ります。

There are photos of the bus tour in Yamanaka in the website.

Il y a des photos du tour en bus à Yamanaka sur le site d’Association d’Amitié Internationale de Tatsunokuchi.

この旅行10月でしました。川の側で短い散歩して温泉に入りました。写真は川の橋前に撮られました。マティアスはどこか?高解像度写真はギャラリーで有ります。

This small trip took place in October, we had a short walk on the side of the river and then went to the baths. The photograph was taken in front of a bridge over the river. Where is Matthias? High-resolution photographs are available in the gallery.

Ce petit voyage avait eu lieu en Octobre, nous avons faite une très courte balade le long de la rivière, pour ensuite nous rendre aux bains. La photo ci-contre, a été prise sur un pont sur la rivière en question. Où se trouve Matthias? Des photos haute-résolution sont accessibles dans la gallerie.

About XML, bundles and hard-links

Increasingly, file-formats are not defined on single files, but on set of files usually bound together using an XML digest. One typical example of such file format is the OpenDocument format supported by OpenOffice. While Open-Office uses a Zip archive to bundle together the different files, many programs on Mac OS X use the notion of Bundle. A bundle is technically a directory with a special bit set that tells the file explorer to treat the directory as a single file.

While such files are less compact that a zip archive, the have the advantage of having all the logical entities (files) living directly on the file-system. This means in particular that you can use file-system tools like hard-links. One typical use of this trick I use to fill in forms. Many forms are distributed as PDF files, but without using PDF’s form functionality. They are just a page description of the form. To fill them in clearly, I typically import the PDF as a background image into Omnigraffle, and then add the text for the different fields. I like to keep a copy of the filled-in form, but also the clean form. What I do is I keep the Omnigraffle document and create a hard-link to the PDF file embedded inside the bundle outside it. This way I have two files, a pdf document (the form), and an omnigraffle document (the filled-in form), but the disk space is only used once.

The resulting files look something like this. Notice that the PDF file has a link count of two. In this particular the saving is negligible, but some PDF are quite large.

Perm. Lks Owner Group Flags Size Modification Name
dr-x—— 5 wiesmann wiesmann uchg 170B Nov 16 16:36 Departure Form.graffle
-r——– 2 wiesmann wiesmann uchg 9K Nov 21 13:37 Departure Form.pdf

The content of the bundle is the following:

Perm. Lks Owner Group Flags Size Modification Name
-r——– 1 wiesmann wiesmann - 0B Nov 16 16:36 Icon
-r——– 1 wiesmann wiesmann - 49K Nov 16 16:36 data.plist
-r——– 2 wiesmann wiesmann - 23K Nov 16 16:36 image1.pdf

This trick can be used for all file-formats that rely on bundles, in particular Keynote files.

À propos des podcasts…

Même si je suis immergé dans la culture informatique, je ne suis pas du genre à me jeter sur la dernière nouveauté. De fait, je suis plutôt sceptique des nouvelles tendances. J’ai un blog, mais je m’y suis mis plutôt tard. Je joue à des jeux vidéos, mais ce ne sont de loin pas des nouveautés (ce qui fait qu’utiliser principalement un Mac n’est pas réellement un problème). Tout ça pour vous parler aujourd’hui des podcasts.

Les podcasts ne sont techniquement que des fichiers audio, généralement au format MP3, accessible sur le web et décrit par un fichier, typiquement du XML. Quand la plupart des gens parlent de podcasts, ils ne pensent pas tellement à ça, mais plutôt l’équivalent audio des blogs. L’avantage du format audio, c’est que le contenu du podcast peut-être transféré sur un baladeur numérique, par exemple un iPod, et écouté en déplacement. Beaucoup de choses ont été dites au sujet des podcast, allant du fait que c’est une simple lubie sans succès jusqu’à une révolution complète qui allait remplacer la radio. Je ne peux naturellement pas juger, mais je peux tout au moins parler de la manière dont j’utilise les podcasts.

Si je suis abonné à plusieurs podcasts, force m’est de constater qu’aucun n’est réellement l’équivalent audio d’un blog. Les blogs bien écrits, réguliers et intéressants sont rares. Un podcast devrait ajouter à ces qualités un bon enregistrement et une voix agréable. Je n’ai jamais trouvé quoi que ce soit de tel. J’ai bien essayé quelques podcasts techniques, mais ils ont tendance à essayer de faire plus humain, ce qui fait qu’au lieu de parler de sujet pointus, on se retrouve avec des dicussion sur la vie des programmeurs. Je ne trouve pas ça très intéressant. De fait, les podcasts que j’écoute entre dans deux catégories: les émissions de radio transformées au format podcast et les podcasts musicaux.

La première catégorie est évidente, certaines stations radio mettent à disposition certaines émissions sous forme de podcast. C’est le cas par exemple de la radio suisse qui met a disposition une partie de ses programmes, j’aime bien le son du jour et j’écoute irrégulièrement le micro-sillon. Une autre émission que j’écoute en podcast (la première, en fait), est la revue de cinéma de , qui présente de manière irrévérencieuse, mais souvent judicieuse les films de la semaine.

La seconde catégorie comporte typiquement des programmes musicaux qui présentent des artistes nouveaux ou des soirées. Dans cette catégorie, je recommande ainsi que Chai Shop, pour de bon programmes de musique electronique et de goa/trance respectivement.

De fait, mon principal regret, c’est que le format n’est pas encore très répandu. Par exemple, ce serait très agréable si les fichiers des ou du était accessibles en podcast. Cela m’éviterais de devoir visiter ces sites régulièrement pour voir s’il y a un nouvel épisode (à propos, il y a un nouvel épisode).

Le feuilleton des ours…

Lors de mon voyage au Japon, de nombreuses choses ont été différentes de ce que j’attendais. Une de ces choses était la structure de la campagne. En Suisse, il y a toute une gradation entre la zone cultivée et la forêt profonde pour peu qu’une telle chose existe réellement. Ici la transition est brutale, il y a les rizières, qui sont des structures complètement artificielles et qui modifient fondamentalement le paysage, et la forête, avec des animaux sauvages comme des ou des singes.

Les ours sont ici un gros problème. En automne, affamés, ils viennent près des habitations chercher à manger. S’ils ne s’attaque pas aux humains, ils ont la réputation d’être facilement surpris et effarouchés et dès lors agressifs. Surtout dans la cas d’une mère avec ses petits. Durant tout l’été, nous avons dons reçu des mails régulier que les ours étaient vu par-ci par-là, y compris sur le parking de l’université ou derrière le petit restaurant à proximité. Régulièrement la police débarque et plus rarement réussit à faire quelque chose. Les instructions officielles dans ce cas là sont de se claquemurer et d’appeller la police si on voit quelque chose de suspect.

Sans tenter le diable, je n’en ai pas moins renoncé à mes promenades, surtout par beau temps. De fait la plupart des randonneurs ici se déplacent avec des clochettes afin d’alerter les ours. J’ai toujours pensé que le risque était modéré, vu que ou que j’aille, je croisait régulièrement des petites vieilles japonaises en train de chercher quelques herbes de montagne. Hier, aux nouvelles, j’ai appris que l’une d’elle s’est fait blesser par un ours qui semble-t-il mangeait des khakis. Je n’ai pas compris comment ça s’est passé exactement, mais cela a naturellement relancé les mails d’avertissements des autorités.

En attendant, je vais demain avec un étudiant aller manger de la viande d’ours, je me réjouis…

Comment écrire un scénario de jeu de rôle

🜟

Si je ne suis plus impliqué dans la création de jeu de rôles que de manière périphérique, il m’arrive encore souvent de devoir relire des textes, notamment des scénarios. À la longue, j’ai remarqué certains problèmes récurrent dans la manière dont les scénarios sont écrits. Ce ne sont pas des problèmes de scénario per se, mais plutôt dans la manière dont il sont expliqués. Les dix six commandements qui suivent ne sont pas le gage d’un bon scénario, ou d’une belle écriture, mais tout au moins d’un scénario lisible. Naturellement, chacun de ces points mériterait une entrée de blog pour lui seul, ceci n’est qu’une vue générale de la question.

Ton public tu comprendras

Un scénario de jeu de rôle est un texte destiné à un maître de jeu (MJ). Ça peut sembler une évidence, mais souvent l’écriture suit le déroulement du scénario, qui est la narration destinée au joueurs. Hors les attentes du MJ et des joueurs sont très différentes : le MJ désire comprendre le scénario dans son ensemble, une vision synthétique, alors que les joueurs attendent une histoire, une narration. Le rôle de l’auteur de scénario est de communiquer un scénario de la manière la plus claire possible à un MJ, qui en ferra une histoire pour les joueurs.
Il est donc important de garder à l’esprit durant la rédaction qui lire le texte, et avec quelles attentes.

Par une introduction, tu commenceras

Tout scénario devrait commencer par un ou plusieurs paragraphes qui présente le dit scénario. Le but de l’exercice est de donner un lecteur une idée générale du scénario. Il n’est pas nécessaire ou même désirable de tout décrire, mais en ayant lu cette partie, le MJ potentiel devrait connaître les informations suivantes :

  • Le genre de scénario : enquête, bagare généralisée, huis-clos, dongeon, etc.
  • Quels genre de protagonistes il implique, i.e. le genre de personnages joueurs (PJs): aventuriers, policiers, criminels, etc.
  • Les antagonistes, i.e à qui auront à faire les PJs, pas besoin de détailler chaque frappe, mais donner les grosses lignes, i.e. la coporation machin, un dragon, un vampire.
  • Les effets potentiels sur les PJs. Pas la peine de dire que dans un scénario d’aventure dans un temple maudit dans la jungle, les PJs pourraient mourir dans un piège. Par contre il convient de noter si les PJs peuvent potentiellement acquérir des pouvoirs, des contacts ou des artefacts puissants, bref si le scénario peut sérieusement affecter une campagne de jeu.

Une structure, au texte tu donneras

Un scénario de jeu de rôle n’est pas un roman policier, qu’on ne lit qu’une seule fois, depuis le début jusqu’à la fin. Le texte sera lu, annoté, relu partiellement et consulté. Il est rare de mettre des marques page colorés dans un roman, c’est assez naturel dans un scénario de jeu de rôle. Comme le but du texte est d’expliquer de manière claire quelque chose de complexe et potentiellement changeant (le déroulement d’un scénario est rarement linéaire), la structure est quelque chose de très important. Du fait que le texte sera lu plusieurs fois de manière différente, trouvé la structure idéale est quelque chose de très difficile, mais il n’en reste que les informations doivent absolument être structurée. Cela veut dire que si une section est consacré à un personnage important, toutes les informations le concernant doivent se trouver dans la dite section. Si trop de redite est nuisible, certaines informations importantes peuvent être répétées aux différents endroits ou le MJ-lecteur pourrait les chercher. Par exemple, le fait qu’un personnage important fait partie d’un culte secret peut être mentionné dans la section consacrée au personnage ainsi que dans la description du culte.

Toutes informations utiles, tu offriras

Le but d’un scénario est de simplifier la vie d’un MJ, de lui donner un scénario qui puisse être raisonnablement rapidement utilisé. Le MJ est naturellement libre de broder, de compléter ou d’improviser, mais il ne devrait pas être obligé de le faire. Cela veut dire que le scénario devrait offrir des informations raisonnables sur les personnages et les lieux importants d’un scénario. Pour un personnage, cela veut dire, nom, prénom, âge, profession et lieu de résidence, ainsi qu’une courte description.

Du style, tu te méfieras

Un scénario de jeu de rôle ne devrait pas avoir comme but premier d’être une œuvre littéraire. La qualité d’un scénario se mesure en premier par la qualité de la partie de jeu de rôle qui en découle. Pour la personne qui écrit le scénario, c’est une situation quelque peu frustrante, vu que tous ses efforts seront déformées et adaptés par un intermédiaire : le MJ. Un scénario dans un univers japonais écrit complètement en haikus n’est pas d’une grande utilité si cette écriture embrouille le MJ et résulte en un scénario médiocre. C’est dommage, mais C’est Comme Ça (la règle des 3C).

Cela ne veut pas dire qu’il faille à tout pris éviter les effets de style. Le but n’est pas de rendre la lecture aride pour le MJ : un scénario agréable à lire est un scénario qu’on a envie de faire jouer. Simplement le style est un moyen subtil de donner le ton et l’ambiance, pas un marteau pour écraser le contenu. En fin de compte, c’est comme le maquillage, l’effet est d’autant plus grand qu’il est subtil, appliqué à la truelle, le résultat est rarement positif.

Les secrets, tu expliciteras

Chaque univers de jeu de rôle contient ses secrets. Il peut s’agir d’aspect fondamentaux de l’univers ou le fait que le grand méchant est en fait une femme. Si ces secrets sont une facette inévitable d’un jeu de rôle, c’est aussi une source de confusion. Le contrat de base entre l’auteur et le lecteur-MJ est une relation de confiance. Le MJ attend que le scénario soit cohérent avec l’univers et se déroule autant que possible comme décrit dans le texte. Ce n’est pas toujours le cas, bien sûr : après tout le jeu de rôle est quelque chose de dynamique et interactif. Mais c’est une chose pour un MJ d’avoir un scénario qui déraille car les joueurs ont des idées saugrenues, c’en est une autre d’avoir des éléments cachés dans le scénario. Ces éléments cachés peuvent être des allusions, des symboles qui échappent au MJ, mais qui sont perçus par les joueurs qui se retrouvent à en savoir plus que le MJ, ce qui n’est en général pas une bonne situation.

Les instructions de sécurité en tant que danse…

Les instructions de sécurité dans les avions sont quelque chose auquel les gens qui volent souvent ont pris l’habitude. J’ai toujours trouvé ces explications largement abstraites – autant que je sache, aucun avion n’a fait un atterissage d’urgence sur l’eau qui ait impliqué gilets et radeaux de secours dans les dix dernières années. L’évolution logique de ces explications est devenir un rituel abstrait, dont le sens échappe au commun des mortels, un peu comme le . Visiblement, je ne suis pas le seul à avoir eu cette idée, ce blog contient une série de dessins magnifiques illustrant les instructions de sécurité comme une danse.

Les odeurs de l’hiver…

Maison Japonaise en Bois à Kanazawa

Je suis venu la première fois au Japon durant le mois de Novembre, de ce fait, les odeurs que j’associe le plus à ce pays sont celles de cette saison. Dans les endroits ou l’on trouve encore de vieilles maison, c’est un mélange de vieux bois légèrement humide, d’encens et du kérosène utilisé pour les réchauds. À Tsurugi, ce mélange à cela l’odeur du bois de Sugi des scieries. Cela me rappelle toujours l’odeur de l’appartement de ma grand-mère, qui était située au dessus d’un atelier de menuiserie. Nous passions souvent les vacances chez elle, mon frère et moi, lorsque nous étions gamins…

お祝いCelebrationCélébration

少林寺拳法の試験できたので先生たちとお祝いしました。 辰口の一八で飲みに行きました。拳法のクラブのブログで写真が有ります

After suceeding the shōlinji kempō exam, we celebrated with the teachers. We went to have a drink to Tatsunokuchi’s ipacchi. There are photos on the blog of the kempō club.

Après avoir passé l’examen de shōlinji kempō, nous avons célébré l’évènement avec les enseignants. Nous somme aller boire un verre chez Ipachi, à Tatsunokuchi. Le blog du club de kempō contient des photos.

Recursive atoi

One site I visit often is the , a web site discussing really bad programming (as seen in real everyday life). Today’s thread is about a bad implementation of the string to interger function atoi. A friend of mine dared me to do a recursive implementation of atoi. Doing this would be very stupid and innefficient, so it is really an exercice in futility. Of course I could not resist. So here it is, this is not nice code, simply something I whipped out to show it is possible.

long ratoi(const char* string) {
    if (NULL!=string) {
	const char c = *string ; 
	const char *tail = ++string ; 
	if ('-' == c) {
	    return -1 * ratoi(tail) ; 
	} else if (('+' == c) || isspace(c)) {
	    return ratoi(tail); 
	} else if (isdigit(c)) {
	    long value = c - '0' ; 
	    if (isdigit(*(tail))) { // rest of string is number 
		const long recurse = ratoi(tail) ; 
		const int digits = (int) log10((double) recurse) ; 
		// we shift to match the tail's result
		for(int i=0;i<digits+1;i++) {  
		    value*=10 ; 
		} // for 
		return value + recurse ; 
	    } else { 
		return value ; 
	    } 
	} // isdigit
    } // not null 
    return 0 ; 
} // ratoi