Compte-rendu de la réunion du club du jeudi 4 décembre
2003
Présentation
Cette réunion a eu lieu de 20h05 (happy hour ratée, quel malheur)
à 23h30 environ, à la brasserie "La Tour" à Montparnasse.
Etaient présents (ordre alphabétique) :
Auteur du compte-rendu : Olivier (wondersye).
Le compte-rendu de cette réunion est parcellaire, et fondé sur mes
souvenirs et mes notes, également imparfaits. Pour toute remarque,
correction, ajout,
envoyez un mail ! En écrivant ce CR, quelques idées
supplémentaires me sont venues que j'ai directement placées
ici
Minutes de la réunion
Coincé entre un mordu de développement et un fondu de scénario, je
réussis à tirer mon épingle du jeu en leur faisant croire à chacun
que je partageais leur passion coupable.
Scénario
Arnaud pense lui aussi qu'il est temps d'ouvrir le travail
sur les personnages principaux. Cela consisterait à faire une liste
(non limitative, juste pour proposer des pistes) d'une dizaine de
personnages que l'on pourrait développer. Ceux qui voudraient en
choisiraient quelques uns, posteraient le résultat de leurs
cogitations sur les forums jusqu'à atteindre un certain degré de
précision qui permettrait d'en placer les descriptions sur le
site.
Le bestiaire
[Consulter notre section monstres (elle est plus à jour)]
Nous eûmes quelques idées concernant les monstres (plus
généralement, les PNJ potentiellement hostiles) qui pourraient
figurer dans notre jeu. Inutile de dire que cette phase de la
conception est une des plus rigolotes. On pourrait considérer que
l'important serait moins de les réussir graphiquement que de les
doter chacun de spécificités comportementales qui leur seraient
propres. Ainsi, alors que dans la plupart des jeux un monstre est
d'abord caractérisé par son apparence et son potentiel de combat,
là on pourrait poser le principe que l'IA de la plupart de nos
monstres (voire tous) soit particulière à chaque espèce. Deux
facteurs permettraient de ne pas rendre les développements trop
importants :
- on disposerait de nos propres primitives, qui seraient déjà de
relativement haut niveau, afin de les utiliser comme briques
élémentaires pour écrire les algorithmes comportementaux de chaque
espèce. Ainsi, des opérations de base disponibles pour décrire les
IA seraient par exemple "se rendre à telle destination",
"poursuivre telle cible", "chercher tel objet"
ou "combatter telle cible", etc. Cela rendrait
l'écriture de comportements un peu évolués considérablement
plus simple, sachant de plus que de telles primitives, dans tous
les cas, nous seront nécessaires
- cette intelligence comportementale des créatures serait
exprimée dans le langage de script embarqué que l'on aura
choisi, ce qui facilitera énormément et son écriture, et sa mise au
point
Il serait souhaitable de créer des légendes autour de chaque
créature, de manière à renforcer l'aspect jeu de rôle et
l'attachement que chacune pourrait susciter chez le joueur.
Des formes de factions pourraient être implémentées, comme dans
DAOC (Dark Age Of Camelot), où un personnage, du fait de ses
interactions passées avec les membres d'une espèce, hérite
d'une sorte de réputation vis-à-vis d'elle, ce qui
conditionne en retour le comportement des nouveaux individus
qu'il serait amené à rencontrer : après avoir considéré les
Changelins mineurs comme des punching-balls, le héros qui tombe sur
un Changelin pas mineur passe de rudes moments.
Les PNJ/monstres auxquels nous avons pensé
- les PNJ (classe générique) : à la manière de
la souris de la bande-dessinée Léonard, le PNJ vaquerait
frénétiquement à des occupations sans rapport avec l'histoire,
et sans qu'il ait la moindre utilité. Il formerait une partie
dynamique du décor, et pourrait être de plusieurs types selon son
activité (bûcheron, prostituée, certains, comme les gardes, les
marchands, les voleurs ayant eux déjà plus d'interaction
potentielle avec le joueur). Tous seraient amenés à se défendre ou
à fuir en cas d'agression, selon leur estimation de leur
probabilité de victoire, et avec leur arme caractéristique (ex : le
sac à (deux) main(s) avec un bonus +3 aux coups assommants en fin
de soirée car les pièces de l'époque étaient pesantes).
- le supplicateur : le monstre entame très tôt
un travail de sape psychologique auprès du joueur, dans le but
qu'il l'épargne, en le suppliant et en faisant appel à ses
bons sentiments et à sa prudence. Si le joueur épargne le premier
qu'il croisera, les suivants seront amenés à le lui rappeler et
à faire valoir cet argument supplémentaire en faveur de leur
survie.
- l'amorce : ce monstre part en courant
dresser les autres contre le joueur. A tuer très rapidement avant
qu'il rameute la moitié des gros calibres du voisinage. Bien
sûr, cours vite et convainc rapidement.
- la malédiction ambulante : pas forcément fort,
il mourra probablement si on lui donne l'assaut, mais il ne
partira pas sans affliger le joueur de tares plus ou moins gênantes
(ivresse chronique, daltonisme, puanteur soufrée, etc. [faire la
liste des malédictions, on pourrait s'inspirer des limitations
d'INS, In Nomine Satanis]).
- le chimiste : son sang acide endommage les
armes, a une fâcheuse tendance à exploser quand certaines de ses
fioles se brisent sous les coups ou, pire, sous l'impact de
dégâts de feu.
- la Gorgone : apprécie particulièrement de
pétrifier ses ennemis
- le lycanthrope revisité : cette variante, à
réinventer, du loup-garou transmet au joueur son état atypique (et,
éventuellement, s'en débarasse par la même occasion, variante
appelée "la patate chaude"). Le joueur se retrouve obligé
de cacher sa condition et se voit doté de nouvelles capacités et
limitations. Cette métamorphose peut induire un changement des
objectifs qu'il s'assigne (un peu, pour ceux qui
connaissent, comme les amoureux dans le jeu des loups-garous et des
villageois).
- le bon père de famille (variante du
supplicateur) : cette créature, qui ne semble pas directement
menaçante (son apparence presque engageante est importante), est
accompagnée de sa progéniture (entre une et quatre répliques de
lui-même, avec un facteur d'homothétie entre 1/4 et 1/2). Il
oblige le joueur à faire face au dilemme de tous les épargner ou de
les supprimer, lui et sa marmaille. Comment se résoudre à éliminer
toute une petite famille, ou à laisser des orphelins sur le carreau
? D'un autre côté, même les pires monstres se reproduisent, et
comment faire confiance, dans un monde de brutes ?
- le monstre voleur (avec moins de duplicité que
le PNJ de même occupation) : en clin d'oeil à Dongeon Master,
il se ruerait sur le joueur en poussant un cri assez
reconnaissable, le délesterait d'un objet important (par
exemple, son arme) et repartirait en courant. Bien sûr, quand on le
cherche, il est presque introuvable.
- l'impénient bavard : ne constitue pas un
réel danger, à la manière de celui de Baldur's Gate il se
contente simplement d'agacer le joueur en le sollicitant pour
le dialogue en permanence, et en toute inutilité. Ses ébauches de
dialogues peuvent être particulièrement réjouissantes à écrire. Une
variante, le bavard agressif, s'échine à provoquer le joueur
(taunting, d'autant plus que le joueur a adopté une
attitude agressive) par des interjections de type "p'tite
b*te". Si le joueur se laisse aller à une saine tentative de
monstricide, il pourra, en fonction de son attitude, souffrir de
malus d'énervement pouvant aller jusqu'à provoquer
l'accident bête (maladresse).
- le dauphin : appelé ainsi car tout son jeu
concourt à faire flipper le joueur. Il le prend en filature,
restant plus ou moins discrétement en contact visuel permanent avec
l'avatar, laissé au centre d'une couronne (asservissement
du monstre entre une distance minimum et une maximum). Doté
d'une bonne capacité de furtivité et de discrétion, bien que
gâchée en partie par un petit bruit qu'il module régulièrement,
pas mauvais en assassinat silencieux, il s'appliquera à fuir
quand le joueur voudra provoquer la confrontation. Pour mieux
revenir ensuite.
- le fou (très) dangeureux : à l'image
d'un monstre d'un jeu d'action dont le nom
m'échappe qui commence dans un asile, il reste hilare mais
silencieux dans son coin jusqu'à ce que le joueur, par sa
présence, le tire des séquences-fiction (à la K. Dick) qu'il se
passe en boucle et qu'il trouve amusantes. Alors, il se
précipite sur le joueur d'un rire qui enfle jusqu'à devenir
tonitruant et malsainement, complètement fou. S'il arrive au
contact, il explose : il n'aime pas partir seul dans le paradis
des rigolos. Une mini-variante : le pyromane, qui s'immole par
le feu avant d'offrir l'accolade fraternelle à
l'avatar.
- le caméléon des donjons : il se fond dans le
décor en fin connaisseur des lieux.
- l'esseulé des charniers : sous ce nom
horrifique se cache un squelette, un des monstres les plus
attachants que le joueur sera amené à rencontrer (avec
l'impénitent bavard, pour des raisons différentes). Le
squelette proposera une petite sous-quête au joueur : venger ses
copains dont les os ont été bouffés par un chien, en lui ramenant
le quadrupède espiègle en question. Cela pourrait éventuellement
donner lieu à une séquence rafraîssante à la Mario sur Nintendo 64,
où l'avatar doit capturer un lapin sauteur dans un réseau de
tunnels inondés.
- le prêcheur du marais : à la manière de la
caricature des témoins de Jéhovah, il attend ses victimes dans les
endroits passants (pas d'aéroport comme dans Zac Mac Kraken !)
pour leur expliquer, avec moultes preuves édifiantes, qu'il
existe un monde meilleur, et qu'il va vous y emmener. Peut-être
un peu plus à craindre que le bavard impénitent.
- le négociateur-rançonneur : vous le choisissez
pour une prestation (de type franchissement d'une rivière sur
son bac) et découvrez que les négociations tarifaires n'étaient
pas achevées sur la terre ferme, et qu'à mesure qu'elle
s'éloigne (quoique la berge opposée se rapproche), elles se
font en des termes de plus en plus défavorables. Seulement voilà,
le bonhomme est diablement irremplaçable et il semble le
savoir.
- l'ouvreur : ce n'est pas un boucher
assassin, juste une monstre clin-d'oeil (Bloodwich) qui trouve
un salut précaire en fermant la porte derrière laquelle il
s'est réfugié à chaque fois que le joueur l'ouvre pour le
trucider. Certaines portes sont de mauvais paris puisque des armes
les traversent.
- l'hypocondriaque patenté : ce monstre
sympathique simule la blessure grave ou la mort pour mieux tromper
la vigilance du joueur.
- l'assaisonneur à la hallebarde (car
parfois, il en pleut !) : doué de l'infravision, il repère ses
victimes dans les recoins obscurs des donjons, et, tel le lama
d'humeur vacillante, arrose le porteur de torche pour avoir
tout le temps, dans l'obscurité traîtresse ainsi créée, de
l'assaisonner à coups de hallebarde.
- la pieuvre qui se cherchait des amis : ce
céphalopode facétieux laisse traîner des tentacules sur la terre
ferme, autour des trous d'eau qu'il affectionne, dans
l'espoir qu'un étourdi se fasse prendre, attirer dans
l'eau, et promptement noyer avant d'avoir pu comprendre ce
qui lui arrive.
- le Jawah-surprise : cet autre monstre
clin-d'oeil, cette fois-ci à Dungeon Master, prend une forme
proche des Jawah de Starwars (de petits êtres engloutis dans une
robe de bure, dont on ne voit que les yeux). Silencieux et
solitaire, presque capable de téléportation, il a une sacrée
tendance à se retrouver dans le dos du joueur. Dans ce cas, il
commence à incanter entre ses bras tendus à la verticale un éclair
d'énergie, qu'il convient d'interrompre brutalement
sous peine de se voir bien sonné, voire plus. Le poursuivre est
déconcertant car rapidement on en perd la trace. On s'arrête
pour réfléchir à l'endroit où il a bien pu disparaître, un
sixième sens nous avertit, on fait volte-face, en général trop tard
pour éviter le rayon qu'il préparait dans notre dos.
- le dealer de bufs : cet être peu
recommandable, généralement rencontré dans les zones peu sures,
offrira grâcieusement au joueur un dose de buf, qui augmentera
temporairement assez sensiblement certaines caractéristiques de
l'avatar (ex : classe d'armure, bubulle, rapidité de
récupération, célérité, etc.). Le joueur s'applique alors à
bénéficier de ces bonus en exterminant des monstres au-dessus de
ses moyens. Mais assez rapidement les effets de la dose
s'estompent et le joueur se retrouve en zone de conflit avec
des facultés diminuées par rapport aux conditions nominales, ce qui
rend sa survie intenable dans le guêpier dans lequel il s'est
fourré. Seule solution : prendre une nouvelle dose, d'autant
plus que les effets de manque peuvent se faire jour (ex :
déformation des perspectives, application d'un filtre de flou
anisotrope, etc.). Et voilà notre joueur devenu accro aux bufs
durs, subissant éventuellement les effets d'accoutumance (les
doses successives ont de moins en moins d'effet), transformé en
adepte de monster-bashing pour se procurer sa dose journalière,
alors que vraisemblablement ce n'est ni sa vocation première
(vous vous souvenez ? Il partait en croisade pour la Vraie Foi,
quelle déchéance) ni son domaine d'excellence. Bien sûr, le
dealer de bufs a des copains très (trop) costauds. Une possibilité
de rémission : faire une cure de désintoxication, assez périlleuse
(on est vulnérable) si déjà on arrive à fuir assez loin sans trop
de casse. Une autre voie de sortie : une sous-quête conduisant à
s'attirer les bonnes grâces du dieu scandinave qui va bien
(lequel ?), qui le délivrera du mal. Un avenir professionnel :
développer lui-même la compétence dealer de bufs pour recruter sa
petite armée de sous-fifres.
- la fausse bonne affaire : deux monstres à
l'apparence très voisine disposent de facultés de nuisance très
différentes. Quand on en croise un, dur de savoir si on a affaire à
la version lavette ou à la version king size. En rapport avec les
factions.
- le Doppelgänger parfait : ce monstre assez
agressif prend l'apparence et les capacités des créatures de
son voisinage qu'il est amené à apercevoir, voire de
l'avatar, ce qui, en cas de combat, donne un pronostic très
réservé pour le joueur (pile ou face, ce n'est satisfaisant
pour personne). Comme le monstre ne contrôle pas nécessairement le
processus, un moyen de résoudre le problème serait de capturer des
rongeurs (vous voyez ceux auxquels je pense), de les lâcher près du
Doppel, de les éclairer. Sa métamorphose réflexe en ragondin
illuminé lui serait alors fatale.
Pour tous ces monstres, il existe une tâche identifiée :
répertorier tous les graphismes de créatures disponibles en vue de
l'établissement d'une correspondance entre un profil et un
graphisme, modulo une adaptation dans certains cas dudit profil.
Le roi et les Dieux
L'idée que le roi croit sincèrement aux "vrais"
dieux (ceux de la mythologie scandinave) mais affiche sa dévotion
pour ceux de la Sainte Foi (ou Vraie Foi, comment l'a-t-on
appelée ?), en vue de remporter l'adhésion de la caste des brutes
sanguinaires chantant "Te Deum" semble intéressante,
surtout si on fait en sorte que les mythes scandinaves restent
centraux dans notre jeu et si la Vraie Foi n'est pas trop
directement assimilable par exemple avec le catholicisme ou une autre
religion "mainstream", pour éviter de froisser qui que ce
soit.
Le ralliement des brutes enreligionnées serait conditionné par la
réussite de la quête consistant à libérer des glaces (symbolisant les
mythes nordiques) une fée convertie à la Sainte Foi qui se révèlerait
passablement dérangée. Notre jeu pourrait alors être interprété comme
brodant sur le thème du moment de la métamorphose historique des
mythes païens en les religions aujourd'hui établies, ou bien
comme explorant l'uchronie résultant de l'éventuel triomphe
des premiers sur les secondes.
Technique
Sébastien nous a montré un livre particulièrement intéressant
intitulé Programming Linux Games, qui a été l'occasion
idéale pour ouvrir notre section bibliographie.
A lire d'urgence !
Construire notre bibliothèque graphique
Initialisation
Le module vidéo générique pourrait avoir, entre autres, comme
tâche d'initialiser SDL en permettant de confronter les
caractéristiques graphiques réellement obtenues à celles demandées. A
voir la liste de discussion SDL, ce n'est pas toujours évident,
notamment pour savoir si l'accélération est réellement matérielle
(cas difficile à obtenir).
Boucle principale
C'est la portion de code de notre jeu qui sera la plus souvent
exécutée (d'où l'importance de l'optimiser) et qui sera,
en ordonnançant la succession des cycles de mise à jour, le chef
d'orchestre pour toutes les sous-tâches du jeu, au nombre
desquelles figurent :
-
récupération des événements :
- lecture des périphériques d'entrée (clavier, souris,
joysticks, etc.)
- réception des événements réseau (dans le cas où il y en a
!)
- prise en compte des événements générés en interne (ex :
conditionnés par le temps, genre : à midi les cloches
sonnent)
- simulation du monde : chacune des entités
dotées d'un état voire d'un comportement (des monstres à la
couleur du ciel et au joueur) voit son état mis à jour en fonction
des événements qui l'affectent (i.e. auxquels, d'une
manière ou d'une autre elle est abonnée), qui sont autant
d'arguments fournis à son algorithme de comportement (IA) pour
déterminer son état lors du prochain cycle de jeu
- rendu : le moteur prend le point de vue
courant pour représenter le monde ainsi mis à jour
Cet ordre est plus ou moins celui suggéré par Programming
Linux Games, qu'il faudra lire avec attention sur ce sujet
critique.
Il y aurait beaucoup de choses à dire sur cette boucle (j'ai
tout à apprendre sur le sujet, faute d'en avoir écrit une seule),
mais on pourrait penser que son objectif est de mener à bien
équitablement toutes les étapes du cycle dans un temps imparti, en
respectant l'importance de chacune. Cela voudrait dire entre
autres que le travail de rendu (au hasard) ne devrait jamais prendre
trop de temps, de peur soit de retarder le prochain cycle (le jeu
rame visiblement, devient saccadé et n'est plus réactif) soit de
contraindre les autres à être amputées (ex : les monstres deviennent
frappés de stupidité dès lors que le joueur se tourne vers une vue
dégagée). De cet impératif (le bon arbitrage des ressources allouées
à chaque étape du cycle), on pourrait déduire deux caractéristiques
intéressantes à observer :
- idéalement, chaque étape serait interruptible à tout moment
(temps imparti écoulé) ou plutôt en un temps maîtrisé, ce qui
impliquerait de procéder par raffinements successifs (on commence
par l'essentiel, on regarde si on a encore un peu de temps, si
oui on continue par ce qui reste le plus important restant, on
regarde si on a encore un peu de temps, etc.). La granularité des
étapes de raffinement est alors cruciale et résulterait d'un
savant dosage, et concernerait aussi bien l'IA que le rendu,
pour citer les deux causes d'explosion de délai les plus
courantes.
- un traitement multi-tâche des étapes du cycle pourrait aider à
garder un contrôle fin de l'arbitrage du temps alloué, et de
pallier des appels bloquants (attente d'informations,
primitives graphiques réalisées par la carte vidéo, etc.)
Tout cela permettrait de donner l'illusion du temps réel et
une boucle bien architecturée devrait induire des développements plus
faciles.
Enfin, un point sur la transparence a été fait par Sébastien, qui
personnellement m'a appris beaucoup, et que j'ai donc résumé
dans notre section documentation.
AOB
On pourrait éventuellement placer un miroir dans le jeu, de
manière à ce que le joueur découvre l'apparence de l'avatar.
Utile pour le test du gros bill (à la Duke Nuke'em) et pour le
Doppel.
Penser à un monstre clin d'oeil à Nethack ?
Il faudra renforcer le nombre de monstres 100% originaux que
l'on pourrait engendrer.
Des listes sont à créer : malédictions, limitations, altération de
la conscience (alcool, drogue, etc.) et ses effets (fenêtre réduite,
flous, effets de palette, hallucinations, voiles noirs, etc.)
Fin du compte-rendu de cette réunion en petit comité qui fut donc
relativement dense !
N'hésitez pas à nous faire part de votre avis !
Pour toute remarque,
envoyez-nous un mail!
Top
Dernière mise à jour : 7 Décembre 2003