top of page
Français

Timothé Lafranche

Oh, salut ! C'est gentil à vous de passer par ici.

Je m'appelle Timothé Lafranche.

En plus de la programmation Gameplay, je m'intéresse aussi aux IA des jeux vidéo et à la programmation graphique.

Projets

ExempleMoteur3D.png
Moteur 3D

Work in Progress

Solo

C++ / OpenGL

NetProject.png
Guild Manager

Mars 2026

Solo

C# / .NET / Unity

EcranRavenor.png
Ravenor's Stories

Décembre 2022

Solo

C# / Unity

image176.png
Valley

Juin 2022

Gameplay Programmer

C# / Unity

PlayTheMeca.png
Play the Meca !

Août 2019

Project Manager

C# / Unity

Gameplay Programmer

Aube20Lucioles Fin_edited.jpg
L'Aube des Lucioles

Mai 2019

Game Designer

C# / Unity

Gameplay Programmer

L'Aube des Lucioles

Projet étudiant

Date : Mai 2019  |  Moteur : Unity  |  Rôles : Game Designer, Gameplay Programmer

Lien : https://hermadeus.itch.io/laube-des-lucioles

L’Aube des Lucioles est un Zelda-like développé lors de ma seconde année à Rubika. Le joueur y incarne un paria cherchant à s’échapper discrètement des cavernes dans lesquelles il a grandi. Il pourra alors tenter d'aider les autres parias qu'il rencontrera, ou choisir de privilégier sa propre survie.

 

Le jeu se divise en 2 boucles principales :

  • La première étant l’exploration des cavernes afin de trouver un chemin vers la sortie

  • La deuxième consistant à escorter les compagnons du joueur vers la sortie trouvée

 

De mon côté, je me suis principalement penché sur la question des IAs, que ce soit celle des compagnons ou celle des ennemis.

 

Pour le comportement des compagnons, je me suis concentré sur faire quelque chose de simple pour faciliter leur gestion pendant les phases d’escorte. Le joueur devait être capable de facilement et rapidement donner des indications à ses compagnons en cas de problèmes. Ils étaient alors gérés comme une seule entité, et pouvaient suivre le joueur de près, rester à couvert pour se cacher, ou fuir vers le camp en cas de gros problèmes selon les indications du joueur.

 

Au niveau des ennemis, le jeu étant essentiellement un jeu d’infiltration, il a fallut leur donner un comportement prévisible par le joueur. J’ai alors opté pour une state machine permettant aux ennemis de faire une ronde de garde, suivre un bruit qu’ils avaient entendu, ou poursuivre, et attaquer, une cible repérée, que ce soit le joueur, un des compagnons, ou un ennemi d’un type différent, comme un garde attaquant un des monstres des cavernes. Après plusieurs retours de tests montrant que le joueur se sentait peu en danger, j’ai ajouté un autre comportement demandant à l’IA de rejoindre le camp ennemi le plus proche pour les prévenir. L’alerte donnée, un nouvel ennemi apparaissait à l’endroit où le joueur avait été repéré, rendant son infiltration plus compliquée.

 

PlayTheMeca.png

Play the Meca !

Projet professionnel

Date : Août 2019  |  Moteur : Unity  |  Rôles : Project Manager, Gameplay Programmer

Play the Meca ! est un serious game sur tablette développé par un groupe de 5 étudiants de seconde année de Rubika. Le but du projet était d’aider les formateurs d’un entrepôt automatisé à former les nouveaux arrivants sur 3 pôles de travail. Le jeu étant couplé avec une formation, le but était de se concentrer sur les mises en situation et l'aspect technique.

 

En tant que première expérience comme chef de projet, j’y ai appris énormément sur la gestion d’un projet, mais aussi sur le fait de communiquer les avancées du projet, les problèmes rencontrés, et comment trouver des solutions à ces problèmes.

 

D’ailleurs, il n’a pas fallu attendre longtemps puisque le premier problème est rapidement survenu : le scope. Au départ, il nous avait été demandé de faire 4 pôles de formation sur l’espace de 3 mois. Mais après discussion avec le reste de l’équipe, ce scope nous laissait trop peu de marge de manœuvre en cas de problèmes. Rapidement, j’ai alors discuté avec Décathlon pour trouver une solution, et il a été décidé de retirer le pôle “Conduite de chariot élévateur”, dont la transcription vers un jeu tablette semblait moins intéressante, et de rajouter du temps pour tester et peaufiner les autres pôles.

 

Voyant que l'on arrivait vers la fin du développement du 3e pôle avec un peu d'avance, mais pas assez pour ajouter le 4e pôle, nous avons eu une discussion avec toute l'équipe pour voir ce que l'on pourrait faire de ce temps gagné. Lors du développement, nous avions créé un éditeur de niveau dans Unity pour nous faciliter la tâche lors des tests et des équilibrages sur chacun des pôles. Nous avons aussi mis en avant que le but du projet étant d’aider les formateurs dans leurs formations, le plus pratique pour eux serait de pouvoir créer de nouveaux niveaux afin de les faire évoluer avec leurs formations. J’ai alors proposé à Décathlon d'utiliser le temps qu’il nous restait pour leur donner la possibilité de créer leur propre niveau, ce qui a rapidement été accepté.

 

Ces quelques mois m’ont énormément appris, que ce soit sur la gestion d’une équipe en elle-même, sur les communications entre plusieurs équipes, et surtout sur l’importance de se faire comprendre entre différentes équipes qui n’ont pas les mêmes domaines d’expertise.

 

ExempleMoteur3D.png

Moteur 3D

Projet personnel

Date : Work in Progress  |  Langage : C++

​Lien : https://github.com/Linkazer/Moteur3D

Ce projet de Moteur 3D utilisant OpenGL m'est venu en cherchant à étendre mes compétences dans le domaine de la programmation de jeux vidéo. Je me suis trouvé un grand intérêt dans la programmation graphique, et ce projet est né quand je me suis dit que j'allais commencer par les bases.

La génèse

N'ayant que des connaissances basiques sur comment les jeux sont rendus, j'ai d'abord commencé à suivre un cours sur comment créer un moteur de rendu basique sans passer par des librairies comme OpenGL ou DirectX.

Cela m'a permis d'approfondir mes connaissances sur pourquoi chaque Mesh est divisé en multiples triangles, et m'a permis de découvrir l'origine des différentes matrices qui sont utilisées par les moteurs 3D et le fonctionnement d'un rasterizer.

Le projet OpenGL

Maintenant que j'avais les bases, je me suis attaqué à un cours complet d'OpenGL.

J'y ai appris les bases du fonctionnement d'OpenGL, ce qui compose un modèle complet (mesh, matériaux, textures, ...), l'utilisation des différents buffers, la création de shaders en GLSL, la création d'un système d'espaces et de coordonnées et les différentes matrices à utiliser, et le modèle de lumière Phong.

C'est avec toutes ces connaissances que j'ai attaqué le développement d'un moteur 3D à ma sauce que vous pouvez retrouver ici.

La suite du projet

Pour la suite, il me reste encore pas mal de leçons à suivre, comme des fonctionnalités plus avancées d'OpenGL ou de meilleures techniques pour la lumière.

Et une fois ce projet terminé, j'ai encore une longue liste d'autres sujets à aborder.

NetProject.png

Guild Manager

Projet personnel

Date : Mars 2026  |  Framework : C# / ASP .NET Core / Unity

​Lien : https://github.com/Linkazer/GuildManager

Guild Manager est un projet mélangeant API REST développée avec ASP.NET Core et une application Unity.

Le but de ce manager est de pouvoir gérer une guilde en ajoutant de nouveaux aventuriers, modifiant les aventuriers existants, ou en supprimant les aventuriers obsolètes.

Architecture du projet

Le projet se divise en 2 projets :

  • API REST pour la partie back-end

  • Application Unity pour la partie front-end

API REST

Architecture :

  • Controllers : Gère les requêtes HTTP. Récupère les données sous forme de DTO et les envois au service sous forme de Command

  • Services : Récupère les Command, les mappe en Domain et applique la logique métier, puis les envoi au Repositories sous forme de Model

  • Repositories : Gère la base de donnée à partir du Model reçu

Flux de données :

DTO (Controller) -> Command (Service) -> Domain (Logique métier) -> Model (Persistence)

​Fonctionnalités

API REST

  • Gestion des Personnages (Création, Récupération, Modification, Suppression)

  • Récupération des données persistantes (Equipement, Race, Job)

Application Unity
  • Récupération des données persistantes au lancement

  • Récupération et affichage des Personnages

  • Création de Personnage

  • Modification de Personnage

  • Suppression de Personnage

image176.png

Valley

Projet étudiant

Date : Juin 2022  |  Moteur : Unity  |  Rôles : Gameplay Programmer

Dans Valley, vous incarnez le manager d'un parc naturel dont la mission est de préserver la vallée et son écosystème tout en la rendant attrayante pour les visiteurs qui arrivent dans la vallée.

 

Ayant rejoint ce projet pour le challenge qu'il proposait au départ au niveau de ses nombreuses IAs (comme le comportement des visiteurs ou des animaux de la vallée), je me suis découvert un grand intérêt pour la création de systèmes complexes pendant le développement. Aussi, en plus des IA, je me suis concentré sur la création des différents systèmes présents dans le jeu, que ce soit la gestion de la satisfaction des visiteurs ou les interactions entre les visiteurs et la faune de la vallée.

 

Mais le système sur lequel j’ai le plus apprécié travailler puisqu’il se mélangeait parfaitement avec les différentes IAs du jeu, c’est l’écosystème. Dans Valley, le but étant d’attirer les visiteurs et de leur faire découvrir chaque recoin de la vallée, il faut aussi que le joueur prenne en compte l’impact que ces visiteurs peuvent avoir sur l'environnement de cette dernière. Avoir des attroupements de visiteurs bruyants fera fuir les animaux, et jeter des déchets au fil de leur visite fera faner les arbres, ce qui rendra les visiteurs peu satisfaits de leur visite.

 

Au final, ce projet aura été l’un des projets sur lequel j’ai le plus aimé travailler, principalement grâce à la complexité des systèmes demandés par les game designers.

 

EcranRavenor.png

Ravenor's Stories

Projet personnel

Date : Décembre 2022  |  Moteur : Unity

 

Ravenor's Stories est un dungeon crawler qui reprend les principes des jeux de rôles plateaux comme HeroQuest ou Dungeon Saga. Vous y contrôlez un groupe de 4 aventuriers partant à la recherche d'un artéfact dans une ancienne ruine elfique. Du moins, c'était le plan avant que vous ne rencontriez la liche qui s'est approprié les lieux.

 

De base, le projet devait juste me servir à me familiariser avec des IAs de RPG au tour par tour, avec une IA facilement modulable capable de lancer certaines compétences selon plusieurs critères comme les points de vie d’un allié pour un sort de soin, le nombre d’ennemis dans une zone pour un sort de dégât, ou la quantité d’armure de la cible pour savoir si une attaque ignorant l’armure ou détruisant ce qu’il reste d’armure était le plus intéressant, etc...

 

Ayant aussi créé des personnages contrôlables pour pouvoir tester les IAs, je me suis dis que ça serait une bonne idée d’en faire un jeu complet, ce qui m’a fait passer de simples arènes de combat à un dungeon crawler dans le style des jeux de rôles plateaux qui m’ont toujours plu.

 

bottom of page