WalrusRPG : ImGUI et grilles et PIAF

Salut à tous! Rien de tel qu’un petit billet pour donner des nouvelles, à l’heure où les augmentations de température de 10°C se font présents dans la région, il est toujours plus intéressant de rester calé au frais, histoire de ne prendre pas de coup de chaud (ce qui peut arriver assez vite).

Les projets de l’année scolaire étant (presque) terminés, il est temps de se consacrer un peu plus à ce bon vieux blog, histoire de se faire plaisir ainsi qu’aux projets qui sont plus ou moins toujours d’actualité.

Déjà, parlons un peu de WalrusRPG (WRPG pour le restant du billet). J’ai dépensé un peu d’énergie afin de faire des progrès assez importants dans le moteur, notamment autour de celui-ci. J’ai commencé par valider et améliorer l’intégration d’ImGUI/Dear ImGUI afin de pouvoir afficher des informations sur le moteur de jeu en temps réel sur PC (comme un logger, les FPS ou un affichage en fonction de l’état de jeu actuel).

Ca donne ceci

Ouais, c'est un peu brouillon...

C’est un peu chargé mais au moins, quand on passe en plein écran, ça conserve sa taille et ça permet d’avoir beaucoup plus de place pour afficher les infos. Ainsi, j’ai pu aussi améliorer (et debugger) le bousin qui avait du mal à certains points.

Yay

Observez un peu plus ce screenshot. Sur le côté droit se trouve la fenêtre de debug de l’état du jeu. Au milieu de celle-ci contient une miniature de la map actuelle. Les cases en rouge représentent les tiles qui sont au niveau des entités ou au-dessus de celle-ci et les carrés blancs lesdites entités. Si vous regardez plus bas, vous observerez une grille de nombres. Ils représentent la population de la grille d’entité de la map. Ce qui nous amène à la nouvelle feature du moteur, c’est-à-dire une grille pour optimiser un peu la gestion des collisions entités-entités.

En effet, quand on fait de la détection de collision entre entités, il est utile de diviser le monde dans lequel les opérations se font afin d’éviter de tester si deux objets qui sont loin d’être en possibilité de collision le soit. Les case n°5 et 6 (première et deuxième sur la gauche sur la deuxième ligne en partant d’en-haut) montrent un cas intéressant : une entité -le joueur- qui chevauche deux cases. Dans ce cas, il est important de bien vérifier que l’entité se heurte à éventuellement à une entité de toutes les cases qu’elle croise.

Enfin bref, quelque chose juste pour mitiger le coefficient exponentiel du calcul de collisions et qui fait du bien sur le bon petit 200MHz de ma calto (ou de ma 3DS). Pour finir, voici un petit truc sur lequel j’ai passé mes deux dernières journées : un éditeur visuel pour PIAF. PIAF (acronyme de “PIAF Is an Archive Format”1) est un système de micro-conteneur de fichiers destiné pour WRPG afin d’éviter de transférer cinquante fichiers pour un jeu de plus grande envergure et de ralentir considérablement l’explorateur de documents de la TI Nspire.

Bon dieu, Python+GTK...

Bon dieu, Python et GTK3... [^2]

Du coup, comme les libraires de PIAF sont faits en Python pour pouvoir créer/ouvrir ces fichiers, j’ai décidé de continuer sur la lancée et ai fait un éditeur visuel pour grandement simplifier l’accès à l’édition d’“archives”. Pour l’instant, la v1 ne fait que ce dont j’ai besoin mais je pense que je vais peut-être faire un ou deux trucs de plus pour extraire des fichiers depuis une archive déjà faite. D’ailleurs, je viens de penser qu’il faudrait que j’adapte les sélections de type de fichiers et de compression en fonction de la lib et pas de manière manuelle, hourra, un truc en plus à faire (hop, liste des choses à faire mises à jour).

Voilà un peu les nouvelles du front. À part ça, pas grand chose, si ce n’est la batterie de mon PC qui a officiellement mangé son extrait de naissance avec une autonomie exceptionnelle de 20 minutes, montre en main et que j’envisage de faire une bonne vieille Rétro-Speciton d’ici les prochaines semaines. Sur ce, je vous laisse, je vais faire des trucs. À plus!


  1. Oui, je m’ennuie parfois, je suis désolé. ↩︎