Electron et résolutions d’écran

Electron terminé !
Le launcher est prêt et ne bougera plus avant longtemps, quand il me faudra comparer les fichiers présents chez le joueur avec ceux du manifeste du jeu, les plus à jours.
Quand même, ça fait quelque chose… les procédures de compilation des binaires serveur et client terminées, le launcher terminé et même la classe C++ de gestion des résolutions d’écran !

Landscape material

Je n’en ferai probablement rien car ces outils me semblent d’un intérêt extrêmement limité dans un jeu. C’est joli, c’est réaliste et après ?
Je me demande si au fil du temps la technique, qui est un outil, n’est pas devenue une fin en soi. A quoi servent de belles forêts réalistes ou des falaises qui se couvrent de neige avec l’altitude ? Ce sont des décors, c’est secondaire ! C’est comme une clef anglaise, c’est un outil, il est inutile de faire une belle clef anglaise, qu’elle soit tout ébréchée et plaine de graisse est normal, c’est le boulon qu’elle serre qui compte. L’intérêt d’Althea, c’était les systèmes de jeu, les quêtes, les aventures. Tout se passait sur des plaines toutes plates avec un rocher ou un arbre par-ci, par-là ; le joueur s’en fout si c’est moche, un décor n’est rien d’autre qu’une suggestion, un croquis 3D. Je me garderai bien de créer de “belles forêts” : c’est injouable une forêt, il y a des arbres partout qui obstruent la vue, empêchent de repérer les créatures, les herbes d’artisanat et les entrées de donjons. Les cartes de forêts étaient d’ailleurs très minoritaires dans Althea, même si les arbres étaient espacés et tronqués en hauteur, l’essentiel des activités d’extérieur avaient lieu dans des plaines herbeuses ou enneigées.

Par contre, je referai la Moria. Parce que c’est nain et que les Nains, c’est le bien !

Serveur et client packagés !

Je suis vidé, mais c’est fait.

Tout ce que j’avais appris d’Unreal 4 est bon pour la poubelle, tout se fait désormais à la ligne de commande et, franchement, c’est plus simple. Sauf que les utilitaires Windows sont nuls, je pourrais installer un shell Unix correct mais ça ferait encore une couche de plus, donc je reste sur CMD.

Pas mal de stress, les fichiers de configuration du client packagé disparaissaient sans que je sache pourquoi, utiliser les options de fullscreen (windowed ou pas) cassait mes écrans de travail dans l’éditeur et, bien sûr, c’est le moment que j’ai choisi pour trouver des bugs improbables, comme la barre d’infos des mobs qui ne disparaissait pas à la mort. Tout ça, c’est réglé.

Cependant, je n’ai pas réussi à faire fonctionner les options de fullscreen en blueprints, je vais créer une classe C++ rien que pour ça et les résolutions, c’est trop le bordel, j’en peux plus !

J’ai déjà attaqué le lanceur Electron, qui me permettra de mettre à jour chez les joueurs uniquement les fichiers différents entre leur installation et la dernière version publiée, c’est encore une couche de plus mais une fois que ce sera au point je n’aurai plus à m’en soucier.

Je termine Electron, parce que c’est fun et puis j’attaque le C++ pour les résolutions. Je pourrais m’en passer et laisser le jeu s’exécuter à la résolution maximale en fenêtré mais ça va me rester sur l’estomac, donc, als het moet, het moet !

Je m’y recolle aujourd’hui

J’ai pris une semaine loin d’Unreal, ça fait du bien mais c’est terrifiant de s’y remettre !

Aujourd’hui, j’ai réglé une ou deux petites choses qui traînaient, notamment ajouter dans le coin supérieur gauche de l’écran un petit bouton qui s’agrandit quand on passe la souris dessus et qui affiche l’écran des options. Ce bouton sert deux cas de figure : le joueur qui se demande quel est le raccourci des options n’aura pas à taper sur toutes les touches de son clavier jusqu’à trouver la bonne, et celui qui aura changé le raccourci clavier des options pour une touche qu’il aura oubliée – ça sent le vécu – aura toujours une ancre pour remettre tout en ordre.
J’aurais pu obtenir le même résultat par la touche ESC mais j’aime bien le petit bouton qui se déploie, c’était comme ça sur Guild Wars 1 et j’aime bien ce qui me rappelle les bons souvenirs du passé.

Ensuite, j’ai lancé le processus de création du code serveur. Et là, c’était moins rigolo. J’ai dû télécharger de Github le code source d’Unreal, décompresser les 150.000 fichiers dans un nouveau dossier à la racine de mon SSD – sinon les chemins de fichiers peuvent être trop longs et faire planter la compilation, le moyen-âge quoi – et lancer la compilation d’Unreal. Ca fait 20 minutes que mon Ryzen 9 9900x tourne à 95% sur les 24 threads et ce n’est pas encore terminé : jamais vu un soft aussi lourd de toute ma vie, deux millions de lignes de code en C++, ça rigole pas !

Pourquoi recompiler tout Unreal ? Parce que c’est le seul moyen de compiler un serveur et, à terme, un serveur Linux.

Quand tout cela sera en place, soit demain vu l’heure, je vais attaquer le packaging, faire tourner le serveur en local sur ma machine de dev avant de l’installer sur un serveur dédié dans la salle machine – aussi appelée cave à vin – et si les tests sont concluants attaquer le lanceur Electron. Cette partie packaging – serveur – lanceur est un ensemble donc je fais tout en même temps, il ne me reste plus beaucoup de briques de code pur à programmer, j’abats les dernières difficultés, espérant commencer la partie graphique avant la fin de l’année, soit après un an de développement technique pur.

C’était une erreur…

… et je me fais piéger chaque fois, c’est désespérant !

Ayant terminé encore un grand chantier, les skills “à la UO”, je me suis dit que j’allais prendre un peu de repos en programmant un truc simple : l’écran des options. Et c’est vrai que, en apparence, c’est simple, résolution d’écran, choix du fenêtré ou non, full screen ou non, et modification des raccourcis clavier. Seulement voilà : c’est un domaine totalement différent de ce que j’ai traité jusqu’ici qui apporte son lot d’étrangetés (le mot est faible !) et m’a fait enrager plusieurs jours !

D’ailleurs, je prends un week-end de vacances, puis je verrai ce que je vais attaquer, mais la programmation des options a été un cauchemar : rien ne marchait, j’ai même dû faire l’impasse sur les changements de résolution pour ne conserver que les options de fenêtrage, ça me prenait vraiment trop de temps et je ne suis pas loin du burnout après presque 10 mois passés sur une peau de fesse aux commandes d’un robot avec pour tout décor 2 coffres, 3 PNJs et un monstre de test.

Le bon côté des choses, c’est que j’ai presque terminé la programmation des mécaniques fondamentales. C’est le presque qui me fait peur !