Histoire de Bulldozer : Un jeu pour Android réalisé avec Unity

Il y a maintenant un peu moins d’une année j’ai décidé de créer un nouveau jeu vidéo sur mon temps libre. Pour compliquer la chose j’ai pris la décision de documenter chaque étape de la réalisation de ce jeu en réalisant des vidéos accessible à tous sur la plateforme Youtube.

Ce sont déjà 13 vidéos qui expliquent :

  • Les différences entre jeu de société et jeu vidéo
  • La recherche d’idées
  • L’utilisation de 3 tableaux (compétences, idées, objectifs)
  • La réalisation des dessins préparatoires
  • La programmation d’une carte constituée d’hexagones
  • La modélisation d’un Bulldozer
  • La création d’animation sur Blender pour Unity
  • L’intégration des éléments dans Unity
  • La réalisation de test en vue d’améliorer le jeu
  • La création de l’interface utilisateur
  • La publication du jeu sur le Google Play Store
  • La création d’une IA
  • Les principes de la monétisation appliqué à Unity

L’aventure « vidéo créative » a commencée le 25 septembre. Depuis quelque temps j’avais commencer à transcrire le jeu de société « pingouins » en version jouable sur mobile pour pouvoir y jouer partout. J’avais en tête un jeu présentant des « nains mineurs » sur des plaques de lave au fond d’une mine qui se battraient pour obtenir le plus de cristaux… Cette première version n’a jamais officiellement vue le jour. Divers raisons en sont la cause :

  • Les personnages n’étaient pas assez imposant pour rendre bien à l’écran, ce qui les rends indistinguable sur une multitude de cases.
  • L’animation des personnages demandait beaucoup de temps, ce qui est une ressource rare pour un développeur indépendant et seul.
  • La programmation de l’IA demandait des ressources de plus en plus grandes ou des modifications de plus en plus lourdes, dû au choix de conception à la base de la création du jeu.
  • L’ajout d’une boutique en jeu pour vendre des « skins » d’armures pour nos nains aurait demandé presque autant voir plus de temps que de créer l’ensemble du jeu.
  • La quasi impossibilité de rendre le jeu multijoueur, rendu impossible par les choix de conception. Notamment par le fait de ne pas considérer une partie comme une simple succession d’action sur un plateau donné.
Plateau avec des nains

Il y a surement beaucoup d’autres points qui m’ont décidé à arrêter et à reprendre de zéro le développement du jeu, mais j’ai listé les points sur lesquels je me suis amélioré dans la nouvelle version Bulldozer !

Bulldozer le jeu
Le jeu Bulldozer dans sa version du 14 mai 2020

Maintenant que vous connaissez l’histoire qui a permis à « Bulldozer » de voir le jour. Vous pouvez remonter plus haut et regarder mes vidéos ou télécharger le jeu.

YtAutoDark – Publication de la version 2

Youtube ayant mis à jour le code des menus de ses pages, j’ai constaté depuis quelques jours que lorsque mon extension avait terminé d’effectuer l’activation du thème sombre de Youtube, le menu n’était pas fermé automatiquement comme avant.

Après quelques heures à parcourir une nouvelle fois le code HTML du site, je suis parvenu à une nouvelle version qui me semble satisfaisante. Le processus est bien plus lent qu’avant car celui-ci doit attendre le chargement du contenu des menus, arrivé avec le nouveau code de Youtube, ce qui n’était pas totalement nécessaire. J’ai également ralenti un peu l’enchaînement des étapes du processus d’activation du thème sombre, il n’est pas impossible que je le diminue ou le supprime complètement dans les prochaines semaines, une fois que j’aurais l’assurance de la stabilité de cette version.

Côté modification, j’ai également allongé le temps pendant lequel l’extension tente de procéder au changement, celui-ci passe de 10 à 15 secondes, car j’ai constaté des temps de chargement du contenu des menus de plusieurs secondes au moment des tests. Une fois ces 15 secondes écoulées, si le thème sombre n’est pas activé, l’extension repasse sur l’ancienne manière de réaliser l’activation avec une fenêtre de 10 secondes (celle-ci étant toujours fonctionnelle, avec néanmoins le problème cosmétique du menu restant ouvert).

Enfin, dans les modifications non visibles pour l’utilisateur, j’ai ajouté un système de log me permettant de suivre les actions effectuées par l’extension et ainsi de faciliter le débogage en cas de problème. Afin de s’assurer de ne pas conserver les logs activés dans la version publiée de l’extension, j’ai écrit quelques lignes en NodeJs, pour vérifier l’état d’activation des logs et faire échouer l’étape de build si besoin.

La version Chrome a également été mise à jour. Par ailleurs, j’ai constaté par hasard que l’interface Youtube change lorsqu’on navigue en étant connecté avec un compte Google, ce qui n’est pas mon cas, sauf dans mon navigateur professionnel avec mon compte pro. Les menus utilisés par l’extension n’étant pas présent (en tout cas, pas totalement au même endroit), il n’est pas dit que l’extension fonctionne pour les personnes connectées à Youtube. De plus, je me demande si le paramètre du thème n’est pas retenu dans les paramètres liés au compte, dans le cas d’une navigation en mode connecté. Quoi qu’il en soit, ce point n’est pas une priorité pour le moment; j’y jetterais peut-être un œil par curiosité si je décide d’y accorder du temps.

Comme toujours, j’espère que l’extension pourra être utile à ceux qui l’auront installé et qu’elle continuera de fonctionner chez le plus grand nombre, aussi bien qu’elle fonctionne dans mon navigateur. Commentaires et remarques à la suite ou sur Github, et si l’extension vous plaît, 5 petites étoiles sur la page de l’extension font toujours plaisir.

FreshTomato v2020.2

J’ai migré mon router vers la version 2020.2 de FreshTomato. Quelques sueurs froides en essayant de me reconnecter à l’interface d’admin. Le couple login/mot de passe à utiliser cette fois est : root/password.

Idem, si vous n’avez pas changer le nom du compte dans votre configuration, après restauration, il faudra utiliser root à la place de admin.

À première vue, toutes les fonctionnalités que j’utilise semblent fonctionner correctement. Toutefois, comme sur la version précédente, la tentative de création d’une interface sans fil virtuelle, pour la mise en place d’un réseau wifi invité séparé du réseau principal, ne fonctionne pas, car celle-ci conduit à rendre inutilisable l’ensemble des réseaux wifi configurés.

GCP Private Kubernetes cluster for Helm installation of Elasticsearch

In this article, I will list the steps needed to deploy an Elasticsearch cluster on a private Google Cloud Platform (GCP) Kubernetes cluster using Helm, from creating a docker image with Elasticsearch, to the creation of a private Kubernetes cluster and more.

Let’s begin.

Continuer la lecture de « GCP Private Kubernetes cluster for Helm installation of Elasticsearch »

Restreindre les actions d’une clé ssh

Petite découverte qui mérite d’être notée, il est possible d’appliquer des restrictions à une clé SSH sur la machine cible. Dans le fichier authorized_keys, on pourra en particulier restreindre la clé à une IP source, une plage d’IP, ou encore un domaine avec le paramètre from (Voir la documentation pour la syntaxe). Le paramètre command, permet quant à lui de restreindre les possibilités d’exécution de commande en forçant l’exécution de la commande configurée une fois l’authentification réussie. Le résultat de la commande est renvoyé en retour immédiat de la commande ssh. Il existe également un certain nombre d’autres options, par exemple no-port-forwarding ou no-x11-forwarding comme précisé dans le manuel. Voir aussi « Configuring authorized_keys for OpenSSH ».

from="192.168.10.42",command="/bin/date",no-port-forwarding,no-x11-forwarding,no-agent-forwarding ssh-rsa xxxx exemple@unicoda.com