Portfolio, un projet de Maxime Gallotta

Le camp, mon portfolio : une forêt en 3D en Three.js et WebGPU qu’on visite à la souris, un téléphone pour tout menu, des saisons et des secrets.

Le camp

Mon portfolio, une forêt qu’on visite à la souris.

Ouvert
depuis juin 2026
Créé par
Maxime, de A à Z
Moteur
Three.js, WebGPU

Un portfolio qu’on ne lit pas, qu’on visite

On glisse la souris pour se promener dans une forêt. Chaque clairière montre une partie de mon travail, et un téléphone façon Animal Crossing remplace tous les menus : la carte, les messages, la météo, les défis, mon passeport.

Le moteur part d’un folio open source, crédité dans le téléphone. La map, les objets, les interactions, l’interface et l’ambiance sonore sont les miens.

Six clairières

La visite part du coin vinyle et suit des sentiers peints à la main dans la texture du terrain. Chaque clairière a son rôle.

Un téléphone pour tout menu

Tab ou le bouton rond le sort : carte de l’île, messages, météo et heure du camp, défis, paramètres, passeport. Sept applis, toutes dessinées pour le site.

Qu’on reste

Pas une vitrine à faire défiler : un endroit où l’on a envie de traîner.

Mes trois règles

Le défi

Montrer des projets sans perdre la balade. Un CV se parcourt en quelques secondes ; un endroit, on s’y promène, on y revient.

Un monde qui vit sans nous

Le jour et la nuit tournent, les saisons suivent le calendrier : neige et guirlandes en hiver, feuilles mortes et citrouilles en automne, papillons et abeilles au printemps. Les sons de la forêt suivent ce que montre l’écran.

Des choses à toucher

Une table de blackjack où l’on s’assoit, un tourne-disque avec trois morceaux composés par Maxime, Alexis et Fabrice, des nénuphars qui sautent, des lettres ANNECY qu’on fait tomber.

Et des secrets

Neuf runes à allumer, des gemmes cachées, des défis qu’on suit dans le téléphone : de quoi revenir.

Léger

Beaucoup de choses à l’écran, peu de travail pour la carte graphique.

Triangles par image, vue d’été : seules les instances autour de la vue restent.

  1. Toute la forêt en un seul dessin : Feuillus, gros arbre, buissons et sapins partagent un mesh instancié ; chaque touffe est un plan découpé par une SDF.
  2. Tous les objets opaques aussi : Troncs, rochers, champignons, nénuphars : une texture de sommets, que le vertex shader relit forme par forme.
  3. Seulement ce qu’on voit : Les instances autour de la vue sont tassées à l’avant du buffer dès qu’elle bouge d’une unité.
  1. Le décor sort de scripts : 15 scripts Python génèrent les objets dans Blender et retirent les faces que la caméra ne voit jamais.
  2. Rien côté processeur : Abeilles, papillons, fumée, cristal : tout bouge dans le shader, aucun calcul par image.
  3. La carte se dessine seule : Le jeu rend lui-même la carte du téléphone, tuile par tuile, depuis l’angle de sa caméra.

Le tour

Neuf vues prises dans le jeu, de jour, de nuit et en hiver.

Aucune retouche : chaque vue sort du canvas du jeu, avec son cycle du jour et ses saisons.

Bilan

Quatre mois et demi, un camp, et pas mal de leçons.

Commits par mois

145 commits · ≈ 30 000 lignes · 41 éléments du monde · 7 applis

Le budget décide de tout

Chaque idée se paie en draw calls. Fusionner, instancier et animer dans le shader m’a permis d’en mettre beaucoup plus que prévu.

Un script vaut mieux qu’un clic

Déplacer une ruche, c’est relancer son script Blender. Rien n’est jamais retouché à la main deux fois.

Le son fait la moitié de l’ambiance

Oiseaux à l’aube, grillons l’été, neige feutrée l’hiver : on sent la saison avant de la voir.

 
 
 

Enline

Enline

Croupier – Jetons –
    Enline

    En lecture –

    MaximeGallotta

    Bienvenue dans mon portfolio de développeur web créatif : un petit camp à explorer, où chaque clairière raconte un bout de mon travail, mes projets, mon parcours et comment me joindre.

    Paramètres

    Le son
    La qualité
    Compatibilité mobile

    Crédits