13 févr. 2025

Game dev #06-BIS: faire pousser des PLONTES.

Salutations, voyageurs !
 

    ME REVOILÀ DÉJÀ après presque deux semaines à me reposer mettre frénétiquement à plat toutes les mécaniques de jeu de Lampyre. Entre cette "pause" théorique et la préparation de l'anniversaire du projet, je dois admettre que l’exercice est plutôt étrange. Je garde mes monologues émotionnels pour début avril, mais sachez qu'en somme, je ne suis plus simplement en train de bidouiller un programme pour un plaisir. Je veux le sang d'un jeu terminé, et cela signifie qu'on va encore davantage mettre l'accent sur des fonctionnalités qui se veulent finales (utilisables, là tout de suite, comme dans la future version 1.0).

Le game design n'est pas intégralement terminé mais comme promis, nous nous remettons au plus vite dans le code pour avancer le projet. Nous avions deux segments de mécaniques à l'ordre du jour: l'artisanat, et les cultures. Et ce sont les plantes qui ont obtenu le privilège de passer à la casserole en premier.

Rappelez-vous que nous avons déjà eu le plaisir de voir des végétaux lors des segments précédents de récolte, et d'instanciation de ressources (mais si, souvenez-vous de ces cubes et sphères colorés qui tombent par terre en cassant ma carte de navigation). La liste des essences qui seront disponibles dans le jeu est maintenant posée (et se veut définitive), tout comme l'utilité de leurs différents produits (feuilles, graines, fleurs...).

Ce nouveau segment vient mettre un troisième et dernier clou dans les fonctionnalités relatives aux essences végétales, à savoir: 

- la pousse et le cycle de vie complet de toutes les plantes sur la carte

- cela comprend également le fonctionnement et l'entretien de l'arbre-liandre, l'une des pièces centrales de la gestion de cette ressource dans Lampyre

- la multiplication locale des végétaux, mais aussi le contrôle de leur population de saison en saison (on les distribue à la création de la carte, et c'est chouette, mais il faut qu'elles réapparaissent naturellement sur la carte)

- la pousse et la gestion de la ronce pyrope, une plante qui a la fâcheuse tendance à s'installer sur ses pairs et à freiner leur croissance

- les plantes bénéfiques pour leurs voisines

- les champignons (au fonctionnement simple)

- les ruches (tout pareil)

- les interactions définitives avec les herbes, buissons et arbres (couper, récolter les fleurs, les fruits ; on finalise ce qu'on posé au bloc de récolte précédent)

- les variations du mini-jeu de coupe d'arbre selon nos six essences (le principe du mini-jeu lui, ne change pas)

- le mode botaniste, pour voir les détails des plantes environnantes et semer les graines autour de nous

- désigner des zones de plantation pour qu'un ou plusieurs villageois s'en occupent (leur IA d'entretien sera codée lorsque nous aurons les-dits villageois)

- la dormance des plantes dans le linceul (nous rompichâmes)

 

Au final, nous aurons une version définitive de tout ce qui est vaguement herbeux dans Lampyre, et pourrons récolter l'intégralité de leurs produits, et même en gérer des cultures. Ce qui nous régalera pour repartir sur l'artisanat.

Ces points sont très hétérogènes en terme de temps de développement. Je m'attend à ce que le plus costaud soit le mode botaniste et les zones de plantations (rien que pour le fait qu'elles impliquent des interfaces). 

Les instanciations et la pousse ne sont pas des logiques très complexes, mais vont par contre demander un peu de finesse dans leur implémentation pour trouver un compromis entre pousse organique, et performances (on va pas appeler 15k fonctions process soixante fois par seconde pour faire pousser des pâquerettes, hein, nononononon).

Ces objectifs incroyaux étant mis en place, je vous donne rendez-vous via @Ariatowl pour avoir les mises à jour régulières de mes pérégrinations, et surtout, restez attentifs à la date du 1er avril où nous fêterons le premier anniversaire de Lampyre, avec des délicieuses surprises préparées par mes soins :D.

 Prenez soin de vous !

4 févr. 2025

Game dev #06: construire, bâtir, DÉTRUIRE.

 Salutations, voyageurs !


    Et c'est après cette fin d'année productive que nous achevons notre segment de développement dédié à la construction des bâtiments !

Je dois dire que le bloc m'intimidait un peu, mais nous avons plongé dans ces fonctionnalités sans faiblir et vaincu tous nos obstacles. J'avais une assez bonne idée de la façon dont on construirait les structures dans Lampyre, et je pense que nous avons codé une version très aboutie de ce que nous aurons dans le jeu final (ouais, je me tapote les épaules toute seule, il faut être clément avec soi-même).

Voici sans plus attendre le récapitulatif de ce qui a été implémenté dans notre glorieux prototype.


La note de patch

    Nous souhaitions implémenter un système de construction par étape - quelque chose de modulaire, satisfaisant, et qui fait un chouette usage de ces gros matériaux qu'il faut porter à bout de bras vers le chantier. Une construction où les éléments visuels des structures apparaissent petit à petit alors que vous travaillez dessus.

Tous les systèmes décrits dessous sont procéduraux, dans le sens où j'ai mis en place un template qui me permet de définir un nouveau bâtiment à construire en quelques minutes, pour peu que j'indique ses meshs et les matériaux de construction requis.

1) Et le premier menu fut: le menu de construction est officiellement notre premier-né dans la lignée des menus du jeu (nous aurons une carte, un écran de gestion des villageois...). Souhaitant faire les choses bien, j'ai pris mon temps pour développer des classes adéquates et correctement héritées. Concrètement, dès que nous en aurons d'autres à implémenter, toutes les fonctionnalités d'ouverture, de fermeture et de récupération des signaux sont déjà opérationnelles (ouais, la programmation orientée objet, tac tac, tavu).

 


Le menu de construction présente la liste des schémas de construction connus par votre personnage. Il permet de les filtrer selon des tags, ou selon leur nom.

Les tags actuels sont les suivants: structure d'artisanat, structure lumineuse, structure fermée (salle), stockage, décoration. Je n'exclus pas de rajouter d'autres filtres dans le futur, mais ceux-ci couvriront la très grande majorité de nos besoins.

Chaque schéma de construction présente les tags associés à ce bâtiment, sa description, sa taille, et les matériaux requis pour le construire.

Le menu de construction sera débloqué par la simple approche de l'autel de liandre, en début de partie. Le déverrouillage des schémas de bâtiments est un sujet encore inexploré de mon côté, mais je ne veux pas que les recettes soient redondantes et/ou frustrantes à récupérer à chaque partie.

Je rappelle que comme tous nos visuels et autres panneaux d'interface, l'UI actuelle est fonctionnelle. Ses éléments vont rester, mais elle sera visuellement retravaillée et unifiée lors des refontes graphiques.

2) Maître d'ouvrage: aucun matériau n'est demandé pour désigner un site de construction. Comme pour de nombreux autres jeux, la structure est prévisualisée sous votre souris et vous indique si l'emplacement est valide ou non. Une fois placé, le chantier est indiqué par un petit drapeau aux marqueurs colorés, et son interface de progression s'affiche lorsque vous vous en approchez.

Le principe est simplissime: apporter les matériaux requis pour les étapes disponibles. Appuyer sur construire, et hop, le bâtiment progresse. À tout moment, on peut annuler la construction et détruire le chantier pour restituer ses matériaux.

Pour les structures "en bloc" comme les lanternes, les coffres ou les tables d'artisanat, achever une étape ajoute un petit élément visuel au bâtiment. Pour les salles, c'est un pan de mur entier qui est dressé !

Une fois la dernière étape construite, le bâtiment est instancié et devient fonctionnel.

3) Des catégories flexibles: il y a des nombreuses essences d'arbres, de type de minéraux ou d'espèces animales dans Lampyre. Mais tous leurs produits sont rassemblés dans des catégories d'artisanat, qui elles, sont généralistes. Par exemple, des rondins de chêne gris, de saule ou de hêtre rentrent tous dans la catégorie "rondins de bois".

La vaste majorité des bâtiments vous permet de choisir à loisir le type de bois ou la pierre que vous souhaitez utiliser. La différence sera principalement cosmétique, et pour certains matériaux, il y aura quelques bonus qui leurs seront propres.

Par exemple: une lampadaire en bois peut être fait avec n'importe quel essence d'arbre, mais en utilisant du chêne gris, il aura 50 points de vie en plus.

Pour l'instant, cela vous permet surtout de vous adapter aux ressources qui vous sont disponibles, et pourquoi pas, de créer un thème esthétique dans votre village. Dès que le chantier est posé, vous pouvez restreindre les matériaux de chaque étape à une catégorie entière, ou seulement à certains de ses matériaux. Les villageois respecteront vos choix et n'apporteront que les matériaux souhaités sur le chantier.

Cela s'appliquera également aux recettes d'artisanat plus générales pour rendre la fabrication non contraignante, et les associations de matériaux ludiques !

4) CASSER: ce qui peut être construit, peut être démoli. Les bâtiments peuvent recevoir des dégâts, sur leur intégralité, ou sur des pans de murs spécifiques en ce qui concerne les salles. 

Vos bâtiments peuvent alors être réparés en vous approchant d'eux, ce qui ne demande aucun matériau. Dans le futur, vous pourrez attribuer cette responsabilité à un ou plusieurs villageois qui s'occuperont d'entretenir vos constructions à votre place.

Si les points de vie d'une structure tombent à zéro, elle passe à un état de ruine. Les ruines ne peuvent plus être réparées. Elles ne peuvent qu'être déblayées, et elles vous restitueront alors une partie de leurs matériaux d'origine, s'il en reste. 

Cette mécanique de ruine n'était pas planifiée au départ du bloc. En travaillant sur les bâtiments, j'ai réalisé que je voulais absolument des ruines et des vestiges sur ma carte. Je voulais aussi qu'on ait des marques visuelles du passage destructeur d'une tempête, ou d'une vague d'ombre - qu'il y ait du travail si vous tombiez que les restes d'un village oublié.

Vous pouvez naturellement choisir de vous-même de détruire un bâtiment, si son emplacement ne vous convient plus.

De plus, en ce qui concerne les petites structures comme les coffres ou les décorations, vous êtes libres de les déplacer à votre guise dans un petit périmètre autour de leur position actuelle. Cette opération vide tout l'inventaire potentiel de votre meuble, et elle est impossible à réaliser lorsque des ennemis sont proches - non, vous ne pouvez pas bouger votre canapé si une chimère est en train de mordre dedans.

Les bâtiments subiront des dégâts légers d'usure au fil des saisons, mais pourront surtout être attaqués par certaines grosses chimères, ou par l'ensemble des ombreux si vous subissez un assaut particulièrement frénétique. En temps normal, les petits ombrelgins ne s'en prendront pas à vos structures ("vin dieu, mais lâche ce parpaing, sale bayte !!").

Le joueur n'étant pas forcément omniscient (même si des outils vous aideront à savoir instantanément ce qui est attaqué dans votre village), il est important de ne pas rendre l'attaque des bâtiments frustrante. Vous serez averti des dangers, et vous aurez les armes à disposition pour vous préparer face aux menaces (notamment la lumière).

5) L'équilibre dans la force les ressources: il est important de réfléchir à l'équilibrage des ressources qui vous seront disponibles, et des conséquences de la destruction d'un bâtiment. C'est encore très tôt pour figer un équilibrage dans le marbre (hoho, quel potiblagueur), mais j'ai pour l'instant fait les choix suivants:

- annuler un chantier vous rend l'intégralité des matériaux engagés, et ce à n'importe quelle étape de  construction

- réparer un bâtiment ne coûte aucun matériau, et ce, quel que soit son montant de points de vie

- replacer un petit meuble ne coûte rien (hormis du temps si c'est un stockage et que ça bazarde tout le contenu à terre)

- lorsqu'un bâtiment est détruit, environ 50% de ses matériaux sont totalement perdus, et ce, de façon aléatoire ; environ un tiers des composants survivants s'éparpille immédiatement au pied des ruines, et le restant est contenu dans la ruine pour être restitué à son déblaiement

Cela évite d'avoir une construction et des réparations trop contraignantes ("rah, il me faut combien de brindilles pour réparer le mur arrière déjà ...?"). De plus, cela met l'emphase sur la défense générale de vos bâtiments et vous punit s'ils sont totalement détruits. Cela peut aussi vous pénaliser si vous voulez carrément déplacer une structure. La vie reste rude dans l'univers de Lampyre, et bouger une maison de quatre mètres reste du luxe. D'un autre côté, vous ne devriez pas avoir à démonter un coffre que vous voulez pousser à quelques pas de là.

6) Les fondations sont posées pour la suite: placer un bâtiment ou une salle met bien évidemment la carte de navigation à jour pour les créatures (de façon fluide grâce à nos aventures du bloc précédent, je ne m'en lasse pas). Pour le moment, les salles ne remplissent aucune fonction particulière, mais je tenais à préparer leur implémentation et leur gestion des dégâts. 

À terme, les salles seront des blocs fermés par une porte, avec du sol. Elles pourront être attribuées à vos villageois, et certains meubles comme les lits ou les décorations ne pourront être posés que dans ces pièces closes. La salle aura un certain niveau de confort qui satisfera les besoins de vos alliés, et leur donnera un chez-soi où se détendre (ce sera le bloc de développement Valérie Damidot, incroyable).


La suite

Les choses s’accélèrent, les amis. Nous approchons du premier anniversaire de ce projet ambitieux, et le rythme de développement ne faiblit pas. C'est même plutôt le contraire. 

Nos mécaniques déjà implémentées ont des bases super saines, et même si elles n'interagissent pas immédiatement entre elle, le tissu du gameplay commence à se dessiner autour. Je raisonne de plus en plus en termes de fonctionnalités finales et de ce que je souhaite dans la version 1.0, plutôt qu'en termes d'essais rigolos ou incomplets.

Ce qui est honnêtement, aussi grisant qu'effrayant. Avoir une vague idée de jeu c'est une chose, mais quand on couche une idée de mécanique sur le papier, et qu'il faut passer trois semaines à l'implémenter dans le code, on y réfléchit à deux fois.

Bref, j'ai le plaisir de vous annoncer le thème de non pas UN, mais de DEUX blocs suivants. J'ai nommé: les cultures, et l'artisanat !

La construction a quelque chose de simple et de classique - satisfaisant, fluide, familier même si assez organique. Ces deux prochains blocs sont différents. Je sais que la culture des plantes et la fabrication de tous les objets vont être des piliers de la boucle de jeu, et je sais aussi à quel point ils seront uniques à Lampyre (même si, soyons honnête, il existe rarement une idée de gameplay introuvable ailleurs ; c'est davantage leur mélange et l'alchimie finale qui est propre à un jeu).

Non, vous n'allez pas faire des trous en ligne droite pour planter votre maïs et l'arroser chaque jour. Hun-hun.

C'est pourquoi, tel l'énorme rat que je suis, et contrairement aux articles précédents, je vais m'abstenir de lister ici les fonctionnalités à implémenter. CAR - quelque chose de plus gros arrive. Je cuisine beaucoup de choses pour le projet et j'estime qui est temps de vous le partager de façon plus parlante, et plus professionnelle (oui, je suis un rat professionnel, c'est ce que j'essaie de vous communiquer tous les jours).

Tenez ma bière, alors que je m'installe dans la caisse à savon pour descendre la pente à 16° du village. Restez informés du développement au travers de mes spams quotidiens via @Ariatowl (#Lampyre), et surtout, prenez soin de vous !


Les visuels du schnaps

 

On termine comme à l'habitude avec le florilège des GIF de développement de ce blog.


1) Les filtres du menu de construction ! La barre de recherche cache également automatiquement les plans de bâtiment dont le nom ne correspond pas à vos caractères.


2) Affichage des matériaux des plans de construction. Soit c'est un matériau particulier ("du bois de chêne gris"), soit c'est une catégorie ("rondins de bois"). Vous pouvez alors faire défiler les matériaux pour voir tous ceux qui sont éligibles à ce type.


3) Le placement des bâtiments, tout simple, avec la prévisualisation de la structure terminée. Rien ne vous empêche de placer autant de chantiers que vous le souhaitez (ici les établis apparaissent tous terminés car je n'avais pas commencé la programmation des étapes de construction).


4) La construction, tout simplement. Une fois les matériaux déposés sur le chantier, une étape disponible doit simplement être engagée jusqu'à sa complétion.


5) La carte de navigation qui se met à jour lors de la pose des obstacles et des salles. C'est beau.



6) La destruction de pans de mur et le passage d'une salle en ruine ! Notez la chute des matériaux lorsque le bâtiment se délite. Notez aussi la priorisation des créatures sur les bâtiments dans le choix des cibles (aka les ombrelgins priorisent l'attaque sur le joueur avant l'attaque sur les structures !).

 


7) Les réparations ! Plutôt explicites. S'approcher d'une structure endommagée affiche automatiquement sa barre de points de vie pour qu'on puisse voir qu'elle a subit des dégâts. Je pense que dans le futur, je donnerai un moyen au joueur d'avoir une vision instantanée de tous les dégâts alentours (un peu comme un mode "attentif").



8) Le déblaiement de ruines. Achève le nettoyage des restes de bâtiments après leur destruction, et restitue ce qu'il reste de leurs matériaux d'origine.



9) Le marquage de bâtiments alliés pour destruction. Celle-ci peut être annulée à tout moment, et les structures réparées vers leur état initial.


 

10) Le déplacement de nos petites structures. À vous les ré-organisation de stockages et les séances passionnantes de décoration intérieure quand celles-ci seront implémentées.