Activités

Dans le cadre de mes activités professionnelles, j'utilise un large éventail de produits. Respectant des obligations strictes en matière de confidentialité, je me limite ici aux outils que j'utilise à titre privé. Actuellement, je me consacre à la fabrication de divers outils, et j'ai le plaisir de fournir un aperçu concis de ces créations, ainsi que d'outils connexes et de divers prototypes.

SwissLotto 5 (2024)

Étant donné que Microsoft a décidé de mettre fin au support de Xamarin Forms ainsi que de Visual Studio pour macOS, et que je souhaitais fournir une version pour les utilisateurs d'iPhone, j'ai opté pour la plateforme React Native avec la couche de développement Expo. Cette solution, conçue par Facebook pour permettre le développement d'applications mobiles en utilisant JavaScript/TypeScript, m'a semblé être un choix évident en 2024.

React Native traduit le code JS/TS en code binaire à l'aide du compilateur Hermes. Le résultat lors du passage d'Android à iOS est tout simplement parfait. Le code de l'application peut contenir des marquages spécifiques à chaque plateforme, ce qui facilite grandement l'adaptation aux deux environnements. De plus, Expo offre une couche de débogage très agréable et une vitesse de déploiement qui surpasse toutes les alternatives. Aucune des plateformes concurrentes ne propose cela, ce qui constitue un gain de temps inestimable pour le développeur.

Pour donner une idée de l'échelle, la version 5 a débuté mi-janvier 2024 et a été publiée sur le Play Store ainsi que sur l'App Store le 12 mai 2024. À noter que j'ai principalement travaillé sur ce projet le soir et quelques week-ends, ce qui représente environ un mois de codage et deux semaines supplémentaires pour stabiliser certains aspects des projets annexes qui communiquent avec cette application.

Version Android

Version iOS

Unity 3D/C# prototypes

En 2023, j'ai élaboré deux prototypes pour explorer l'utilisation de Unity 3D dans le développement de jeux vidéo. Ce projet a nécessité de nombreuses itérations pour parvenir à des résultats optimaux.

Mon processus implique l'utilisation de Blender pour modéliser les éléments en 3D, que j'intègre ensuite dans Unity. J'emploie un système de squelette 3D ainsi que des animations exportables pour animer les personnages. Par exemple, le gobelin, en tant qu'ennemi, est doté d'un système de déplacement pathfinding et d'une intelligence artificielle intégrée dans Unity 3D pour gérer les collisions et les itinéraires.

Le deuxième prototype est à la fois un plugin pour Unity 3D et un générateur de labyrinthes 3D intégré au jeu. Son concept repose sur la génération dynamique du labyrinthe sous forme d'une grille avec des valeurs représentant chaque type de pièce ainsi que les éléments de décors. Cette grille est générée par l'instance du jeu qui héberge la partie, c'est-à-dire celui qui crée la salle de jeu. Lorsque les participants rejoignent la partie et entrent dans la salle, le serveur transmet cette grille aux clients pour qu'ils puissent reproduire le labyrinthe et les décors de manière identique. Une fois cela effectué, le jeu peut commencer.

Ce prototype vise à me permettre de maîtriser l'utilisation des systèmes intégrés dans Unity 3D pour créer des composants personnalisés, ainsi qu'à expérimenter la communication en réseau pour les jeux multijoueurs.

SwissLotto 4 (2019 à 2024)

Cette version est un virage vers un langage de programmation que je pratique depuis plus de 10 ans et qui répond aujourd'hui parfaitement à la conception d'application mobile. J'ai réécrit l'ensemble du logiciel avec comme base de développement Xamarin en C# afin de fournir une véritable intégration native sur l'environnement Android.

Voici quelque capture d'écran de la version durant sa phase de développement:

Ecran d'accueil

Liste et édition de favoris

Vérification des résultats

Calendrier natif pour la sélection de la date du tirage

PHP-Crawler - (Updated 08.12.2023)

Ce projet a pris son origine dans le cadre du projet SwissLotto, visant à moderniser intégralement le système de récupération automatique des résultats. Il se présente comme un outil dédié à l'automatisation de l'acquisition de données sur internet.

Son architecture repose sur une série de configurations YAML décrivant la structure des données à enregistrer dans la base de données. Chaque propriété à renseigner est associée à un emplacement spécifique sur la ou les pages web où la récupération est souhaitée. Le système inclut également un langage pseudo-syntaxique de pilotage, facilitant la conversion et le retraitement automatique des données extraites.

Version 2.. développé en utilisant les frameworks Laravel 10.* et React/Redux.

     

     

  

Version 1.. développé avec les frameworks Laravel 5.8 et Angular 6.

     

PHP-DataStore

Comme dans le projet précédent, PHP-DataStore est spécifiquement élaboré pour répondre à une nouvelle fonctionnalité intégrée dans le logiciel SwissLotto. L'objectif principal est de fournir aux utilisateurs la possibilité de sauvegarder leurs favoris d'une version à l'autre et de les transférer entre plusieurs périphériques. L'intégralité du système repose sur un mécanisme d'identification sécurisé, garantissant un accès fiable et sécurisé aux données des utilisateurs.

Version 2.. développé en utilisant les frameworks Laravel 10.* et React/Redux.

     

Prototype de jeu vidéo (avec Godot Engine)

Pour débuter dans le monde du jeu vidéo j'ai commencé par réaliser un prototype de jeu 2,5D qui comprend un niveau et plusieurs personnages pilotables depuis au moyen d'un Joystick virtuel. Le jeu reproduit le principe de fonctionnement du jeu Brawlstar. Pour réaliser ce prototype, j'utilise l'environnement de développement de jeux vidéo GodotEngine. Pour la modélisation des éléments 3D, j'utilise le logiciel Blender.

Prototype

Texture Builder

Cet outil permet la génération de dictionnaire d'image utilisable pour la réalisation de pièce de route dans un jeu vidéo.

Les images sont en suite utilisable directement dans Blender.

Puis après exportation, les pièces 3D sont importées dans Godot Engine.