Hamster Life - Devlog #3

icône du blog Hamster Life - Devlog #3

MrSinaf, le

Des petites avancés, mais qu'elles restent tout de même notables. Finalement, un petit combat contre mon perfectionnisme à du être fait !

Du texte SDF

Dans le dernier devlog, j'ai pu vous parlez du rendu des textes et j'ai à nouveau travaillé dessu.

float distance = texture(texture0, textCoord).r;
float threshold = 0.05;
float alpha = smoothstep(0.5 - threshold, 0.5 + threshold, distance);
out_color = vec4(tintColor.rgb, alpha);

Bah voilà, c'était tout ce qu'il fallait pour lire une texture SDF. Pour rappel, je pensais que le bitmap serait suffisant à mes attentes. Mais travaillant énorément sur une interface responsive, j'avais un résultat CA-TAS-TRO-PHI-QUE.

Bon il y a encore quelque ajustement, mais ça concerne normalement que la valeur threshold qui doit être réajuster si nécessaire (peut-être même dynamiquement).

Démonstration du résultat SDF

Bien que le texte est 2x plus grand, il reste parfaitement net.

J'avoue que ça a ajouté de la difficulté sur la manière dont les lettres doivent être placé et peuvent donner un résultat imprévisible si la génération de la texture est différente. Pour le moment, le résultat me plait et je verrais les ajustements si ça devient problèmatique.

UI

Quand on joue à un jeu, on se rend pas toujours compte des choix qui ont été fait.

Prennons un exemple sur un jeu que je joue dernièrement : Factorio. L'interface utilisateur n'est pas mis à l'échelle, elle reste constante, ce n'est pas mauvais, bien au contraire et puis les éléments sont à leur place peut importe la taille de l'écran. Ensuite, il n'y a pas de soucis concernant des textures qui se retrouveraient trop grande ou trop petite...

Que dois-je faire alors ? Bêtement me dire que l'interface s'adaptera à l'écran, mais ne sera pas agrandi si nécessaire. La majorité des écrans sont à 1920x1080 pixels, pourquoi ne pas simplement s'adapter à ça... Et finalement, je passe beaucoup de temps à effectuer des tests, observer le résultat et recommencer...

Donc pour arrêter de procrastiner, l'interface utilisateur ne sera pas mis à l'échelle, il gardera la même taille, mais s'adaptera toujours efficacement à l'écran. Le plein écran, sera le paramètre par défaut.

CE QUI M'EMBETE, C'EST QUE C'EST CE GENRE DE DETAIL QUI ME RALENTI, JUSTE PARCE QUE JE N'ARRIVE PAS A ME METTRE D'ACCORD SUR UNE FACON DE PROCEDER !
Alors que finalement, il n'y a pas de mauvais choix...

Sinon, quelques ajouts ont été fait pour l'interface utilisateur, permettant de le rendre plus complet et permettant des choses plus complexe.

Panel

Qui permet de gérer efficacement le fait qu'une texture s'étire sans modifier les coins, ce qui permet avec une texture par exemple de 32x32 pixels de pouvoir s'étirer à souhait sans perte de qualité !

Il dépend de StretchTexture, c'est une class que j'ai créé, permettant de définir dynamiquement les coins à garder intacte. Il faut savoir pour la petite anecdote, c'est l'une des première choses que j'ai fait en apprenant à programmer, voilà... J'en suis fière :) (Après c'était pas en C#).

Mask

Qui permet de créer une zone où le contenu sera affiché, si il déborde il est coupé ou complètement caché.

C'est quelque chose d'assez important pour me permettre dans le futur de mettre en place des listes, ou même peut-être un jour permettre qu'une texture carré s'affiche sous une autre forme tel un par exemple cercle.


Alalaaaa...

Bah c'est les vacances, d'où il n'y a pas grand chose bien le temps que ça a mit pour sortir. En tout cas, Github a été utilisé comme il faut !

J'ai eu plein de choses qui m'ont finalement empêché d'y travailler, pendant une semaine je ne pouvais rien faire par exemple. Puis j'ai voulu travailler sur un site où je vous donnerez plus d'informations dans un futur blog.

Je parle d'amélioration car le text en SDF c'est vraiment une belle avancée, je suis finalement content de l'avoir fait ! Sans parler de certain bug que j'ai pu corriger. Mais j'attendrais la prochaine fois d'avoir un blog plus complet concernant le développement d'hamster life avant d'en poster un.

Mais il fallait que je me justifie (même un minimum) sur le fait que je met du temps à faire des choses qui semble simple... C'est limite un combat contre moi même (ou mon perfectionnisme) qui n'accepte pas que certaines choses ne seront pas même pour un début PARFAIT ;-;

❤️ Merci pour votre lecture ❤️