Kakoha
À proposProjets
CVContact
EN
FR
Kakoha
EN
FR

Dhiaeddine Mokaddem

Programmeur gameplay spécialisé dans les systèmes, l'IA, le multijoueur, la réalité virtuelle, les outils et l'optimisation.

AccueilProjetsCVContact
dhiaeddine.mokaddem@gmail.comLinkedInitch.ioGame Jolt
Tous les projets
Exploration techniqueSimulation physique

Physics from First Principles

Implémenter le mouvement, l'intégration, les collisions, les contraintes et le rendu personnalisé à partir de premiers principes, puis étendre le moteur partagé avec une simulation de chaîne cassable.

Dépôt

Rôle

Programmeur physique et développeur de simulation de chaîne

Moteur

Moteur de rendu Unity avec physique personnalisée

Plateforme

Windows

Équipe

Équipe de 5 personnes

Dates

24 sept.-13 nov. 2025

Résultat

Exploration technique

Ce sur quoi j’ai travaillé

Un moteur physique personnalisé construit dans Unity, utilisé uniquement comme hôte de rendu : aucun Rigidbody, aucun Collider et aucun mouvement simulé par les composants Transform.

  • Au sein d'une équipe de cinq personnes, nous avons développé la représentation partagée des corps rigides, les intégrations d'Euler et de Verlet, la détection et la réponse aux collisions ainsi que les utilitaires mathématiques.
  • Les objets simulés conservent le Transform Unity à la position 0,0,0, la rotation 0,0,0 et l'échelle 1,1,1 ; leur placement visuel est dérivé de l'état personnalisé et de matrices manuelles.
  • J'ai développé l'extension de chaîne cassable avec des corps personnalisés reliés par des ressorts, des masses, des contraintes de distance, des forces de ressort, la gravité, l'amortissement, l'intégration de Verlet et une rupture au-delà de l'extension maximale.
  • Ma démonstration compare quatre chaînes avec des valeurs alpha de 0, 0.75, 1.25 et 2, montrant différentes réactions de relâchement lorsque l'utilisateur tire chaque chaîne au-delà de son seuil.
  • Le projet contient d'autres démonstrations individuelles réalisées par des coéquipiers, présentées séparément comme preuves du moteur partagé et non comme mon travail personnel.

Détails techniques

Programmation

C#

Technologies complémentaires

Custom physics engine, Verlet integration, Position-based constraints

Décomposition du développement

Au cœur des systèmes

01

Fondations du moteur partagé

Nous avons utilisé Unity comme hôte de rendu, mais nous avons implémenté nous-mêmes le mouvement simulé, la détection et la réponse aux collisions, les contraintes, l'intégration et la déformation des maillages. Le travail partagé comprenait les matrices manuelles, les conversions quaternion et Euler, l'état des corps rigides, les intégrateurs d'Euler et de Verlet, les utilitaires de collision, les données de contact et des constantes réutilisables.

02

Sans physique Unity ni mouvement du Transform

Le projet n'utilise aucun composant Unity Rigidbody ou Collider. Les objets simulés conservent leurs valeurs de Transform inchangées ; les positions et rotations personnalisées sont converties en matrices puis rendues directement, séparant l'état mathématique des Transform de la scène Unity.

03

Mon extension de chaîne cassable

J'ai implémenté des corps personnalisés reliés par des ressorts, avec une masse par maillon, la gravité, l'amortissement, l'intégration de Verlet, des contraintes de distance itératives et deux ancrages. Tirer l'extrémité au-delà de l'extension maximale casse la contrainte. Quatre chaînes comparent les valeurs alpha 0, 0.75, 1.25 et 2 ; les valeurs élevées produisent une réaction de relâchement plus forte tandis que alpha 0 bouge relativement peu.

04

Démonstrations supplémentaires réalisées par l'équipe

D'autres membres de l'équipe ont utilisé les fondations du moteur partagé pour la fracture de plaques, la démolition de murs à grande vitesse, la gélatine en corps souple et des simulations de plaques minces. Ces démonstrations montrent l'étendue de l'architecture commune et ne sont explicitement pas présentées comme mes implémentations individuelles.

Problèmes et solutions

Rendre sans déplacer le Transform

Unity s'attend généralement à ce que les objets visibles soient positionnés par les composants Transform.

La simulation stocke séparément la position et la rotation, construit manuellement les matrices de transformation et dessine les maillages à partir de cet état, tandis que le Transform Unity reste inchangé.

Stabiliser des contraintes cassables

Une chaîne doit préserver les distances entre ses maillons sous l'effet de la gravité tout en réagissant clairement lorsqu'elle est étirée au-delà de sa limite élastique.

J'ai utilisé l'intégration de Verlet, des corrections itératives de distance, l'amortissement, des rapports de masse, des extrémités ancrées et un seuil d'extension maximale qui libère l'ancrage final et applique la réaction stockée.

Bilan

Construire la physique à partir d'un état mathématique a rendu explicites les responsabilités de l'intégration, des contraintes, de la réponse aux collisions et du rendu. L'extension de chaîne a montré comment les paramètres du solveur peuvent modifier concrètement le relâchement visible de la tension accumulée.