Vous ne rêvez pas, on a perdu deux pourcents par rapport à la dernière fois. Mais on a bien développé de nouvelles fonctionnalités ! Je cherche encore à savoir quel alcool j'avais bu en faisant le compte de la progression en juin dernier.
Salutations, voyageur ! Nous fêtons en ce beau début d'automne la clôture du neuvième bloc de développement de Lampyre (merci de faire résonner votre meilleur PWWIIIIIIInnnn de souffleur de fête à l'intérieur de votre esprit).
Ce segment avait pour objectif de cimenter les mécaniques liées aux premières minutes du jeu. Je dois dire que c'est un objectif rempli de façon nuancée.
D'un côté, nous avons effectivement peaufiné la lisibilité et le fonctionnement des premières actions (découvrir l'autel et le déblayer, débloquer ses premiers menus, trouver sa première torche). De l'autre, je ne suis pas allée jusqu'à l’implémentation des prémices de l'expérience ou de l'amélioration de bâtiments, qui ne sont pas encore assez prioritaires dans notre boucle de jeu de base.
Mais au final, j'ai développé davantage de fonctionnalités qu'attendu, et j'ai refactorisé des points épineux de mon code qui faciliteront grandement la suite du développement.
Et puis, accessoirement, on est toujours là à vaillamment coder le jeu de nos rêves, et GODOT devient de plus en plus fabuleux à chaque mise à jour. Ce sont deux sacrés victoires à perpétuellement célébrer.
La note de patch
1) Et le linceul s'abattit sur Nestevar... Le voile d'ombre corrupteur qui entoure votre enclave et les contours de la carte n'est plus un vieux carré rectiligne tout moche, mais un cercle organique (encore un peu tout moche, mais les shaders viendront). Il est capable de s'étendre et de se rétracter au fil des tempêtes et d'envahir des zones ponctuelles. Ses formes de collision sont aussi dynamiques que son visuel et une brume qui envahit vos pieds commencera immédiatement à vous corrompre, et à interrompre la croissance des plantes.
2) Vos ennemis ont un nid douillet: pour gagner une partie, ce ne sont plus des autels de corruption mais des nichoirs d'ombre qu'il vous faudra détruire. Et bonne nouvelle: ils sont fonctionnels !
Chaque nichoir absorbe le sang ombreux ambiant qui afflue sur la carte. Il va incuber des ombrelgins et des chimères qui sortiront de leur cocon à intervalles réguliers pour errer dans la nature, et attaquer votre enclave à la nuit tombée.
À l'occasion des tempêtes d'ombres, l'afflux de sang sera tel qu'un grand nombre de créatures ombreuses afflueront le soir de l'orage, prêtes à déferler sur vos défenses. Pendant ces tempêtes peuvent se former des flèches d'ombres - une version miniature et éphémère des couvoirs qui grossira pendant plusieurs jours avant de libérer une puissante chimère - à moins que vous ne la brisiez avant...
Si vos ressources le permettent, attaquer un nichoir après un assaut d'ombre semblera être une bonne stratégie puisque ses réserves en défenseurs seront épuisées. Détruire un nichoir résorbe le linceul qui s'étend autour de lui, mais renforcera les autres restants sur la carte pour pimenter votre progression. Une fois le dernier bastion détruit, la partie est remportée !
3) Époustouflant d'originalité ton nom de monstre: les chimères sont implémentées dans leur forme la plus simple. Ces ombres supérieures sont moins nombreuses que les ombrelgins mais bien plus dangereuses. Il en existe cinq sous-types qui corseront vos combats de façon différente, chacun avec ses forces et ses faiblesses.
Mais surtout, les chimères ont des traits plus variables que les ombrelgins. Elles peuvent différer en taille et en dangerosité. Elles pourront recevoir des affixes spécifiques de leur couvoir ou de leur flèche. Bref, il faudra vous adapter en prévision de vos assauts et partir en éclaireur pour voir à quel genre d'ennemis vous allez avoir droit.
4) Le fameux grand nettoyage d'été: les codes de génération de carte, l'équipement des armes par les vyrrlins ainsi que toute la gestion des commandes contextuelles du joueur ont été relocalisées et/ou refactorisées dans un code dédié, pour faciliter leur fonctionnement et leur évolution future. On a aussi optimisé des comportements de navigation et de réaction à la lumière de la part des créatures.
5) Les traces de vos crimes: pour une raison obscure, il m'a soudain paru inacceptable que les corps des créatures disparaissent comme dans un dessin animé lorsqu'elles mouraient. On a donc désormais des cadavres fonctionnels dans Lampyre (...youhou ??).
Lorsqu'un être vivant meurt, son corps inanimé restera en place pendant une certaine période. Vous pourrez récupérer son inventaire et son équipement s'il en avait un (non, vous ne trouverez pas d'épées dans le ventre des loups, on est pas dans MMORPG ici) et surtout "récolter" sa carcasse. Ce qui est pertinent lorsqu'il s'agit d'un gibier, ou d'un prédateur consommant sa proie. Moins quand c'est votre voisin qui est mort de vieillesse.
Selon la force d'une créature, elle pourra porter ou trainer une carcasse derrière elle. Ce qui signifie que vous pouvez jeter un corps dans le feu de l'autel pour le détruire. Pas spécialement une bonne idée non plus en ce qui concerne vos villageois, mais hé, je donne les options - vous écrivez l'histoire.
6) Le game design pour les nuls: comme prévu, nous avons mis quelques éléments en place pour accueillir n'importe quel joueur en début de partie.
Après une très courte scène où votre personnage errant tombe sur un bulbe de liandre et le consomme pour se purifier, vous pourrez partir dans la verte, mais votre attention sera probablement attirée par l'arbre-liandre (oh, ça brille) et surtout par son autel délabré et sa flamme qui suffoque sous des débris (oh, ça brille encore plus !!). Après quelques secondes d'efforts pour en déblayer les ruines, le cœur de votre enclave et sa flamme éternelle sont vôtres. Les menus de construction et la vue générale commencent à se débloquer avec quelques patrons de structure seulement.
Votre première interaction avec des végétaux vous offrira le mode botaniste. Et plus tard, gagner votre premier allié débloquera le reste des fonctionnalités pour une introduction toute en douceur aux quelques menus de gestion.
Autre ajout d'intuitivité: il y a maintenant une ancienne ceinture de lanternes qui tient à peu près debout autour des ruines de cet autel. Les premiers ombrelgins de l'introduction vous font immédiatement comprendre que les ombres sont repoussées par la lumière: alors quoi de mieux qu'un mur de feu pour les éloigner la nuit ? Ce sera un rituel très important dans Lampyre, que vous pouvez commencer dès le début avec une vieille torche que vous retrouvez en déblayant votre autel.
Reste à rendre l'allumage et l'approvisionnement de ces lanternes fluide et satisfaisant - ne vous inquiétez pas, j'ai tout plein d'astuces en stock à coder pour cela. Laisser la veilleuse allumée sera quelque chose de plaisant (et nécessaire si vous ne voulez pas être réveillé toutes les nuits).
7) Progression douce des savoirs: pour ne pas noyer le joueur sous 50 plans de bâtiments lorsqu'il va déverrouiller son menu, les recettes sont divisées en trois tiers qui resteront anonymisés jusqu'à ce que vous ayez mis la main sur leur base constituante.
Le premier tier contient quelques recettes vitales, disponibles dès le début (première lanternes, un lit tout claqué, un établi à bois...). Dès vos première bûches d'arbres ou blocs de pierre raffinés, vous débloquerez le tier suivant, puis le dernier lors de l'acquisition plus tardive de métal ou de céramique.
Le menu de construction ne vous cache rien et même si les recettes sont obscurcies, vous savez exactement combien il vous en reste à débloquer. Lampyre a beau avoir un petit côté roguelite, les bâtiments n'ont aucun aspect procédural (pas dans leur construction en tout cas).
Les variations dans votre jeu concerneront bien plus l'amélioration de ces structures et dans quelle mesure vous les mettez à disposition de vos villageois. Et nul besoin d'un système de révélation complexe pour cela (oui oui, je me justifie de faire quelque chose de simple, laissez-moi débattre avec les voix dans ma tête).
8) Mon amie la torche: la port de torche a lui aussi subit une petite refonte. Originellement considérée comme une arme en part entière, j'ai décidé que son port était trop important pour chaque vyrrlin sans qu'ils ne doivent sacrifier un emplacement d'arme.
C'est donc maintenant un outil au même titre que la serre-faux. Lorsqu'elle est allumée, vous pouvez choisir de la mettre de côté en combat (ce qui l'obscurcit et enlève ses propriétés repoussantes, mais elle reste allumée et prête à être dégainée à nouveau), ou de la brandir avec une arme à une main par exemple.
Vous pourrez faire le même choix pour les membres de vos escouades d'un simple bouton à activer, pour vous assurer que l'un d'entre eux est toujours une source de lumière dans la nuit.
9) OMG LE STUFF: début d'implémentation des équipements aux vyrrlins. En plus des armes, les outils (serre-faux et torche) ainsi que les armures seront capitaux pour la protection de vos villageois et votre capacité à aller détruire les couvoirs.
Vous pouvez maintenant donc ramasser, et équiper ces éléments depuis un inventaire avec un double-clic. Oui c'est la base. Mais la base, dans GODOT, il faut la coder. Avec beaucoup d'amour.
Cela vous permet aussi de consommer les délicieux morceaux de liandre cru depuis votre sac.
Le commentaire du développeur en bois
Comme précisé plus haut, ce bloc était à la fois vraiment très concret mais aussi un peu déroutant.
Concret, car en améliorant les interactions contextuelles rendues disponibles au joueur, et les premiers instants passés dans une partie de Lampyre, on fait vraiment un pas de géant vers un jeu. La preuve en est qu'en commençant à déblayer l'autel, aller voir ses menus et aller allumer les torches proches au milieu des ormes et des buissons, je commence vraiment à voir se jouer Lampyre tel que je l'imagine. Et avec l'utilisation des objets du sac ou l'équipement d'outils, c'est encore mieux.
Déroutant, car vu qu'on est absolument dans la bonne voie, cela me fait aussi réaliser à quel point il est temps qu'on itère sur la forme la plus simple de la boucle de gameplay.
Depuis plus d'un an, on a mis en place les bases avec la carte, les végétaux, les déplacements, un combat rudimentaire. Ces pièces sont parfaitement nécessaires et leur état actuel me convient entièrement. Mais elles ne sont pas encore assez basales. On n'a pas encore devant les yeux la série d'action que vous allez répéter et qui fait le cœur du jeu - comme:
- prendre une quête et la valider contre une récompense et de l'expérience dans World of Warcraft.
- vous réveiller chaque matin et dépenser votre énergie pour produire des denrées et aller parler aux villageois dans Stardew Valley.
- observer le déroulé d'un combat dans Pokémon qui rendra vos bestioles plus fortes pour la suivante.
- nettoyer les traces de crimes d'une scène pour remplir une jauge de complétion jusqu'à 100% dans Crime Scene Cleaner.
- passer les articles d'un client à la caisse et restocker les rayons avec une boite de marchandises dans Tabletop games shop simulator.
Bon, on a techniquement notre écran de victoire. Mais avant d'avoir tabassé les trois couvoirs de la carte, vous allez devoir faire l'évident pendant un petit moment: survivre.
Et il faut que ça passe par une boucle de jeu extrêmement claire à sa base (alors, elle est très claire dans ma tête, mais vous savez ce que c'est la différence entre les projections mentales et un plan papier expliqué aux autres).
C'est par exemple pour cette raison que même si j'ai effectué tout le travail théorique sur les bâtiments à débloquer, leurs recettes ou les compétences de combat, je n'ai pas débuté l'implémentation du système d'expérience. C'est encore un poil précipité.
La suite
Déterminer les objectifs du segment suivant a donc été un choix délicat. J'ai un instant fait abstraction de toutes les fonctionnalités que je voulais développer, et je me suis dit:
"Si je voulais montrer le principe de Lampyre en dix minutes à quelqu'un, qu'est-ce qu'il doit se passer à l'écran ?"
Oui. Dans dix minutes de LAMPyre, il va y avoir des lampes. Ça, c'est garanti.
Ma première réaction à cette question, c'est de naïvement lister 90% des fonctionnalités du jeu final (aller, je laisse la teinture des vêtements sur le côté pour le POC, c'est cadeau). Mais heureusement, après intense réflexion (et par intense, j'entends fixer un mur blanc pendant une demi-heure jusqu'à ce que les mots me viennent), j'ai réussi à identifier les boucles les plus basiques et les plus critiques du jeu.
Voici les trois axes qui doivent encore être rendus disponibles et intuitifs pour justifier d'une expérience minimale:
Boucle personnelle basique
- Effets de base de manque de sommeil et de faim
- Régénération automatique des PV si état non critique
- Sommeil sur couche simple et passage accéléré du temps pendant le sommeil
- Feu de camp / foyer simple T0 et consommation directe des ingrédients naturels
- Ajustements pour la base du cycle jour/nuit (la nuit va tomber, les ombres se rapprochent de l'enclave et peuvent être repoussées avec les lanternes)
- Rapprochement plus automatique des ombres vers l'enclave pendant de la nuit
- Passage du temps x5 pour les créatures et les arbres (quatre saisons = cinq années de croissance)
- Visualisation claire de l'horaire de la journée pour mieux prévoir et ritualiser l'allumage des torches (aube / journée / crépuscule / nuit)
Boucle de fabrication
- Atelier commun simple avec la racine de fabrication pour tous les établis futurs (utilisable par les villageois)
- Interface ou système d'équipement d'autrui (écran personnel de chaque vyrrlin)
- Stockage organique des matériaux à disposition des établis concernés
Boucle de purification
- Apparition d'errants uniques (nom / genre / âge)
- Convertir un errant en villageois
- Satisfaire les deux besoins basiques d'un villageois (faim et sommeil)
- Affichage et alerte des états (écran personnel)
- Pouvoir leur demander d'assimiler du liandre pour se purifier
- Trop de corruption = retour au stade d'errant
- Emploi du temps basique
- Allumage de torches au crépuscule
- Fabrication cuisine
- Fabrication à l'atelier unique
- Récolte
- Peut nous accompagner au combat (déjà partiellement implémenté)
- Par ordre direct (déjà implémenté)
- Désignation basique des escouades
"Tu viens de lister plus de six mois de développement espèce d'escroc ! Et je croyais qu'on allait avoir droit à l'artisanat détaillé ! Remboursééééééés §§"
Je préfère me concentrer sur ces systèmes qui doivent être soigneusement établis avant de me projeter sur leur étoffement. Le cœur de Lampyre reste la gestion de vos villageois et nous n'avons que trop retardé la programmation de leur apparition et de leur comportement de base.
Il y a aura le temps pour les systèmes de confort, les compétences, les routines, les chaînes de fabrication et les relations sociales. Mais en attendant, offrir une paillasse et des fruits rôtis à vos semblables, c'est un excellent départ et ce sera la base inévitable pour tout le reste.
Parce que je me connais et je sais que je suis un peu débile ambitieuse, je préfère planifier trois segments successifs plutôt qu'un mastodonte interminable. Cela nous donnera trois occasions de faire la fête (et trois occasions de mettre à jour les objectifs si des inspirations me viennent en codant).
Nous commencerons donc tranquillement par la boucle personnelle, qui ne m'effraie pas trop. Viendront ensuite les rudiments de la boucle de fabrication (chiche en postulats mais potentiellement chronophage en raison de l'UI). Puis nous mordrons dans le cuissot du plat principal, les errants et les villageois (on va sauver notre première waifu, behold).
Les visuels du schnaps
Et voici la traditionnelle compilation des GIF de développement, que vous pouvez retrouver postés sur twitter par votre serviteur.
Le shader qui me permet d'afficher le linceul entourant la carte de jeu. À lui s'ajoutent des zones circulaires ponctuelles pour ajouter les périmètres de corruption autour des nichoirs d'ombre.
Les mouvements dynamiques du linceul sur la carte (mesh ET zone de collision). Les plantes débarrassées de son influence peuvent reprendre une croissance normale. Le linceul va naturellement s'étendre lors des tempêtes d'ombre, et se rétracter si les couvoirs sont détruits. Découvrant davantage de surface (et de ressources) sur la carte.
Un petit aperçu de l'activité autour des nichoirs, en accéléré. Les ombres ne peuvent pas quitter la pénombre du linceul en journée, et de toute façon, certaines de ces créatures resteront autour de leur nid pour la garder en toute heure.
Croissance des poches d'incubation contenant les ombrelgins et les chimères dans les couvoirs d'ombre. Le nichoir (qui est grossièrement un trou géant creusé dans la terre) absorbe le sang ombreux du sol pour faire naître vos ennemis.
Des flèches d'ombre ! Elles n'apparaissent généralement que lors des tempêtes. Des ombrelgins et une chimère grandissent à l'intérieur. Si elle n'est pas brisée dans les quelques jours d'incubation, vous pouvez vous retrouver avec un assaut plutôt dangereux à votre porte.
Quand j'ai codé les carcasses de créatures, j'ai tenté de mettre un peu d'interaction physique au passage de votre avatar. J'ai eu du mal à doser.
Fonctionnalité non prévue, mais implémentée avec succès: les créatures qui meurent laissent une carcasse qui finit par expirer. Vous pouvez les fouiller, les récolter, les porter ou les trainer selon votre force et le poids du corps.
Petite amélioration de la lisibilité de l'UI personnelle, avec l'ajout des barres de faim, sommeil et de l’icône de torche lorsqu'elle est équipée. Elle vous indique combien de combustible il reste dessus, et si vous la rangez automatiquement ou non en combat.
Déblaiement des débris de l'autel pour restaurer sa flamme, et débloquer ses premiers menus (construction, vue générale, déités). J'ai aussi implémenté des alertes générales rudimentaires (le message plein écran) et la sauvegarde de la progression de certaines interactions contextuelles (AKA si vous arrêtez de déblayer l'autel, vous ne reprendrez pas à zéro la fois suivante).
Déblocage des plans de construction à la récupération de matériaux inconnus. Il n'y a que trois tiers de découverte, donc un débloqué par défaut. Cela permettra de montrer au joueur qu'il reste des structures à débloquer, sans le perdre en début de partie.
J'ai amélioré l'écran de construction en séparant directement les structures selon leurs catégories (dans le GIF juste au dessus, vous pouvez voir qu'on utilisait des filtres optionnels).
Premier déblaiement de l'autel et comportement de la torche en combat. Avec un arc à deux mains, forcer le port de la torche avec X impose à mon personnage de la laisser brandie devant lui alors qu'un ennemi est proche. Sinon, elle est momentanément rangée à sa taille pour le laisser attaquer.
Le GIF final du segment, avec un aperçu de la ceinture initiale de lanternes en ruine ; leur jauge de combustible, leur réparation. Ainsi que l'utilisation d'objets dans l'inventaire (consommation de liandre, remplacement d'une torche équipée).
À très vite pour la suite du développement !













