Changer une couleur dans une texture dans Unreal Engine

Dans un article précédent j’avais expliqué comment changer la couleur d’une image PNG avec du code C++. Dans celui-ci je voulais montrer mon design spaghetti pour le faire dans Unreal Engine.

Mon but premier est de pouvoir changer la couleur de peau de mes personnages le plus facilement possible. J’ai donc décidé d’avoir un matériel avec un paramètre qui me permettrait de sélectionner la couleur désirée. Pour permettre cela, j’ai modifié la texture originale pour mettre du magenta (FF00FF) où il y aura la couleur à modifier. Voici une capture d’écran du résultat dans Unreal Engine:

On peut observer dans le milieu en bas complètement qu’il y a un paramètre qui permet de choisir la couleur désirée. Ce n’est pas obligatoire mais j’ai gardé la possibilité d’utiliser la texture originale avec un paramètre nommé Enable.

En général, ce que je voulais montrer, c’est la complexité d’utiliser un langage de script visuel. Peut-être que c’est juste à cause de mon expérience dans d’autre langage de programmation, mais la façon d’extraire les composants RGB d’une image nécessite un paquet de boite et de connexion.

Le plus important c’est le résultat final, alors le voici.

Personnage avec une couleur de peau personnalisé

WiiBuilder 1.10.0

La version 1.10.0 de WiiBuilder est maintenant disponible. Avant de mentionner la nouvelle fonctionnalité, je dois d’abord donner quelques explications.

Les fichiers de type WUHB (Wii U Homebrew Bundle) sont utilisés pour combiner le fichier RPX, l’écran de chargement, l’icône d’application, les informations du homebrew et jusqu’à 4Go de fichiers supplémentaires dans un nouveau format d’application homebrew. Le but est de faciliter la distribution de ceux-ci. Cette nouvelle solution est actuellement intégrée dans Aroma qui permet le chargement de ceux-ci à partir d’une carte SD. Aroma, qui est encore en version bêta au moment d’écrire ces lignes, permet aussi l’utilisation de modules et de plugins. Un des plugins intéressant est wiiload qui permet de démarrer une application qui a été transférée par le réseau directement à partir du Menu Wii U.

Maintenant, revenons à WiiBuilder. La nouvelle version permet d’envoyer ces fichiers .wuhb à une Wii U qui roule le plugin wiiload d’Aroma. Une fois le fichier reçu, le homebrew sera démarré.

WiiBuilder 1.10.0
La capture d’écran montre que le fichier wuhb a été envoyé à la Wii U avec succès.

Encore plus d’émotes dans Valheim

Dans un article précédent j’avais listé les émotes disponibles dans le jeu Valheim. Depuis la version qui inclut le biome du Mistlands, il y a maintenant encore plus de choix.

Alors voici la nouvelle liste mise à jour.

CommandeDescription
/waveEnvoyer la main
/thumbsupMontrer les pouces vers le haut
/pointPointer dans une direction
/nononoAgiter les mains pour signifier non
/cheerCélébrer en levant le poing en l’air
/challengeLancer un défi
/sitS’asseoir
/blowkissEnvoyer un baiser
/bowTirer sa révérence
/cowerSe tapir
/cryPleurer
/despairÊtre désespéré
/flexFléchir les biceps
/comehereFaire signe de venir
/headbangAgiter la tête
/kneelS’agenouiller
/laughRire
/roarRugir
/shrugHausser les épaules
/danceDanser
Un viking très agile

DALL-E une IA intéressante

Tout le monde en parle, donc pourquoi ne pas le faire aussi. L’intelligence artificielle, IA, est de plus en plus utilisée pour accomplir diverses tâches. DALL-E est une IA qui permet de générer des images à partir de texte en langage naturel. J’utilise le pseudo Crayon et j’ai décidé de voir si l’IA serait capable de me créer un avatar. Voici un premier exemple avec le texte qui a servi à la génération dans la légende.

a pencil with a face and arms

Ces temps-ci je joue pas mal au jeu vidéo Red Dead Online, j’ai donc demandé à l’AI de générer un look cowboy à l’avatar.

a pencil with a face, arms with a cowboy hat

Je trouvais qu’il manquait quelque chose… ah oui! L’arrière plan.

A cartoon of a pencil with a face, arms with a cowboy hat in the desert.

DALL-E a beaucoup de difficulté avec les mains. En plus, elle n’est pas capable de générer correctement du texte. En général, si on lui donne les bonnes entrées, on peut vraiment être surpris du résultat. Je trouve ça incroyable que ces images n’existent nulle part et on été entièrement générées par une IA qui comprend ce que je lui dis.

Simplifier l’utilisation des émotes dans Valheim

Le jeu Valheim permet l’utilisation d’émotes (émotions animées). Par contre, je considère qu’elles ne sont pas faciles à utiliser rapidement. Par exemple, pour envoyer la main à un autre joueur, il faut ouvrir la console de chat et inscrire la commande /wave. Heureusement, le jeu nous permet de lier certaines actions à une touche du clavier.

Premièrement, voici la liste des émotes présentement disponibles dans le jeu.

CommandeDescription
/waveEnvoyer la main
/thumbsupMontrer les pouces vers le haut
/pointPointer dans une direction
/nononoAgiter les mains pour signifier non
/cheerCélébrer en levant le poing en l’air
/challengeLancer un défi
/sitS’asseoir

À l’exception du dernier émote qui est déjà disponible en appuyant sur la touche x, on veut que les autres le soient aussi rapidement. La commande /bind permet de lier une action à une touche de clavier. Étant donné que Valheim utilise l’engin de jeu Unity, les codes de clés sont disponibles sur cette page. Dans mon cas, je veux les lier aux touches du clavier numérique. Alors, voici les commandes à entrer.

/bind Keypad0 wave
/bind Keypad1 thumbsup
/bind Keypad2 point
/bind Keypad3 cheer
/bind Keypad4 challenge
/bind Keypad5 nonono

Pour voir la liste des commandes liées, vous pouvez utiliser la commande /printbinds. Pour délier une action, la commande est /unbind suivi du code de clé. Finalement, pour tout annuler, il existe la commande /resetbinds.

Émote pouces vers le haut dans Valheim

Piskel en 2022

Il y a un an jour pour jour, j’écrivais un article à propos de Piskel, un éditeur en ligne gratuit pour créer des sprites animés et du pixel art. Si vous avez un compte sur le site, il est important de mentionner qu’à partir d’aujourd’hui il sera supprimé. Cela n’empêche pas d’utiliser l’application et d’enregistrer localement vos animations.

Sans plus tarder, voici la nouvelle création de mon fils qu’il vient de terminer :

Vélo (2x)

En regardant sur mon disque dur, j’ai retrouvé quelques animations que j’avais oublié de montrer dans mon dernier article. Alors voici d’autre créations de mon fils :

Gomme
Tope là

En terminant, je vous rappelle que le code source est disponible sur GitHub et que l’application peut être utilisée à partir de cet URL : https://www.piskelapp.com

Utiliser NSSM pour démarrer Valheim Dedicated Server

Dans cet article, j’expliquerai comment utiliser NSSM pour démarrer Valheim Dedicated Server en tant que service. Dernièrement, j’ai eu la piqûre pour le jeu d’exploration et de survie Valheim. Je voulais que mon monde soit hébergé sur mon serveur Windows et que mes amis puissent y accéder facilement. Heureusement, les outils mis à notre disposition sont relativement faciles à utiliser.

La première étape est d’installer le serveur. Je ne voulais pas devoir installer Steam sur mon serveur et je ne voulais pas devoir y lier mon profil. La bonne nouvelle est que SteamCMD existe pour pallier à ce problème. Il suffit de télécharger le fichier zip pour Windows et de l’extraire. Une fois disponible, il faut exécuter l’application steamcmd.exe. Une fenêtre de commande devrait être disponible. Voici les commandes à écrire:

login anonymous
app_update 896660
quit

Ces commandes servent à installer ou mettre à jour Valheim Dedicated Server. Une fois l’installation terminée, dans votre dossier SteamCMD il devrait y avoir un nouveau dossier nommé \steamapps\common\Valheim dedicated server. Ce dossier est important pour la prochaine étape.

La deuxième étape est de démarrer le serveur. La plupart des tutoriels vont dire de créer une copie du fichier start_headless_server.bat pour y inscrire vos informations, mais dans notre cas nous allons seulement nous en inspirer pour démarrer le service avec NSSM. NSSM signifie Non-Sucking Service Manager et, comme son nom l’indique, est un gestionnaire de service « performant ». L’application possède une interface graphique pour installer, éditer ou supprimer un service créé à partir de NSSM. Par contre, dans cet article, c’est plutôt des lignes de commande que nous utiliserons. Alors sans plus tarder, voici ces commandes (qui devront être modifiées pour accommoder vos préférences):

set valheimpath=C:\SteamCmd\steamapps\common\Valheim dedicated server
nssm install valheim "%valheimpath%\valheim_server"
nssm set valheim AppDirectory "%valheimpath%"
nssm set valheim AppParameters "-nographics -batchmode -name \"Nom du Serveur\" -port 2456 -world \"Monde\" -password \"MotDePasse\" -savedir \"C:\Valheim\" -public 1"
nssm set valheim DisplayName "Valheim Dedicated Server"
nssm set valheim Description "A server for the Valheim game."
nssm set valheim Start SERVICE_DELAYED_AUTO_START
nssm set valheim AppStdout "%valheimpath%\logs\nssm.log"
nssm set valheim AppStderr "%valheimpath%\logs\nssm.log"
nssm set valheim AppRotateFiles 1
nssm set valheim AppRotateBytes 1000000
nssm set valheim AppEnvironmentExtra SteamAppId=892970
nssm start valheim

La première ligne doit être modifiée pour y mettre le chemin où se trouve l’exécutable valheim_server.exe. La ligne 4 est sans doute la plus importante. Elle permet de spécifier le nom du serveur, le nom du monde, le mot de passe pour accéder au serveur et le dossier où enregistrer les sauvegardes. Pour plus d’information sur ces paramètres, il y a un manuel sous format PDF dans le dossier de l’exécutable. La dernière ligne est celle qui démarre le serveur dédié.

Si vous désirez supprimer le service, c’est cette commande qu’il faut utiliser:

nssm remove valheim

Pour éditer un service déjà installé avec l’interface, on utilise cette commande:

nssm edit valheim

La troisième étape consiste à configurer votre pare-feu pour ouvrir les bons ports. Il faut démarrer Windows Firewall With Advanced Security. En premier, dans la section Inbound Rules, on clique sur New Rule pour y ajouter une règle pour TCP avec les ports 2456-2458. On fait la même chose pour UDP avec les ports 2456-2458. En second lieu, dans la section Outbound Rules, on clique sur New Rule pour y ajouter une règle pour TCP avec les ports 2456-2458. Finalement, on fait la même chose pour UDP avec les ports 2456-2458. La configuration du serveur devrait être terminé.

La quatrième étape est d’ajouter le serveur dans Steam sur votre PC. Il faut simplement aller dans le menu View et par la suite on choisit Servers. Vous cliquez sur le bouton ADD A SERVER et vous suivez les étapes. Pour démarrer une partie, il va falloir utiliser ce nouveau serveur. Le mot de passe utilisé plus haut va vous être demandé avant d’ouvrir le jeu et une seconde fois dans le jeu lorsque vous démarrez la partie.

Voilà, c’est terminé! Vous devriez maintenant être en mesure de jouer avec vos amis dans le même monde.

Deux vikings relax sur le balcon

MagicaVoxel

Dans mon dernier article, j’avais parlé de MagicaCSG, un logiciel dont ma fille avait maitrisé les bases assez rapidement. Cette fois-ci, ce sera le tour de MagicaVoxel, un autre logiciel gratuit de ephtracy. Il est disponible pour macOS et Windows et permet de concevoir assez facilement des modèles 3D en voxel. L’idée est simple: on utilise des cubes de couleur pour bâtir un objet 3D complexe.

Mon garçon de 13 ans qui s’initie à la conception de jeux vidéo a poussé l’exercice plus loin que de bonnement faire un mesh texturé dans MagicaVoxel. Il voulait l’animer et l’importer dans l’engin de jeu Unreal. Pour faire l’ossature et l’animation, il s’est servi de Mixamo. Pour y utiliser son modèle 3D, il l’a d’abord exporté en format obj à partir de MagicaVoxel. Ceci va générer trois fichiers (.obj, .mtl et .png) qui devront être compressés en un seul fichier de format zip. C’est ce fichier qui sera importé dans Mixamo. Une fois les différents points sélectionnés sur le modèle pour définir le squelette, il faudra simplement choisir une animation et la télécharger.

Personnage dans Mixamo
Personnage dans Mixamo

Le fichier fbx téléchargé devra être importé dans Unreal Engine. Si tout fonctionne bien, ceci devrait créer le squelette, le mesh, la texture, le matériel, l’animation et les autres items nécessaires à l’engin de jeu.

Je vous laisse avec un gif du personnage animé dans Unreal Engine. Considérant qu’il s’agit du premier modèle 3D animé entièrement conçu par mon fils, je trouve le résultat assez bien réussi.

Personnage qui court sur place dans Unreal
Personnage qui court sur place dans un niveau de Unreal

MagicaCSG : un jeu d’enfant

Il y a quelques mois, un nouveau logiciel d’édition 3D gratuit faisait son apparition. Il s’agit de MagicaCSG. Il est développé par ephtracy. Présentement, il est seulement disponible pour Windows. Ce logiciel est simple d’utilisation. Ma fille de 10 ans a créé ces modèles sans rien connaitre de la 3D en moins de deux heures.

MagicaCSG
MagicaCSG : Turntable Animation

Dans la version actuelle, il est seulement possible d’exporter le mesh dans le format ply (Polygon File Format). Cela vous permettra de l’ouvrir dans Blender si vous avez du traitement supplémentaire à y faire.

Git: Modifier les étiquettes suite à une importation

Subversion ne gère pas les étiquettes de la même manière que Git. C’est pour cette raison que suite à une importation je me retrouve souvent à devoir faire des modifications à mon historique. Une étiquette créée lors d’une importation est composée d’une soumission sur laquelle une étiquette légère est ajoutée. Ce que je veux, c’est une étiquette annotée sans l’ajout d’une soumission inutile. Dans cet article, nous allons voir comment faire cela. Il est important de mentionner que les lignes de commandes mentionnées plus bas ont un impact sur votre historique. Faites attention de bien les comprendre avant de les utiliser.

Utilisez cette commande pour voir quelles étiquettes doivent être changées:

git for-each-ref --sort=-refname --format '%(refname:short) %(taggerdate:iso-local)' refs/tags

S’il n’y a pas de date à coté de la version, c’est que l’étiquette doit être modifiée. Par exemple, ici les versions 3.2.x à 3.4.x doivent être modifiées:

v3.7.0 2019-11-14 12:14:06 -0500
v3.6.1 2019-05-09 12:43:48 -0400
v3.6.0 2017-11-09 15:33:19 -0500
v3.5.0 2017-06-13 18:18:37 -0400
v3.4.0
v3.3.1
v3.3.0
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2.0

Dans l’image suivante on peut confirmer que c’est effectivement la vérité. Les dates affichées sont celles des étiquettes annotées uniquement, ce qui n’est pas le cas pour l’étiquette légère v3.4.0.

Une soumission a été créé pour l’étiquette légère v3.4.0

La nouvelle étiquette doit conserver la date de la soumission 72dce852, car c’est à cette date que la relâche a normalement eu lieu. Dans l’image précédente on peut voir que la dernière soumission pour la relâche a été effectuée au mois de mai. Par contre, l’étiquette a été créée au mois de juin. Utilisez la commande suivante pour récupérer la bonne date:

git log --tags --simplify-by-decoration --date=iso-local --pretty="format:%ad %d"

Voici un exemple de ce que j’obtiens:

2019-10-30 17:46:26 -0400  (tag: v3.7.0)
2019-04-25 19:54:37 -0400  (tag: v3.6.1)
2017-11-08 18:25:32 -0500  (tag: v3.6.0)
2017-06-13 17:31:05 -0400  (tag: v3.5.0)
2016-06-23 15:35:04 -0400  (tag: v3.4.0)
2015-02-18 17:04:22 -0500  (tag: v3.3.1)
2014-12-08 09:59:58 -0500  (tag: v3.3.0)
2012-07-03 10:26:33 -0400  (tag: v3.2.4)
2012-03-13 17:07:43 -0400  (tag: v3.2.3)
2011-12-20 15:12:39 -0500  (tag: v3.2.2)
2010-12-20 16:07:02 -0500  (tag: v3.2.1)
2010-09-10 16:55:17 -0400  (tag: v3.2.0)
2005-08-02 11:20:49 -0400

Cette commande donne la date de la dernière soumission effectuée avant l’étiquette et non la date de l’étiquette. C’est pourquoi cette commande nous sert pour les étiquettes non conformes. Maintenant, pour créer la nouvelle étiquette, on fait une commande similaire à celle-ci:

GIT_COMMITTER_DATE="2016-06-23 15:35:04 -0400" \
  git tag --annotate v3.4.0 \
    --message="Tag the 3.4.0 release" \
    d4ac586497b0642152fde2c682984bfbfe453113

À la première ligne, vous devez mettre la date de l’étiquette. La deuxième ligne sert à spécifier le nom de l’étiquette annotée. La troisième ligne est le message de l’étiquette. Finalement, la quatrième sert à désigner la dernière soumission sur laquelle l’étiquette est attachée. Lorsque que la commande est exécutée, il est possible d’avoir une erreur si vous tentez de créer une étiquette qui existe déjà. Alors, il suffit de supprimer l’étiquette existante et de réessayer la commande.

L’étiquette est corrigée

Comme on peut le voir dans l’image précédente, la soumission inutile a été supprimée et une étiquette annotée a été créée à la date de l’ancienne étiquette. Donc l’historique est complètement conservé.

Si une étiquette du même nom existe sur le serveur, vous devez d’abord la supprimer avec cette commande et ensuite vous pourrez pousser la nouvelle:

git push --delete origin v3.4.0

Il suffit maintenant de répéter ces étapes pour chaque étiquettes. J’espère pour vous qu’elles ne sont pas trop nombreuses. Sinon, il y a toujours moyen de vous simplifier la vie en générant toutes vos commandes avec une commande de la sorte:

git log --tags --simplify-by-decoration --date=iso-local \
  --pretty="format:GIT_COMMITTER_DATE=\"%ad\" GIT_COMMITTER_NAME=\"%an\" GIT_COMMITTER_EMAIL=\"%ae\" git tag --annotate v%S --message=\"Tag the %S release\" \$(git log --pretty=%%P -n 1 %H)"