Tous mes projets
Projets mis en avant
42: ft_Transcendence
42: ft_Transcendence
Réseau social autour du jeu Pong, revisité en 3D.
Tâches affectées
Tout le jeu : - La logique du jeu dont : - La synchronisation Client/Serveur indépendante du ping - Mise en pause et interruptions - Mode spectateur - Physique de la balle: - Rebondissement selon la zone de contacte de la raquette - Consistance peu importe le ping - Animation en sortie de zone de jeu - Scores - Warmup - Matchmatching selon différents critères - Carte 3D animées configurables dont : - Taille de la zone de jeu - Vitesse de la balle - Taille des raquettes - Contrôles autorisés - Position des scores et des avatars - Positions de la caméra - Matériaux de la zone de jeu - Effet 3D - Arrière plan 3D - Implantation des cartes : - Forest: Une carte pour débutant - Classic: Une carte fidèle au jeu original - Synthwave: Une carte pour un niveau avancé - Différents contrôles: Curseur, Molette, Clavier - Transition de la caméra - L'interface du jeu dont : - Status: Score, Avatar de l'adversaire, Warmup, ... - Paramètres 3D et paramètres du jeu - Mise en pause - Abandon du jeu - Des interfaces de l'application web relatives au jeu dont : - La liste des parties réactive - La page de matchmatching - Status en jeu dans le menu de l'application Tâches réassignées : - Responsivité de l'application - Layouts réutilisables - Peaufinage de l'interface générale de l'application
Points positifs
Utilisable sur GPU médiocre. Jeu relativement complet et bien testé.
Inconvénients
Rendu énergivore sur CPU.
Environnement
42: ft_WebServ
42: ft_WebServ
Serveur web C++ à la Nginx, réalisé sous forme de middleware, from scratch. Avec lecture / écriture de fichier, et CGI. Hautement configurable, et code facilement extensible. Benchmarké et validé par le testeur facultatif fourni.
Tâches affectées
Le cœur du projet : - L'API d'architecture en middleware - Une grande partie de la logique principale définie par la configuration - Les middlewares de parsing des requêtes HTTP - Les middlewares de réponses HTTP - La gestion d'asynchronicité de la lecture et d'écriture avec epoll - La gestion des sockets et de la concurrence - Le traitement en parallèle des requêtes - La fonctionnalité keep-alive du HTTP 1.1 Quelques middlewares applicatif : - Les middlewares de service statique (lecture) dont : - La lecture d'un dossier - La lecture d'un fichier, avec détection du mime-type - Le service d'upload
Points positifs
Très modulable avec sa conception en middleware inspiré de Node.JS, stable.
Environnement
42: ft_Containers
42: ft_Containers
Les conteneurs C++98 from scratch, en language C++98, avec leurs itérateurs respectifs.
Tâches affectées
L'intégralité du projet comprenant les containers : - map - set - vector - stack Leurs itérateurs, itérateurs constants, itérateurs inversés, itérateur inversés constants, suivant une architecture : - De simple array (vector) - De red-black-tree (map) Tous les tests associés, en s'assurant de la conformité avec le standard C++98 des containers originaux. Ceci inclus les leaks, les performances, et les fonctions non membres. Quelques annexes comme std::pair
Points positifs
Réalisé d'une manière extensible en suivant la philosophie DRY.
Environnement
42: ft_Cub3D
42: ft_Cub3D
Jeu avec rendu en raycasting, en language C. Inspiré du concept du premier FPS : Wolfenstein. From scratch.
Tâches affectées
L'intégralité du projet : - Rendu en raycasting optimisé - Différentes textures - Optimisations diverses : - Clipping - Profilling avec gprof - Optimisation du code C à partir du code Assembly - Gestion cohérente des contrôles clavier et souris - Physique élémentaire En bonus : - Déplacement de la vue vertical possible - Saut / Déplacement accroupi - Portes avec ouvertures animées - Canal alpha - Sprites animées et collectibles - Passages secrets
Points positifs
Fortement profilé et optimisé
Inconvénients
Bonus contraignant sur les performances
Environnement
Médias
Borne interactive personnalisable
Borne interactive personnalisable
Borne de quiz et de présentation vidéo configurable. Elle a été réalisée sur du matériel de récupération et un RaspberryPi. Celle-ci a été exploitée Musée de la 2 CV à Troisfontaines.
Tâches affectées
Toutes les parties software du projet : - Développement de l'interface sur Electron : - Interface d'accueil configurable - Lecteur vidéo configurable - Quiz multiples configurables - Leaderboard - Installation et configuration du système : - Calibration manuelle de l'écran tactile - Verrouillage sur l'application (absence d'interface graphique système) - Gestion des plantages avec redémarrage automatique
Points positifs
Environnement d'exécution optimisé
Inconvénients
Mises à jours du software manuelles
Environnement
Application web: Libre LGBT v3
Application web: Libre LGBT v3
Réalisation complète et administration d'un réseau social réactif. Bénévolat. Il a été faite pour être rapide, et en parallèle de mes études en CPGE TSI. Cette section concerne uniquement le développement de la version 3.
Tâches affectées
L'intégralité du projet. On a du côté technique : - Choix des solutions techniques - Développement et mise en ligne, dont la programmation : - D'un système de souscription aux données réactive - Traçage du status en ligne - Chaîne de traitement d'image pour les photos de profil avec ImageMagick - Création initiale d'un système de notification Push et courriel. - Mise en place d'une application Android (Trusted Web Activity) - Protections XSS - Accessibilité aux malvoyants On a également : - Identité graphique - Animation du logo - Animation SVG de présentation - Référencement SEO et marketing passif
Points positifs
Légé, Responsive, Installable (PWA), Accessible
Inconvénients
Vieillissante, Minimaliste, Technologies instables
Environnement
Médias
Projets informatiques
API web: Testeur et simulateur
API web: Testeur et simulateur
Il s'agissait de faire un testeur de bout en bout grâce à un simulateur associé et également réalisé pour le projet ci-dessous.
Environnement
API web: Communication inter-entreprises
API web: Communication inter-entreprises
Ce projet s'appuie sur les deux projets ci-dessous. Il s'agissait d'ajouter une API web standard sur une API réseau interne.
Environnement
Librairie C#: Conversion de messages binaire ↔ JSON
Librairie C#: Conversion de messages binaire ↔ JSON
Il s'agissait de corriger et refactorer une librairie C# qui permettait de manipuler et particulièrement de convertir un message au format interne au format standardisé JSON afin de pouvoir communiquer ultérieurement avec des partenaires. Les difficultés étant qu'il n'y avait pas d'outil mature de débogage pour le format interne, et que le code original était de la programmation spaghetti, ce que j'ai corrigé en orienté objet. Cela a permis une gestion propre et quasi sans bug de la manipulation des messages.
Environnement
API réseau: Exposition de fonction interne
API réseau: Exposition de fonction interne
Il s'agissait de corriger et mettre en place le chiffrement TLS sur une ébauche. Ce refactoring inclut notamment la logique asynchrone de gestion des clients, qui en fut une partie majeure.
Environnement
Application web: Radio I|O
Application web: Radio I|O
J'ai participé à une start-up de streaming de radio en cours de développement. J'ai eu un rôle polyvalent dont du consulting cloud et multimédia pour le traitement et la distribution efficace du son.
Environnement
Site web: Ce portfolio
Site web: Ce portfolio
Celui-ci démontre mes différentes compétences. Il partage la même base de code que la version 4 de Libre LGBT qui est encore en développement.
Launcher: Jeux vidéos Tremulous & variantes
Launcher: Jeux vidéos Tremulous & variantes
Launcher réalisé sur un backend Rest et une interface Web grâce au framework Tauri. Son objectif est d'apporter une gestion simplifiée des différents forks du jeu, et mettre en commun les différentes configurations ainsi que les cartes de jeu.
Médias
Logiciel: Music2DMX
Logiciel: Music2DMX
Lecteur de musique de DJ avec Lightjockey automatique. Il s'agit concrètement d'un projet qui contrôle une des projecteurs prédéfinis (deux spots RGB + un derby) par rapport à une musique choisie sur le volet, à travers le protocole DMX. Il a été réalisé pour mon usage personnel ; le code est privé. Un aperçu graphique de la musique en cours est de plus fourni.
Application web: Libre LGBT v4
Application web: Libre LGBT v4
La future version de Libre LGBT a été démarré. Elle a pour objectif d'être bien plus indépendant des infrastructures tiers. Par cela, on entend qu'elle n'utilisera plus les courriels pour valider les comptes, et qu'elle sera décentralisée, lui permettant de continuer à fonctionner même lors d'attaques DDOS. Pour ce faire, j'ai choisi la base de données décentralisée en pair à pair GunDB, combinée avec un front React.JS et MUI, sur une base de framework Next.JS.
Médias
42: ft_Transcendence
42: ft_Transcendence
Réseau social autour du jeu Pong, revisité en 3D.
Tâches affectées
Tout le jeu : - La logique du jeu dont : - La synchronisation Client/Serveur indépendante du ping - Mise en pause et interruptions - Mode spectateur - Physique de la balle: - Rebondissement selon la zone de contacte de la raquette - Consistance peu importe le ping - Animation en sortie de zone de jeu - Scores - Warmup - Matchmatching selon différents critères - Carte 3D animées configurables dont : - Taille de la zone de jeu - Vitesse de la balle - Taille des raquettes - Contrôles autorisés - Position des scores et des avatars - Positions de la caméra - Matériaux de la zone de jeu - Effet 3D - Arrière plan 3D - Implantation des cartes : - Forest: Une carte pour débutant - Classic: Une carte fidèle au jeu original - Synthwave: Une carte pour un niveau avancé - Différents contrôles: Curseur, Molette, Clavier - Transition de la caméra - L'interface du jeu dont : - Status: Score, Avatar de l'adversaire, Warmup, ... - Paramètres 3D et paramètres du jeu - Mise en pause - Abandon du jeu - Des interfaces de l'application web relatives au jeu dont : - La liste des parties réactive - La page de matchmatching - Status en jeu dans le menu de l'application Tâches réassignées : - Responsivité de l'application - Layouts réutilisables - Peaufinage de l'interface générale de l'application
Points positifs
Utilisable sur GPU médiocre. Jeu relativement complet et bien testé.
Inconvénients
Rendu énergivore sur CPU.
Environnement
42: ft_WebServ
42: ft_WebServ
Serveur web C++ à la Nginx, réalisé sous forme de middleware, from scratch. Avec lecture / écriture de fichier, et CGI. Hautement configurable, et code facilement extensible. Benchmarké et validé par le testeur facultatif fourni.
Tâches affectées
Le cœur du projet : - L'API d'architecture en middleware - Une grande partie de la logique principale définie par la configuration - Les middlewares de parsing des requêtes HTTP - Les middlewares de réponses HTTP - La gestion d'asynchronicité de la lecture et d'écriture avec epoll - La gestion des sockets et de la concurrence - Le traitement en parallèle des requêtes - La fonctionnalité keep-alive du HTTP 1.1 Quelques middlewares applicatif : - Les middlewares de service statique (lecture) dont : - La lecture d'un dossier - La lecture d'un fichier, avec détection du mime-type - Le service d'upload
Points positifs
Très modulable avec sa conception en middleware inspiré de Node.JS, stable.
Environnement
42: ft_Containers
42: ft_Containers
Les conteneurs C++98 from scratch, en language C++98, avec leurs itérateurs respectifs.
Tâches affectées
L'intégralité du projet comprenant les containers : - map - set - vector - stack Leurs itérateurs, itérateurs constants, itérateurs inversés, itérateur inversés constants, suivant une architecture : - De simple array (vector) - De red-black-tree (map) Tous les tests associés, en s'assurant de la conformité avec le standard C++98 des containers originaux. Ceci inclus les leaks, les performances, et les fonctions non membres. Quelques annexes comme std::pair
Points positifs
Réalisé d'une manière extensible en suivant la philosophie DRY.
Environnement
42: ft_Push_Swap
42: ft_Push_Swap
Un exercice sur la complexité.
42: ft_Philosophers
42: ft_Philosophers
Une approche du threading une fois avec les mutex, une fois avec les sémaphores. Le projet est inspiré du problème original du même nom.
42: ft_MiniShell
42: ft_MiniShell
Un shell allégé, from scratch.
42: ft_Services
42: ft_Services
Mes propres conteneurs Docker basés sur Alpine Linux, déployés sur Kubernetes, et routés avec MetalLB.
42: ft_LibASM
42: ft_LibASM
Une librairie écrite en assembly. Elle contient une fonction atoi personnalisée acceptant un nombre dans une base donné.
42: ft_Cub3D
42: ft_Cub3D
Jeu avec rendu en raycasting, en language C. Inspiré du concept du premier FPS : Wolfenstein. From scratch.
Tâches affectées
L'intégralité du projet : - Rendu en raycasting optimisé - Différentes textures - Optimisations diverses : - Clipping - Profilling avec gprof - Optimisation du code C à partir du code Assembly - Gestion cohérente des contrôles clavier et souris - Physique élémentaire En bonus : - Déplacement de la vue vertical possible - Saut / Déplacement accroupi - Portes avec ouvertures animées - Canal alpha - Sprites animées et collectibles - Passages secrets
Points positifs
Fortement profilé et optimisé
Inconvénients
Bonus contraignant sur les performances
Environnement
Médias
Jeu vidéo: Fork de Tremulous
Jeu vidéo: Fork de Tremulous
Amélioration d'un jeu Open-Source à travers mon fork. On y retrouve notamment une refonte de l'interface en HD, un nouveau système de police d'écriture dont une par clan, et le support du gamepad. Toutes ces modifications sont amenées à être ajoutée sur le jeu StellarPrey de la communauté GrangerHub.
42: ft_Server
42: ft_Server
Une approche de la conteneurisation avec Docker.
42: ft_Printf
42: ft_Printf
La fonction printf from scratch, recopiant les comportements indéfinis de MacOS.
42: ft_Get_Next_Line
42: ft_Get_Next_Line
Une fonction pour lire un file descriptor, ligne par ligne. Interdiction de lire plus que nécessaire (lseek est interdit). La taille de tampon est configurable.
42: FlipScreen (GameJam)
42: FlipScreen (GameJam)
Sur le thème imposé, You are the final Boss, j'ai proposé un jeu vidéo réalisé en deux jours. Le vrai joueur se trouvant du côté du Boss, les contrôles ont été permutés. Il a été fait avec la librairie JavaScript Phaser.
42: LibFT
42: LibFT
La librairie initiale pour les prochains projet de l'école. On y retrouvera notamment des fonctions unix, réécrites from scratch.
Présentation web: L'école 42
Présentation web: L'école 42
Présentation web de l'école 42 réalisée pour la journée des anciens.
Borne interactive personnalisable
Borne interactive personnalisable
Borne de quiz et de présentation vidéo configurable. Elle a été réalisée sur du matériel de récupération et un RaspberryPi. Celle-ci a été exploitée Musée de la 2 CV à Troisfontaines.
Tâches affectées
Toutes les parties software du projet : - Développement de l'interface sur Electron : - Interface d'accueil configurable - Lecteur vidéo configurable - Quiz multiples configurables - Leaderboard - Installation et configuration du système : - Calibration manuelle de l'écran tactile - Verrouillage sur l'application (absence d'interface graphique système) - Gestion des plantages avec redémarrage automatique
Points positifs
Environnement d'exécution optimisé
Inconvénients
Mises à jours du software manuelles
Environnement
Application web: Libre LGBT v3
Application web: Libre LGBT v3
Réalisation complète et administration d'un réseau social réactif. Bénévolat. Il a été faite pour être rapide, et en parallèle de mes études en CPGE TSI. Cette section concerne uniquement le développement de la version 3.
Tâches affectées
L'intégralité du projet. On a du côté technique : - Choix des solutions techniques - Développement et mise en ligne, dont la programmation : - D'un système de souscription aux données réactive - Traçage du status en ligne - Chaîne de traitement d'image pour les photos de profil avec ImageMagick - Création initiale d'un système de notification Push et courriel. - Mise en place d'une application Android (Trusted Web Activity) - Protections XSS - Accessibilité aux malvoyants On a également : - Identité graphique - Animation du logo - Animation SVG de présentation - Référencement SEO et marketing passif
Points positifs
Légé, Responsive, Installable (PWA), Accessible
Inconvénients
Vieillissante, Minimaliste, Technologies instables
Environnement
Médias
Localisation: Marche piétonne connecté
Localisation: Marche piétonne connecté
Projet des concours de la CPGE TSI. L'idée est de fournir des panneaux directionnels dynamiques selon la destination souhaitée par l'utilisateur. La destination sera alors dynamiquement inscrite sur une flèche pré-orienté, par la présence de l'avatar de celui-ci, permettant l'usage concourent à plusieurs utilisateurs.
Robot «fil d'Ariane»: Rex
Robot «fil d'Ariane»: Rex
Un robot de concours programmé en sept jours pour sortir d'un labyrinthe. J'ai été le seul candidat proposant un algorithme auto-alignant le robot sur les cases. Cela m'a donné un avantage considérable lorsque le labyrinthe était connu quelques minutes à l'avance, me permettant de programmer mon robot avec des instructions de direction simples. J'ai aussi été le seul à utiliser la LED RGB du robot pour indiquer ses status (en attente de lancement, calibration, en course, terminé). Un algorithme de base suivant la cloison de droite a aussi été développé. J'ai utilisé le capteur de distance ultrason fourni pour regarder, à chaque ouverture se situant la droite de la course du robot, s'il y a des sous-ouvertures, plutôt que de systématiquement rentrer dans celle-ci. Cela m'a fait gagner un temps considérable en compétition.
Médias
Robot éducatif: Coccino
Robot éducatif: Coccino
Projet de mon baccalauréat STI2D. Le projet a été amené à son terme et est fonctionnel. Toutes les images relatives au projet présentent dans la présentation ont été réalisées par mes soins, sur le logiciel Inkscape.
Site web: Présentation de mon fork de Tremulous
Site web: Présentation de mon fork de Tremulous
Site web présentant mon fork bénévole, respectant le thème de celui-ci, lui-même inspiré du thème du jeu original Tremulous.
Projets annexes
Photographie: Ma photo de profil
Photographie: Ma photo de profil
Photographie amateur réalisée avec mon matériel personnel. Développée avec Darktable.
Médias
Logo: Libre LGBT v4
Logo: Libre LGBT v4
Logo de la future version majeure de Libre LGBT. Il s'inspire du précédent, avec un rendu plus sophistiqué.
Médias
Logo: Bastien ADAM
Logo: Bastien ADAM
Mon logo personnel, retrouvable sur mes personnalisations.
Médias
Shader: Électronique Sci-Fi
Shader: Électronique Sci-Fi
Shader réalisé sur une base de bruit Voronoï et la fonction distance de Tchebychev. Il a pour vocation d'être utilisé sur ma refonte du modèle du réacteur du jeu vidéo bénévole StellarPrey / Tremulous.
Médias
Modèle 3D: Refonte d'artéfact du jeu Tremulous
Modèle 3D: Refonte d'artéfact du jeu Tremulous
Modèles réalisés sur le logiciel Blender et textures réalisées sur Substance Painter Student Edition. Ces artéfacts ont pour vocation à être intégrés dans le jeu vidéo bénévole StellarPrey, dont le moteur de jeu est encore en développement.
Trailer vidéo: Libre LGBT
Conclusion vidéo: Libre LGBT
Introduction vidéo: Libre LGBT
Logo: Libre LGBT v2 & v3
Projet: Libre LGBT
Projet: Libre LGBT
Libre LGBT est un réseau social LGBT+. Totalement gratuit, il comporte un forum, un t'chat et une carte interactive. Il fait partie de mes plus gros projets, mais a une particularité majeure : il y a eu beaucoup de versions différentes développées dans le passé. En commençant par PHP, finissant avec Next.JS, et passant par Meteor.JS, c'est le projet sur lequel j'ai le plus appris en pratiquant sur le domaine du web.