Q2Pro et l'incompréhension du CVAR sv_downloadserver

Client 31 mars 2021

Vous lancez un serveur pour Quake 2? Bon nombre de personnes (moi y compris) vous conseilleront de ne pas utiliser l’exécutable original, mais de prendre un port existant, comme R1Q2 ou Q2Pro, qui seront bien plus adaptés avec des correctifs de sécurité, en plus d’optimiser les performances du moteur par rapport à nos systèmes d’exploitation actuels.

Cependant, vous allez avoir l’envie de lancer un serveur avec des maps additionnelles, car les maps de base sont sympa 5 secondes, mais il existe tellement d’autres plus marrantes à jouer. « Chouette« , vous vous direz. « Quake 2 supporte déjà le téléchargement de maps depuis le serveur« . Sauf que vous remarquerez que le téléchargement va monter à 6kb/s, 8 si vous êtes vraiment chanceux. Et pour une map qui va faire 720ko, ca risque d’être assez long ; puis, une fois la map téléchargée, vous remarquerez que la prochaine map se lance, recommençant un cycle infernal. Frustrant pour ceux avec qui vous voulez jouer avec. Et si vous gérez un serveur en LAN ou autre, vous allez vite passer comme un incompétent qui n’a pas fait correctement son boulot.

C’est la que Q2Pro (client ET serveur!) propose une CVAR très utile, qui est sv_downloadserver. Vous rentrez la valeur qui est un site web qui contient la map, vous retestez… Et ca ne marche pas.

Tel était ma réaction quand j’ai fait les serveurs BaseQ pour Quake 2 peu de temps avant la rédaction de cet article. Et je vous propose un petit troubleshooting pour corriger ce qui est pour moi la commande la plus importante du jeu.

1) Vous avez rentré correctement l’adresse?

C’est très stupide, mais il faut bien commencer quelque part. La CVAR nécessite de commencer l’adresse par son protocole, en plus de finir par un slash (/). Ah, et utilisez le protocole HTTP et non HTTPS, sinon ça ne fonctionnera pas pour beaucoup de clients.

Cet exemple fonctionnera:

set sv_downloadserver "http://mon.site.web/q2/"

Ces exemples ne fonctionneront pas:

set sv_downloadserver "http://mon.site.web" // Il manque le "/" à la fin!
set sv_downloadserver "http:/mon.site.web/q2/" // "http://" et non "http:/" !
set sv_downloadserver "mon.site.web/q2/" // il manque http:// au début!

2) L’arborescence demandée n’est pas respectée.

Et c’est la qui m’a fait perdre un temps monstrueux, car rien n’est précisé dans la documentation de Q2Pro. En fait, vous avez du surement réaliser comme moi cette situation:

<SITEWEB>
└── q2
    ├── envs
    ├── maps
    └── sound

et lorsque vous allez essayer de télécharger la map, ça ne va pas marcher, alors que ca devrait être OK!

En réalité, la solution est toute simple. Vous allez devoir créer un sous dossier du mode que vous allez lancer. C’est à dire que, si vous allez hoster un serveur sur Quake2 de base, vous allez devoir créer un sous-dossier qui sera nommé baseq2 (car le dossier qui contient la logique s’appelle baseq2) , comme ceci:

<SITEWEB>
└── q2
    └── baseq2
        ├── env
        ├── maps
        └── sound

Si vous hostez en revanche un serveur qui aura comme mode opentdm pour les duels ou le Team Deathmatch, vous devrez le faire comme ceci:

<SITEWEB>
└── q2
    ├── baseq2
    │   ├── env
    │   ├── maps
    │   └── sound
    └── opentdm
        ├── env
        ├── maps

Et ainsi de suite. Cependant, trois choses à noter, très importantes:

  • Le nom du dossier sur le site web doit correspondre au dossier du mode de votre serveur Quake 2!
  • Les fichiers devront être recopiés à chaque fois si vous mettez une même map custom dans 2 mods différents, ce qui est un gouffre en terme de stockage ;
  • Il n’y a PAS de fallback vers le dossier baseq2 si vous hostez un mod.

3) Vous n’avez pas mis les fichiers aux bons endroits.

Normalement en fonction des .zips, vous aurez déjà les sous-dossiers correspondants, mais au cas où, je vous montre où mettre quoi:

├── baseq2
│   ├── env
│   │   ├── mytex.pcx
│   │   └── mytex.tga
│   ├── maps
│   │   └── mymap.bsp
│   ├── sound
│   │   ├── customsnd
│   │   │   └── mysound.wav
│   │   └── sound.wav
│   └── textures
│       └── customtexture
│           └── texture.wal

Et voila! Reconnectez-vous à nouveau, ça devrait fonctionner!

Cependant, vous avez des questions? Besoin d’aide? N’hésitez pas à passer sur le serveur Discord, ou à poster un commentaire ici!

Mots clés

Ch0wW

🌍 Entrez dans mon monde! Je poste du contenu en rapport avec les jeux retro, l'informatique, le modding et la réparation d'appareils... N'hésitez pas à me contacter pour toute question ou demande!