Introduction
S&Box est officiellement le successeur spirituel de Garry's Mod. Sur le papier c'est rassurant, mais en pratique presque rien n'est compatible : nouveau moteur (Source 2), nouveau langage (C# .NET 9), nouvelle plateforme de distribution (sbox.game), nouvelle architecture (Scene-based, plus de Entity-based). Ce guide t'aide à planifier la transition côté serveur et côté communauté.
Prérequis
- Une communauté GMod active ou un projet de migration
- Un serveur S&Box (chez VeryCloud, idéalement en parallèle de ton GMod pendant la transition)
- Du temps : selon la complexité du gamemode original, comptez plusieurs semaines à plusieurs mois de portage
Étape 1 : Inventaire de l'existant GMod
Avant de migrer, fais l'inventaire de ton serveur GMod actuel :
| Élément GMod | Action de migration |
|---|---|
| Gamemode Lua custom | À réécrire en C# (pas de portage automatique) |
| Addons Workshop | Chercher équivalents sur sbox.game ou créer |
Maps .bsp |
À convertir / refaire dans Hammer S&Box |
server.cfg ConVars |
La majorité n'existent plus |
| Base de données MySQL (MySQLOO, etc.) | Réutilisable telle quelle (driver .NET) |
| ULX/ULib | Reconstruction via le système de claims S&Box |
| FastDL HTTP | Plus nécessaire (packages cloud sbox.game) |
Étape 2 : Ce qui ne se traduit PAS
Lua → C# : aucun outil de conversion automatique fiable. Le code de gameplay est à réécrire intégralement. La logique reste la même (events, hooks, entités) mais l'API change.
Workshop → sbox.game : système différent. Tu ne récupères pas tes addons workshop, tu les remplaces.
net.Send / net.Receive → [Rpc.Broadcast], [Rpc.Owner], [Rpc.Host] en C#.
hook.Add("PlayerSay", ...) → patterns d'events / overrides dans Components C#.
Entités SENT/SWEP → Components attachés à des GameObjects (architecture Scene).
Étape 3 : Ce qui se traduit bien
Concepts : joueurs, équipes, scores, inventaires, économie — tout ça existe sous une forme ou une autre.
Bases de données : ton schéma MySQL/MariaDB reste valide. Tu remplaces juste le driver Lua (MySQLOO/tmysql) par un driver .NET (MySqlConnector, par exemple).
Connaissances admin : bind, scoring, modération, ban/kick, regles de communauté — tout reste pertinent.
Webhook Discord, intégrations externes : code .NET équivalent, juste un autre langage.
Étape 4 : Plan de migration côté serveur
Phase 1 — Setup parallèle (semaine 1)
- Commande un serveur S&Box chez VeryCloud (SboxDev ou Plus selon ta cible)
- Configure le panel Wisp comme décrit dans le tuto "Premiers pas"
- Charge
facepunch.sandboxpour tester - Annonce officiellement à ta communauté le projet de migration
Phase 2 — Portage du gamemode (semaines 2-N)
- Installe les outils dev S&Box (éditeur intégré + Rider/VS)
- Crée un nouveau projet
.sbproj - Réécris les systèmes critiques en priorité : connexion, sauvegarde, économie
- Teste en local avant de déployer
Phase 3 — Beta fermée (1-2 semaines)
- Upload du
.sbprojsur ton serveur S&Box (ou publication privée sur sbox.game) - Invite tes admins et joueurs de confiance
- Identifie les bugs et les manques par rapport à GMod
Phase 4 — Migration officielle
- Annonce la date avec 2-3 semaines d'avance
- Garde le GMod en parallèle 1 mois après l'ouverture S&Box (rétention)
- Transfère les données joueurs si pertinent (exports MySQL → import dans nouveau schéma)
Étape 5 : Transférer les données joueurs
Si tu as une BDD MySQL côté GMod avec progression/stats joueurs, tu peux migrer vers ton nouveau schéma S&Box.
Exemple de pipeline simple :
# Export GMod
mysqldump -u user -p gmod_db players > gmod_players.sql
# Adapter le schema (script SQL manuel a ecrire)
# - Identifiants : Steam ID 32 -> Steam ID 64
# - Nouveaux champs gamemode S&Box
# Import S&Box
mysql -u user -p sbox_db < adapted_players.sql
Côté gamemode S&Box, lis cette table comme tu lirais n'importe quelle BDD depuis du C#.
Étape 6 : Communiquer à la communauté
C'est le plus important. Sans communication, tu perds tes joueurs.
À annoncer clairement :
- Pourquoi tu migres (perfs Source 2, fin de vie GMod, nouvelles fonctionnalités)
- Quand exactement le switch aura lieu
- Ce qui sera conservé (rangs, monnaie virtuelle, etc.)
- Ce qui sera perdu / reset
- Comment installer S&Box pour tes joueurs (Steam, ~20€ à l'époque du lancement)
Discord, post pinned, vidéo récap. Ne sous-estime pas le besoin de pédagogie.
Étape 7 : Garder GMod en parallèle
Tant que ta communauté n'est pas migrée à 80%+, garde le serveur GMod actif. Cohabitation des deux pendant 1-2 mois te donne :
- Un fallback si S&Box pose problème
- Le temps que les joueurs retardataires achètent S&Box
- L'opportunité de comparer en live
Chez VeryCloud, tu peux faire tourner les deux services côte à côte sur le même compte.
Dépannage
"Les joueurs ne veulent pas acheter S&Box"
- Inévitable pour une partie. Communique sur la valeur ajoutée du nouveau serveur
- Garde GMod plus longtemps que prévu si la base ne migre pas
"Mon code Lua est tellement custom que c'est ingérable à porter"
- Réécris les systèmes critiques en C# et accepte de perdre les fonctionnalités secondaires
- Considère que c'est l'occasion de nettoyer la dette technique
"Les performances S&Box sont moins bonnes que GMod"
- Source 2 demande plus de hardware. Monte de plan VeryCloud
- Profile ton code C# (voir le tuto perf S&Box)
Commandes utiles
# Export GMod MySQL
mysqldump -u user -p --single-transaction db_gmod > backup.sql
# Comparer deux schemas (mysqldiff)
mysqldiff --server1=user@gmod_host:port --server2=user@sbox_host:port
# Tester la connexion BDD depuis ton .sbproj en C# (extrait)
# using MySqlConnector;
# var conn = new MySqlConnection(connStr);
Conclusion
Migrer de GMod vers S&Box n'est pas un upgrade, c'est une reconstruction. Le code est à réécrire, les addons à remplacer, les maps à refaire. Mais Source 2 + .NET 9 + asset.party te donnent une base technique 10 ans plus moderne, et c'est l'occasion de repenser ton serveur sans la dette accumulée. Planifie sérieusement, communique avec ta communauté, et garde GMod en parallèle le temps de la transition.
Pour aller plus loin : portage avancé de hooks GMod en patterns C#, monétisation et compliance Steam, observability côté gamemode.


















