chore(game-server): merge main (emulator fixes: contracts, shop, fortuna, friends, admin, presence) #16
@@ -0,0 +1,93 @@
|
||||
# ProspectServerSwitcher
|
||||
|
||||
Petit utilitaire **multi-OS** (Linux/Proton + Windows) pour pointer un client
|
||||
*The Cycle: Frontier* vers un serveur, importer le certificat, et lancer le jeu.
|
||||
|
||||
## Pourquoi
|
||||
|
||||
L'agent Prospect (`Prospect.Agent.dll`, injecté par `Prospect.Client.Loader.exe`)
|
||||
hooke l'URL de l'API PlayFab et la remplace par le contenu de **`backend.txt`**,
|
||||
placé à côté de l'exécutable du jeu (`Prospect/Binaries/Win64`). S'il est absent,
|
||||
l'agent retombe sur `https://127.0.0.1:8443`.
|
||||
|
||||
**Tout l'aiguillage du client tient donc dans cette seule valeur.** Cet outil ne fait
|
||||
essentiellement qu'écrire le bon `backend.txt` — plus quelques commodités (cert, launch).
|
||||
|
||||
## Serveurs (presets)
|
||||
|
||||
Les presets utilisent les **domaines publics** pour que la même cible marche pour
|
||||
tout le monde (le DNS résout vers l'IP publique pour les amis, et le certificat TLS
|
||||
unifié couvre les deux hostnames) :
|
||||
|
||||
| Preset | URL |
|
||||
|-----------|----------------------------------|
|
||||
| `prod` | `https://tc.nfteam.ovh:8443` |
|
||||
| `preprod` | `https://rd-tc.nfteam.ovh:8444` |
|
||||
|
||||
> **Sur le même LAN que le serveur**, ajoute une entrée hosts pour éviter le hairpin NAT :
|
||||
> ```
|
||||
> 192.168.1.136 tc.nfteam.ovh
|
||||
> 192.168.1.136 rd-tc.nfteam.ovh
|
||||
> ```
|
||||
|
||||
## Utilisation
|
||||
|
||||
### Menu interactif
|
||||
Lance le binaire sans argument :
|
||||
- **1** : définir le dossier du jeu (`…/Prospect/Binaries/Win64`) — mémorisé
|
||||
- **2/3** : basculer sur PROD / PREPROD
|
||||
- **4** : URL personnalisée
|
||||
- **5** : importer un certificat (`.crt`)
|
||||
- **6** : lancer le jeu
|
||||
- **0** : quitter
|
||||
|
||||
### En ligne de commande (scriptable)
|
||||
```
|
||||
ProspectServerSwitcher --folder "<...>/Prospect/Binaries/Win64" --set preprod
|
||||
ProspectServerSwitcher --set prod
|
||||
ProspectServerSwitcher --set https://mon-serveur:8443 # URL libre
|
||||
```
|
||||
|
||||
> ⚠️ `backend.txt` n'est lu qu'**au démarrage** du loader → relance le jeu après un switch.
|
||||
> Le serveur ciblé doit **tourner** (conteneurs on-demand `the-cycle-api` / `the-cycle-api-rd`).
|
||||
|
||||
## Certificat
|
||||
|
||||
- **Windows** : import automatique dans *Autorités de certification racines de confiance*
|
||||
(utilisateur courant).
|
||||
- **Linux/Proton** : le certificat doit être approuvé **dans le préfixe Wine** du jeu.
|
||||
L'outil détecte le préfixe Proton de l'app `868270` et affiche la commande prête :
|
||||
```
|
||||
WINEPREFIX="…/compatdata/868270/pfx" wine certutil -addstore -f Root "certificate.crt"
|
||||
```
|
||||
|
||||
## Lancement
|
||||
|
||||
- **Windows** : démarre `Prospect.Client.Loader.exe` depuis le dossier du jeu.
|
||||
- **Linux/Proton** : passe par Steam (`steam steam://rungameid/868270`) — le loader doit
|
||||
tourner dans le préfixe Proton.
|
||||
|
||||
## Réglages
|
||||
|
||||
Le dossier du jeu est mémorisé dans
|
||||
`…/ApplicationData/ProspectSwitcher/settings.json`
|
||||
(`%AppData%` sous Windows, `~/.config` sous Linux).
|
||||
|
||||
## Build / publication
|
||||
|
||||
Projet console **net8.0** (cross-platform, `InvariantGlobalization`), jamais buildé par
|
||||
la CI serveur (Linux).
|
||||
|
||||
```bash
|
||||
# build simple
|
||||
dotnet build src/Prospect.Client.Config -c Release
|
||||
|
||||
# binaires autonomes single-file (aucun .NET requis chez l'utilisateur)
|
||||
dotnet publish src/Prospect.Client.Config -c Release -r win-x64 --self-contained \
|
||||
-p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -p:EnableCompressionInSingleFile=true
|
||||
dotnet publish src/Prospect.Client.Config -c Release -r linux-x64 --self-contained \
|
||||
-p:PublishSingleFile=true -p:EnableCompressionInSingleFile=true
|
||||
```
|
||||
|
||||
Les binaires publiés sont distribués via la release Gitea **`friends-client`**
|
||||
(`ProspectServerSwitcher.exe` pour Windows, `ProspectServerSwitcher-linux-x64` pour Linux).
|
||||
Reference in New Issue
Block a user