Voici une partie de mes travaux.
Vous pouvez cliquer sur l’un d’eux pour en savoir plus.
Title
x
To view this video please enable JavaScript, and consider upgrading to a web browser that supports HTML5 video
Bumblebee
TapeBoy
Space patrol
Walkboy
DownThere
Quiet heights
A good plane
BloodyDates
RoomB
Majjam
2024-26 - Musical MMO - Gameplay programmer
L'aventure multijoueur dans laquelle la musique est magique
CDI (en cours) avec une équipe d'une vingtaine de personnes en production sur Unreal(C++).
Réalisation d'un framework permettant d'itérer rapidement sur des concepts de mini-jeux en réseau. Travail sur les 3C avec GAS, et sur les interactions avec les éléments de jeu en intégrant la notion musicale. Implémentations de briques de jeu répliquées (avec de la prédiction) permettant aux designers de créer des expériences facilement.
- Implémentation de systèmes et briques de jeu en réseau
- Implémentation d'un système de projectiles en réseau
- Implémentation 3C (Gameplay Ability System)
- Prototypage itératif
Ketchapp
2022-24 - Hyper casual games - Gameplay programmer
Des tas de prototypes et d'outils !
Contrat d'alternance de 2 ans pendant ma formation de Game Design and Programming.
Implémentation et conception de jeux mobile hyper casual en équipe sur Unity(C#) et d'outils destinés à la production.
- Prototypage itératif de multiples concepts de jeu
- Implémentation de systèmes de progression
- Utilisation des SDKs Ironsource et in-house
- Implémentation d'outils d'animation pour la production
BloodyDates
2024 - Tactical RPG - Gameplay programmer
Le premier tactical dans lequel vous choisissez vos ennemis
Projet de fin d'études avec une équipe de 13 personnes (GDP, GD, GA, MS, PRD) sur Unity(C#). Implémentation d'un système de combat et de navigation sur un concept tactical RPG avec une approche "composition" facilitant les itérations sur les mécaniques.
- Implémentation 3C partie combat
- Implémentation Intelligence artificielle
- Implémentation système de pathfinding
Aromaster
2023 - RPG - Gameplay programmer
La chef culinaire de Chefchaouen !
Projet scolaire en équipe de 21 personnes (GDP, GD, GA, GP) sur Unreal(Blueprint). Implementation des 3C et du système de combat.
- Implementation des 3C combat/exploration
- Implementation d'un outil de level design
- Architecture de code approfondie
- Prototypage iteratif
RoomB
2023 - Action narration - Gameplay programmer
Un aspirateur autonome n'est pas aussi insignifiant qu'il n'y parait.
Projet scolaire en équipe de 5 (GDP) sur Unreal (Blueprint). Travail approfondi sur la narration et la cohérence ludo narrative.
- Ecriture et emphase sur la narration
- Design et implémentation 3C
- Modélisation et animation 3D
DownThere
2022 - Wholesome Roguelite - Gameplay programmer
Être barman en enfer n'est pas si commun que ça.
Projet personnel en solo sur Unity (C#). Implementation et polish des 3C, des systèmes de gestions des données (inventaire/shop/sauvegarde de map) et d'un jeu de combinaison de touches.
- Design et implémentation des 3C
- Gestion et optimisation avancée de la mémoire et des données
- Modélisation/Animation 3D
//Unity - C#
//Dialogue node used in the global event system
[CreateAssetMenu(menuName = "DownThere/Node/New dialogue", order = 0, fileName = "dialogue_node_0")]
public class DialogueNode : Node
{
[SerializeField] private ExposedReference customer = default;
[SerializeField] private int timeout = -1;
/// Add this node to a customer
public override void Next()
{
if (PropertyName.IsNullOrEmpty(customer.exposedName))
{
Debug.LogWarning("No customer assigned on DialogueNode : " + name);
return;
}
Customer customerReference = customer.Resolve(Timeline.TimelineHandler.Instance);
customerReference.AddNodes(this);
customerReference.timeout = timeout;
}
/// Execute a given index event behaviour
public bool TryExecute(int index)
{
if(index < nodeEvents.Length && index >= 0)
{
nodeEvents[index].Execute();
index++;
return index < nodeEvents.Length && index >= 0;
}
else
{
return false;
}
}
}
TrackTerre
2022 - Hyper casual game - 3C gameplay programmer
Rasez des planètes jusqu'au dernier buisson !
Jam d'une semaine en équipe de 9 (GDP, GA, MS, GD) Itération et implémentation rapide d'un système de jeu et d'outils de level design basés sur une géométrie sphérique. Concentration d'effets visuels et sonores pour rapidement créer de l'appeal.
- Design et implementation 3C
- Développement rapide et itératif
- Emphase sur la Juiciness
- Optimisation constante des performances
Atomania
2022 - Casual game - 3C gameplay programmer
Faites progresser votre atome dans des mondes infinis !
Projet scolaire en équipe de 7 (GDP, GD). Définition approfondie et programmation des 3C. Approche data et scriptable dans la conception d'outils facilitant la déclinaison de variantes de briques de jeu/niveau.
- Implémentation/polish 3C
- Structure de code avancée
- Approche data/Scriptable objects
[CreateAssetMenu(menuName = "FreeToPlay/Weapon/Weapon setting")]
public class WeaponSettings : ScriptableObject
{
[Header("Values")]
[SerializeField] private string _key = default;
[SerializeField] private string _fullName = default;
[Header("Upgrade datas")]
[SerializeField] private Sprite _icon = default;
[Range(1,2)][SerializeField] private float _damageMultiplicator = 1;
[Range(1,2)][SerializeField] private float _priceMultiplicator = 1;
[Header("Zones & values")]
[SerializeField] private DamageZone[] _zones = default;
[Header("Effects")]
[SerializeField] private ParticleSystem _particles = default;
[SerializeField] private AudioClip _audio = default;
public DamageZone[] Zones => _zones;
public AudioClip Audio => _audio;
public ParticleSystem Particles => _particles;
public string Key => _key;
public string FullName => _fullName;
public Sprite Icon => _icon;
public float PriceMultiplicator => _priceMultiplicator;
public float DamageMultiplicator
{
get
{
int level = PlayerInventory.Instance.WeaponInventory.ItemCount(Key);
return level > 0 ? _damageMultiplicator * level : 1;
}
}
}
MontKee
2022 - Platformer 2D - Gameplay & network programmer
Atteignez le sommet de la montagne en sauvant vos bébés singes !
Projet scolaire en équipe de 12 (GDP, GA, SD).
Définition approfondie et programmation des 3C. Mise en place d'un serveur Express lié à une base de donnée SQL afin d'authentifier et sauvegarder des données de jeu.
- Design et implémentation 3C
- Athentification JsonWebToken
- Outils de requêtes serveur/client
- Portage du jeu sur switch avec les devkits
//Unity - C#
//Async generic query method
private IEnumerator Query(string verb, string url, string body, NetworkEventHandler onComplete = null)
{
JsonWebRequest www = new JsonWebRequest(verb, hostname + url, body, token);
www.timeout = timeout;
using (www)
{
yield return www.SendWebRequest();
if (enableLog)
Debug.Log("request: " + www.url + "\n"+ DebugQuery(www));
onComplete?.Invoke(www);
}
}
//Query response message
private string DebugQuery(UnityWebRequest www)
{
switch (www.result)
{
case UnityWebRequest.Result.Success:
return "server successfully responded";
case UnityWebRequest.Result.ConnectionError:
return "server could not be reached : \n" + www.error;
case UnityWebRequest.Result.ProtocolError:
return "server sent a protocol/internal error : \n" + www.error;
case UnityWebRequest.Result.DataProcessingError:
return "received data error due to corrupted/wrong format: \n" + www.error;
default:
return "uncaught result";
}
}
StarNebula
2021 - Puzzle game - Gameplay programmer - LD - UI/UX
Un casse tête spatial millimétré !
Projet scolaire en solo sur Unity(C#).
Travail de retro-ingénierie basé sur le puzzle game Rush de 2010 m'ayant amené à utiliser la méthode MDA(mechanics, dynamics, aesthetics) pour construire le feeling du jeu.
- Conception d'un outil de level design
- Approfondissement de l'ergonomie/UX mobile
- Optimisation mobile avancée (batching/draw set call/memory)
//Unity - C#
//Optimize DrawCalls/performance by instantiating and batching materials
[RequireComponent(typeof(Renderer))]
public class MatInstance : MonoBehaviour
{
[SerializeField] private string propertyName = "_EmitColor";
[SerializeField] private Color propertyColor = default;
private void Awake()
{
MaterialPropertyBlock propertyBlock = new MaterialPropertyBlock();
propertyBlock.SetColor(propertyName, propertyColor);
GetComponent< Renderer >().SetPropertyBlock(propertyBlock);
}
}
PlayLearner
2021 - 3D runner - Gameplay programmer - UI/UX
Parcourez l'histoire à toute allure en consolidant vos connaissances sur les conflits mondiaux du siècle dernier.
Projet professionnel en équipe de 12 (GDP/GD/GA/SD).
Collection de runners 3D dans lequel le joueur parcourt l'Histoire tout en répondant à des quizzes ludiques sur les périodes de Guerre.
- Système de missions/quêtes et conception d'outils
- Refonte design et programmation UI/UX/Juiciness
//Unity - C#
//Add progress to a mission elimination mission if one is active, if the
//entity killed and weapon used match current mission criterias
private void AddKillProgress(AnimationTriggerEnemy enemy, TargetType type)
{
if (!missionList.ContainsKey(nameof(StepKill)))
return;
string entityKilled = enemy.GetType().Name;
WeaponType weaponType = WeaponManager.Instance.currentWeapon.type;
foreach (StepKill stepKill in missionList[nameof(StepKill)])
{
if (stepKill.Match(entityKilled, weaponType))
{
Debug.Log("Add progress to "+ stepKill.Name);
AddProgress(stepKill);
}
}
}
MeteoRush
2021 - FreeToPlay - Eco GD - UI/UX - Technical Artist
Une météorite qui en veut vraiment à ces vaisseaux...
Projet scolaire en équipe de 8 (GD/GDP) sur Unity(C#).
La conception de ce jeu a été l'occasion de gagner en expérience sur les caractéristiques du FreeToPlay telles que l'UI et la capacité à pouvoir produire rapidement du contenu.
- Shader de skin procédural
- Wireframe complet (UI/UX)
CallStack
2021 - Visual novel - Gameplay programmer - ND - UI/UX
Court jeu narratif basé sur le burnout dans l'industrie du jeu vidéo.
Projet scolaire en équipe de 12 (GD/GA) sur Unity(C#).
Le joueur incarne Alex, développeur de jeux vidéo au beau millieu d'une fin de production mouvementée: le défi de cette production a été de faire ressentir la détresse du personnage à travers la narration, les choix et les mini-jeux proposés.
- Utilisation de l'API Yarn spinner (système dialogue)
- Travail approfondi sur le gamefeel et la juiciness
- Etroite coopération avec les GameArtists
BuddingKnight
2020 - Brawler 3D - Game designer - Gamefeel - UI/UX
Incarnez Richter et protègez vos plantes des pestimonstres !
Projet scolaire en équipe de 5 (GD/GP) sur Unreal(Blueprint).
De la construction de cet hybride brawler 3D/Tower defense est née la volontée de fournir un feeling de jeu calibré à travers les comportements de caméra et les mouvements du joueur.
- Coordination du télétravail pendant la crise sanitaire
- Conception et réglage approfondi du 3C
HulaOhNo
2020 - Beat them all - Gameplay programmer - Game/Level designer
Hawaii est envahi par des aliens: coopérez pour les repousser.
Projet annexe en équipe de 2 (GDP/GD) sur Unity(C#).
Défi technique sur la création du MVP (Minimum viable product) d'un jeu coopératif accessible en 2 mois.
- Système multijoueur
- Conceptions d'outils de scripting/level design
- Coordination du télétravail pendant la crise sanitaire
//Unity - C#
//Utilitary method returning the nearest collider in a given array
public static Collider NearestCollider(Transform origin, params Collider[] args)
{
Collider nearestCollider = null;
foreach(Collider toCompare in args)
{
if(nearestCollider == null ||
Vector3.Distance(origin.position, toCompare.transform.position) <
Vector3.Distance(origin.position, nearestCollider.transform.position))
{
nearestCollider = toCompare;
continue;
}
}
return nearestCollider;
}
NinjaPinguin
2020 - 2D runner - Gameplay programmer - Game designer - UI/UX
Un jeu à bouton unique fou dans lequel vous incarnez un pinguin en quête de vengeance !
Projet scolaire en solo sur Unity(C#).
Le défi technique et créatif basé sur la contrainte de l'input unique m'a permis d'exploiter au maximum le principe des boucles de gameplay basées sur des contextes différents.
- Travail sur les signes et feedback approfondi
- Approfondissement level design 2D runner
Apnos
2019 - Board game - Game designer
Jeu de conquête stratégique couplé à un système de piège unique
Projet scolaire en équipe de 6 (GD).
Première expérience de conception de jeu en équipe pour laquelle l'intention initiale a été de fournir un jeu stratégique accessible à plusieurs couches de pronfondeurs de gameplay.
- Paper design et prototypage rapide
- Travail sur la lisibilité et l'ergonomie
Parso
2021 - Software - Software Programmer
Réalisation d'une application d'édition de JSON
Projet annexe solo en Python.
Conception logicielle et graphique d'un éditeur de fichiers .json à interface simplifiée, à destination de créateurs de contenu de base de données.
- Approfondissement structure de données
- Construction d'une application Tkinter
#Python
#Init the blocks layout/datas displayed
def initBlocks(self):
self.resetScroll()
self.clearblocks()
datas= DataWrapper.fromjson(self.currentDataFile)
self.master.title('Parso - '+ self.currentDataFile)
index = 1
for data in datas['value']:
block = self.addnewblock(data, row = index, container = self.content)
if lIndex >= self.config.getmaxelements():
block.grid_forget()
index += 1
PlayPen
2021 - Application - UI/UX
Application basée sur la technologie du stylo lecteur
Projet professionnel en équipe de 3 (UI/UX, Programmer, Product owner).
Travail de conception d'une interface d'application mobile permettant de conserver et enregistrer des notes à l'aide d'un stylo lecteur.
- Wireframing avancé à partir d'un brief
- Définition de l'UX/Navigation
JukeBook
2019 - AR Book - Producer/Designer
Your book, your story
Conception d'une nouvelle illustrée augmentée à destination des 8-10 ans en collaboration avec l'éditeur Nathan.
Le lecteur devra aider un groupe d'amis à progresser dans les environnements via des énigmes en réalité augmentée combinée à des stickers.
- Premier projet AR
- Utilisation de Vulforia