État d'avancement v4 — nuit du 21 → 22 mai 2026
Workspace v4 posé proprement, contenu Flyff Universe extrait, code v21 cloné en référence. Pas encore jouable — vérité brute ci-dessous.
Paliers franchis cette nuit
-
P1
Archivage v3 → VPS
7,6 GB sur
/home/ubuntu/legafly-archives/v3-snapshot-20260521/· SHA256 OK - P2 Clone Community-v21 (référence v21) 475 MB · NukeZero/Community-v21 · C++/MSSQL/Windows · utilisé comme SPEC pas exécutable
- P3 Squelette v4 local 3,9 GB · cherry-pick v3 · drop CFlyff v27
-
P5
Push v4 sur VPS
/home/ubuntu/legafly-v4/· mirror local · pas en prod - P6 Docs critiques V4_VISION · V21_SPEC · INVENTAIRE_HONNETE · CAHIER_DE_BORD
- P7 Showcase v4 deploy Cette page · démontre la matière Universe extraite
-
P8
Stabilisation v4 — drop cherry-pick v3
Code v3 vraiment merdique déplacé vers
_v3_scrap/· v4 part de zéro propre · décidé 2026-05-22 matin - P9 Client Babylon.js from scratch Vite + TS + Babylon · cube 3D rotatif testable sur /play/ · bundle 5 MB (Babylon) + 2 KB (notre code)
-
P10
Serveur Rust from scratch (squelette)
4 crates :
legafly-shared(Mover, Stats, Protocol) +legafly-auth+legafly-gameserver+legafly-cdn·cargo checkvert (7m 08s) -
P11
Ingestion items Universe → Postgres
legafly_v4.items_universe· 21 291 items chargés depuis items.json · table indexée model + lvl_req - P12 Ingestion mobs / skills / maps / quests Réutiliser le pattern items (script Python + COPY Postgres)
- P13 Brancher serveur Rust ↔ Postgres sqlx queries + endpoints REST/WS · port v21 spec progressif
- P14 Client Babylon ↔ serveur (login + scène réelle) Remplacer le cube par un terrain + perso + WSS gameplay
Vrai % global v4 jouable
Safety net
- v3 local intact ·
~/Desktop/legafly-v3/· 9,8 GB · mtime préservé - v3 archive VPS ·
/home/ubuntu/legafly-archives/v3-snapshot-20260521/· 7,6 GB - v4 local ·
~/Desktop/legafly-v4/· 3,9 GB - v4 VPS ·
/home/ubuntu/legafly-v4/· 3,9 GB · workspace, pas prod - Prod live ·
play.legafly.ikrevore.app· v3 du 17 mai · non touchée
Items Flyff Universe extraits du RE
Base d'items résidente en RAM Flyff Universe, extraite via offsets RE le 21 mai 2026. Stride 920 bytes par entrée. Champ 4294967295 = sentinel non-set.
Mobs Flyff Universe
1544 mobs identifiés en mémoire. ID 400xxx-500xxx selon catégorie.
Skills Flyff Universe
1108 skills identifiés. Stride 640 bytes par entrée. Class = job (Vagrant/Mercenary/Acrobat/Assist/Magician/Ringmaster/Billposter/Psychikeeper/Elementor/...).
Maps Flyff Universe
86 maps identifiées. PROPMAP_TXT_xxxxxx.
Quêtes Flyff Universe
686 quêtes référencées (index d'offsets RE — contenu textuel à parser en seconde passe).
Donjons Flyff Universe
49 entrées DUNGEONANDPK_INC.
RE Flyff Universe Mac — résumé
Reverse engineering complet réalisé le 21 mai 2026 sur le client Mac (renderer Chromium, perso Chalgoumi Ringmaster lvl 97).
JobTable décodée (16 entrées, stride 0x78)
| Index | ETC id | Class | Icon | Modèle | Note |
|---|---|---|---|---|---|
| 0 | 10 | Vagrant | Vagrant.png | Mvr_Guidepang.o3d | 1st class |
| 1 | 11 | Mercenary | Mercenary.png | Mvr_McGuidepang.o3d | 2nd class |
| 2 | 12 | Acrobat | Acrobat.png | Mvr_AcrGuidepang.o3d | 2nd class |
| 3 | 13 | Assist | — | Mvr_AsGuidepang.o3d | 2nd class |
| 4 | 14 | Magician | Magician.png | Mvr_MgGuidepang.o3d | 2nd class |
| 10 | — | Ringmaster ← Chalgoumi | Ringmaster.png | Mvr_AsGuidepang.o3d | Assist Master |
| 11 | — | Billposter | Billposter.png | Mvr_AsGuidepang.o3d | Assist Master |
| 12 | — | Psychikeeper | Psychikeeper.png | Mvr_MgGuidepang.o3d | Magician Master |
| 13 | — | Elementor | Elementor.png | Mvr_MgGuidepang.o3d | Magician Master |
Algorithmes confirmés portables
- pBase detection — signature structurelle
Position(+0x48) == Position2(+0x98)+ XOR key V8-random (indépendant de session) - HP / MP lecture —
u32(pbase + 0xAD0/0xAD4) ^ XK(XOR avecoXorValue +0xAB8) - Level / FP / Position / Angle — en clair, offsets fixes
- Player vs Mob —
oPlayerID +0x408 != 0= player ; combo flags+0x0AE4 / +0x0D50 / +0x0DC0 / +0x0DC8 - Class detection —
job_index = (bPropJob_ptr - JT_BASE) / 0x78
Limites honnêtes
- HealthFlat / ManaFlat / FatiqueFlat — encodage Anubis runtime opaque. Bypass possible : observer HP_max au cours du temps.
- BuffList active — pointer
+0x9B8sur Universe = struct graphics state, pas buffs réels. Re-dump avec buff actif nécessaire. - GM detection — pas de pattern statique trouvé. Nécessite sample IRL.
Plan v4 — décisions figées
Triangulation
| Couche | Source | Rôle |
|---|---|---|
| Serveur | Rust v3 réaligné v21 (Community-v21 = spec) | Authoritative, logique gameplay, protocole |
| Contenu | DB Flyff Universe RE'd (26 JSON) + algos runtime | Items, mobs, skills, world, formules |
| Client | Babylon.js + WASM Layer 3 (cherry-pick v3) | Rendu 3D web, crypto assets |
| CFlyff v27 | Shelved (backlog) | Différé par décision user 2026-05-21 |
Décisions LEAD figées
- License GPL-3.0 Community-v21 · OK projet perso/communautaire
- VPS OS · reste Ubuntu 24.04, pas de migration Windows
- Fork littéral Community-v21 · NON (incompatible stack VPS) · spec uniquement
- Drop CFlyff v27 · OUI immédiat
- Domaine prod ·
play.legafly.ikrevore.appinchangé · v4 sur sous-domaine séparé
Pourquoi pas le fork littéral du serveur v21 ?
| Trou | Détail |
|---|---|
| Stack runtime | C++ MSVC + MSSQL 2019 + Visual Studio 2026 (Windows-only) · VPS Linux ne tourne pas natif |
| Statut amont | « Considered EOL; provided as-is for reference » + 1 contributor |
| DB | MSSQL payant / Express 10 GB max · LegaFly v3 utilise déjà PostgreSQL |