id Tech 4 : console

Tout permuter

La console de Doom 3 peut être ouverte dans le jeu en appuyant sur trois touches en même temps : Ctrl, Alt et la touche directement en dessous de la touche Échap (souvent appelée la touche tilde [~] par les utilisateurs de claviers US).

Si l'option com_allowConsole a une valeur de 1, on peut l'ouvrir juste avec la dernière touche.

Les CVar

Les CVar (Console Variable) permettent d'accéder à certaines fonctionnalités de Doom 3 via la console ou, pour un raccourci vers le jeu, directement au démarrage grâce sa propriété Cible.

(Créer une nouvelle CVar n'est possible qu'à travers le code C++. Voir l'astuce « Créer une CVar ».)

  • Commandes de console et CVar utiles

    af_timeScale Vitesse à laquelle la physique de ragdoll agit (1 par défaut).
    ai_debugMove Afficher toutes les infos de débogage d'un monstre qui cherche le joueur (pathing). Cette CVar utilise la fonction idAASLocal::ShowWalkPath() pour afficher plusieurs infos.
    ai_debugScript (numero_entite) Affiche les fonctions de script appelée par l'entité avec le numéro d'identification spécifié. (Utiliser listEntities pour trouver le numéro associé à l'entité voulue.)
    ai_showObstacleAvoidance Afficher le trajet courant d'un monstre qui cherche le joueur (pathing).
    clear Vider la console.
    com_showfps Afficher la cadence (images par seconde).
    com_timestampPrints Afficher le nombre de millisecondes écoulées à côté de chaque message de console
    conDump (nomFichier) Enregistrer le contenu de la console dans un fichier. Par exemple :

    conDump fichier.txt

    enregistrera tout le texte dans fichier.txt, dans le dossier base.

    con_noPrint N'afficher les messages de débogage que dans la console. Valeur de 0 : afficher les messages dans la fenêtre quand la console est fermée.
    dmap ( nomMap ) Compiler la map. Affiche toute erreur de compilation.
    disconnect Quitte la partie en cours et affiche le menu principal.
    developer Mode « développeur ». Ajoute quelques fonctionnalités pour les programmeurs en activant des fonctions de débogage comme idCommonLocal::DPrintf() (fonction semblable à Printf(), mais qui n'affiche rien dans la console en mode normal).
    editguis Ouvrir l'éditeur de GUI.
    editor Ouvrir l'éditeur de maps (il est préférable d'utiliser DarkRadiant, plutôt que l'éditeur intégré).
    g_dragEntity Valeur booléenne ; permet de cliquer-glisser des entités dans la scène, à l'aide du curseur.
    g_fov Taille du champ de vision du personnage, en degrés. La valeur par défaut est 90, et on peut utiliser toute valeur entre 0 et 180.
    g_showCollisionModels Afficher les objets de collision pour la géométrie ET les modèles.
    g_showentityinfo Afficher des informations graphiques de débogage (comme les noms des entités).
    g_showHud Afficher le hud.
    g_showPVS Affiche les portails des PVS (Potentially Visible Set). Les PVS sont utilisés par le moteur pour la détermination de visibilité, c'est-à-dire pour déterminer ce qui est visible pour le joueur à chaque image.
    g_skipViewEffects Ne pas afficher les effets spéciaux sur la vue (marques de blessure, double-vision, fondus d'entrée et de sortie avec les fonctions de script sys.fadeIn() et sys.fadeOut(), etc.).
    g_stopTime Met en pause la mise à jour du jeu. Dans idGameLocal::RunFrame(), si cette CVar est true, seules le débogage graphique, les commandes de l'utilisateur (clavier et souris) et le joueur sont mis à jour.

    Dans idPlayer::Think(), si g_stopTime est true, certaines informations ne seront pas mises à jour, et le corps de Doomguy ne sera plus visible. (Par contre, sa tête le sera toujours, car elle est traitée séparément.)

    La CVar est aussi utilisée ailleurs.

    image_downSize Incertain, mais si ce réglage a une valeur de 1, une entité func_cameraview peut devenir croche lorsque sa vue est envoyée à un GUI (valeur de 0 par défaut). Cette variable ne semble pas être affectée par la CVar image_forceDownSize.
    listAnims Lister les animations du modèle (choisi avec la commande testmodel).
    listCmds Lister toutes les commandes de console.
    listEntities Affiche dans la console toutes les entités dans la map, accompagnées d'informations supplémentaires : numéro d'identification, type d'entité et classe C++.
    listGuis Afficher dans la console tous les GUI actifs.
    listModes Afficher toutes les résolutions disponibles.
    listspawnargs ( nom_entite ) Afficher toutes les propriétés de l'entité. Le nom de l'entité est sensible à la casse.
    loadGame Charger une partie. Par exemple, +loadGame "Sauvegarde rapide" chargera la dernière sauvegarde rapide du joueur.

    Il s'agit là d'une recherche textuelle pour la sauvegarde avec le nom spécifié ; en français, tel est le nom donné automatiquement aux sauvegardes rapides. Dans une autre langue, le nom de la partie serait certainement différent (par exemple, en anglais, ce serait probablement +loadGame "Quicksave").

    logfile 2 Inscrit tous les futurs messages de console dans un fichier, base/qconsole.log, par défaut. Voir logFileName.
    logFileName ( fichier ) Choisit le fichier dans lequel les messages de console seront inscrits avec logfile 2.
    map ( nomMap ) Charger une map (sans compiler au préalable). Voir testmap.
    playerModel (modèle) Le modèle du joueur. J'ignore s'il y a plus d'un modèle de disponible pour le joueur (les personnages non jouables ne peuvent pas être utilisés car ils ont des squelettes plus simples, et leurs animations sont limitées).
    pm_jumpheight Hauteur de saut du joueur.
    pm_thirdPerson Caméra à la troisième personne.
    r_customwidth, r_customheight Largeur et hauteur d'écran personnalisées. Voir r_mode.
    r_fullscreen Écran plein ou pas. Valeur de 0 : mode fenêtré.
    r_mode Une valeur entre 0 et 8 indique une résolution prédéfinie. Une valeur de -1 signifie que les variables r_customWidth et r_customHeight seront utilisées pour définir la résolution.
    r_shadows Si les entités créent des ombres (ou pas).
    r_showPortals Afficher les vis portals (vert : ouvert, rouge : fermé).
    r_showsurfaceinfo Afficher le nom de la texture sur l'objet pointé par le curseur.
    reloadDecls Recharger les textures et matériaux.
    reloadguis [ all ] Recharger les GUI. Seuls les GUIS qui ont été modifiés seront rechargés, à moins qu'on ajoute l'argument all après : reloadguis all.
    reloadLanguage Recharger les fichiers de langue (.lang). Ces fichiers contiennent toutes les chaînes de texte de Doom 3. S'ils sont modifiés, on doit utiliser la commande reloadLanguage ou redémarrer le jeu.
    setviewpos Choisir la position du joueur.
    sys_lang La langue du jeu. Il y a plusieurs options :

    • english (anglais)
    • spanish (espagnol)
    • italian (italien)
    • german (allemand)
    • french (français)
    • russian (russe)
    • polish (polonais)
    • korean (coréen)
    • japanese (japonais)
    • chinese (chinois)
    • NULL

    Voir neo/sys/sys_local.cpp.

    testanim ( animation ) Tester une animation. Si on tape testanim et on appuie la touche Tab (après avoir choisi un modèle via testmodel), toutes les animations disponibles seront listées.
    testgui Afficher un GUI à l'écran pour le tester dans le jeu. On peut sortir du GUI en appelant cette fonction sans paramètre.
    testmap ( nomMap ) Compiler, puis charger une map. Cette fonction équivaut à appeler les fonctions dmap et mapNOTE : Cette commande n'affiche pas les erreurs de compilation. Si la map a une fuite, elle ne sera pas recompilée, et la dernière version fonctionnelle sera utilisée à sa place, ce qui peut induire en erreur.

    Pour afficher les erreurs durant la compilation, utiliser dmap.

    testmodel ( modèle )

    Choisir le modèle pour tester des animations avec testanim ; le modèle apparaîtra là où le joueur regarde.

    Note : Pour un modèle animé, on doit utiliser le nom de l'entité (par exemple, l'entité du joueur est player_doommarine).

    Il n'est pas possible d'utiliser testmodel avec le nom d'un fichier .md5mesh, comme on pourrait le faire avec un modèle statique (.ase). Si on essaie, par exemple, d'afficher le modèle du joueur (models/md5/characters/npcs/playermoves/spplayer.md5mesh), la commande de console testmodel affichera l'erreur suivante :

    idRenderModelMD5::InstantiateDynamicModel: NULL joints on renderEntity for 'models/md5/characters/npcs/playermoves/spplayer.md5mesh'

    C'est aussi le cas lorsqu'on place un modèle provenant d'un fichier .md5mesh directement dans une map.

    timeDemo ( fichier ) [ precache ] Lire un fichier .demo (pak000/demos). Le paramètre precache (ou serait-ce usecache ?) servirait à garder les textures en cache. Par exemple :

    timedemo demo1.demo usecache

    ui_showGun Détermine si l'arme sera affichée à l'écran. (L'arme peut être utilisée même quand elle n'est pas visible. La fonction de script "disableWeapon()" permet de désactiver toute arme.)
    where Position du joueur.

    On peut aussi choisir les options par défaut dans DoomConfig.cfg, un fichier de configuration se trouvant dans le dossier base. Je crois qu'il est créé par l'application s'il n'existe pas.

  • Démarrer le jeu avec des CVar modifiées

    • Créer un nouveau raccourci Windows
    • Si on utilise la version disque du jeu, lui donner comme cible le chemin vers Doom3.exe.Pour la version Steam, lui donner comme cible le chemin vers Steam.exe, suivi du mot-clé applaunch et du numéro de l'application (9050). Dans mon cas :

      "D:/Program Files (x86)/Steam.exe" -applaunch 9050

    Si on ajoute un espace et le symbole « + », on pourra ensuite ajouter des CVar qui modifieront le comportement de Doom.

    Par exemple, pour ouvrir directement un mod (avec la CVar fs_game), on crée un nouveau raccourci qui pointera vers le dossier du mod (ici, monmod) :

    "D:/Program Files (x86)/Steam.exe" -applaunch 9050 +set fs_game monmod

    Ceci fera du dossier Doom 3/monmod le dossier principal pour rechercher les ressources du jeu, au lieu de Doom 3/base (qui est utilisé par Doom 3).

    Cette méthode est pratique pour compiler une map immédiatement, au chargement de Doom :

    "D:/Program Files (x86)/Steam.exe" -applaunch 9050 +testmap dossier/ma_map.map

    L'extension .map n'est pas nécessaire.

    On peut aussi exécuter un fichier de configuration (.cfg) pour régler plusieurs valeurs d'un coup avec la commande exec. Note : cette commande doit être ajoutée après les autres commandes comme testmap pour fonctionner.