Source SDK 2013 : Différence entre versions
(Une révision intermédiaire par le même utilisateur non affichée) | |||
Ligne 26 : | Ligne 26 : | ||
* [https://www.goldwave.com/ Goldwave] : Édition et création des sons Waves, | * [https://www.goldwave.com/ Goldwave] : Édition et création des sons Waves, | ||
* [https://download.levelkro.net/download/games/mod/tools/ModMaker_V2.1.zip ModMaker] : Outils pour créer l'importation des sources requis plus simple, | * [https://download.levelkro.net/download/games/mod/tools/ModMaker_V2.1.zip ModMaker] : Outils pour créer l'importation des sources requis plus simple, | ||
+ | * [https://download.levelkro.net/download/games/mod/tools/radtools.exe Rad Tools] : Permet de convertir des vidéos dans le format Bink!, | ||
* [https://download.levelkro.net/download/games/mod/tools/vs2013_community.exe Visual Studio Community 2013] : pour compiler les DLL si vous devez apporter des modifications avancés, | * [https://download.levelkro.net/download/games/mod/tools/vs2013_community.exe Visual Studio Community 2013] : pour compiler les DLL si vous devez apporter des modifications avancés, | ||
* Programme d'édition d'image, capable de prendre en charge le format TGA. ([https://www.gimp.org/downloads/ Gimp] par exemple) | * Programme d'édition d'image, capable de prendre en charge le format TGA. ([https://www.gimp.org/downloads/ Gimp] par exemple) | ||
Ligne 32 : | Ligne 33 : | ||
=== Les Scripts === | === Les Scripts === | ||
+ | Le dossier "scripts/" peut contenir beaucoup d'éléments, il peux y avoir les fichiers des sons, des armes, des éléments à charger etc.... les fichiers finissant par "_manifest.txt" sont ceux qui sont les "maîtres" de ces semblables, et appel les autres, par exemple, "game_sounds_manifest.txt", est celui qui appel les autres "game_sounds_" et même d'autres fichiers de sons (level_music.txt, par exemple). La présence d'un script dans le dossier annule l'effet de celui par défaut, alors vous pouvez contrôler ce qui sera chargé, ou non. | ||
+ | Commençons avec le plus simple, le fichier "credits", il serait traduisible, mais à ce moment si d'écrire, je n'ai pas arrivé à le faire correctement. Vous avez trois utilité à ce document; 1) afficher les crédit de début, 2) afficher les crédits de fin, et 3) afficher le Logo si besoin. Le Logo est le "[Valve]" qu'ont voit dans le jeu, il est le résultat de la police de caractère HalfLife2.ttf, vous devrez changer la valeur de la police pour l'utiliser en version texte. Le crédit d'intro est celui vu dans le train (HL2), et le crédit de fin... bah .... c'est celui qu'ont vois à la fin.... sur fond noir. | ||
+ | |||
+ | Vous pouvez définir dans chacune des sections le texte et suivi d'un alias, malgré le nom utilisé, il ne sert pas à savoir ou va le texte, (Intro ou Outro), mais c'est un alias de Style (police, grosseur). Alors dans vos fichiers SourceScheme.res et ColorScheme.res dans le dossier "resource/", vous pouvez ajouter et éditer les alias pour ajouter du style à vos crédits. Petite suggestion, vu qu'il y a un crédit de fin, servez-vous de L'intro pour écrire la mise en situation de votre jeu, un peu comme avec HL1 et le train, qui donnais le nom du joueur, son niveau scolaire.... Les textes sont sensibles à la case (double espace donne un double espace) et prend en charge les expressions standard (comme \n pour une Nouvelle ligne). | ||
+ | |||
+ | La section "CreditsParams" du document sert de style d'effet; | ||
+ | <pre> | ||
+ | "CreditsParams" | ||
+ | { | ||
+ | "logo" "Wolfenstein 3D: Source" // Quand ont appel "logo" via la map | ||
+ | |||
+ | "fadeintime" "1.5" //apparition de la ligne intro | ||
+ | "fadeouttime" "1.5" //disparition de la ligne intro | ||
+ | "fadeholdtime" "1" //durée de transition entre chaque ligne | ||
+ | "nextfadetime" "1" //durée de transition entre block de 3 lignes | ||
+ | "pausebetweenwaves" "3"//attente avant de passer au block suivant de 3 lignes | ||
+ | "logotime" "2" // temps affiché du logo | ||
+ | "posx" "96" // position en horizontal (max 640) | ||
+ | "posy" "340" // position en vertical (max 480) | ||
+ | |||
+ | "color" "255 255 255 128" // couleur du text avec transparence (blanc 50% ici) | ||
+ | |||
+ | //Outro Parameters | ||
+ | "scrolltime" "90" //temps total pour le générique, + de ligne avec ue petite valeur fait qu'il affichera plus vite, l'inverse ralenti... | ||
+ | "separation" "10" // entre chaque ligne | ||
+ | } | ||
+ | </pre> | ||
=== Les Resources === | === Les Resources === | ||
+ | Dans le dossier "cfg/", vous avez un fichier nommé "skill.cfg", il regroupe l'ensemble des paramètres de base du moteur pour les NPC, les items, les réactions (armes). Vous pouvez par exemple ajuster la valeur de santé par défaut des Combines, des citoyens, des ennemis, c'est ce fichier qui sert à "balancer" la difficulté. | ||
+ | |||
+ | Dans le dossier "resource/", vous trouverez plusieurs fichiers, vous y en ajouterez certainement quelques uns. Vous trouverez des fichiers avec l'extension .TTF, ce sont des polices de caractère, Half-Life 2 se sert de L'une d'entre elle pour afficher par exemple les icônes d'arme. Mais il est possible de contourner ce remplacement par la mise en pace d'une image à la place. Un fichier nommé "votremod_english.txt" représente les variable de traduction, pour créer une version français, créer le fichier, en UTF-8; "votremod_french.txt" en suivant le même principe de structure. | ||
+ | |||
+ | Les fichiers avec l'extension .RES sont des fichiers dit Resource, tel que utilisé pour compiler en .Net par exemple. Mais vous pouvez les éditer facilement. | ||
+ | |||
+ | ClientScheme.res et SourceScheme.res | ||
+ | |||
+ | Ce sont l'organisation des éléments du moteur Source, vous y trouverez les dimensions et couleurs pour les fenêtres de dialogue, le menu, les élément visuel de base du HUD etc... le tout doit être sauvegardé en UTF-16 LE. Les couleurs sont en RGB avec transparence (Red Green Blue Opacity <-> 0-255 0-255 0-255 0-255 0-255), il est possible de créer des alias couleur pour faciliter l’implantation. Vos trouverez également dans ces documents les polices de caractère utilisé et remplaçable. Le chargement des polices ce trouve à la fin du fichier. Avec mes tests, je peux vous dire que ce n'est pas toutes les polices qui sont pris en chargent. Alors faites beaucoup de test et trouvez vous une valeur facilement (comme celle de MenuLarge{}) pour faire vos essais avant de commencer vos remplacement. De plus, il faudra surement ajuster vos dimensions du texte en conséquence de votre police choisi. Astuce; utilisez des polices avec un nom court et simple et pas besoin de L,installer sur votre ordinateur, comme indiqué dans les documents, les fichiers de police sont chargé par le moteur si il n'existe pas dans le système. | ||
+ | |||
+ | GameMenu.res | ||
+ | |||
+ | Lui représente les liens du menu, tel que "Nouvelle partie, options, quitter....", vous pouvez retirer par exemple la section "Succès" vu que votre Mod n'en as aucun. | ||
+ | |||
+ | GameLogo.res | ||
+ | |||
+ | Lui il défini vos images de base, dans celui ci vous trouvez ; | ||
+ | <pre> | ||
+ | Resource/GameLogo.res | ||
+ | { | ||
+ | GameLogo | ||
+ | { | ||
+ | ControlName EditablePanel | ||
+ | fieldName GameLogo | ||
+ | xpos 0 | ||
+ | ypos 0 | ||
+ | zpos 0 | ||
+ | wide 128 //largeur | ||
+ | tall 128 //hauteur | ||
+ | autoResize 1 | ||
+ | pinCorner 1 | ||
+ | visible 1 | ||
+ | enabled 1 | ||
+ | offsetX -70 //offset depuis l'élément positionné Menu | ||
+ | offsetY -100 //offset depuis l'élément positionné Menu | ||
+ | } | ||
+ | |||
+ | Logo | ||
+ | { | ||
+ | ControlName ImagePanel | ||
+ | fieldName Logo | ||
+ | xpos 0 | ||
+ | ypos 0 | ||
+ | zpos 0 | ||
+ | wide 128 // largeur | ||
+ | tall 128 // hauteur | ||
+ | visible 1 | ||
+ | enabled 1 | ||
+ | image logo // image en VMT link a un VTF | ||
+ | scaleImage 1 | ||
+ | } | ||
+ | } | ||
+ | </pre> | ||
+ | ci il y a une attrape, le fichier "logo", qui représente votre image/icon/titre, il ce trouve au format VMT (appel) VTF (image); "materials/vgui/logo". | ||
=== Plus avancés === | === Plus avancés === | ||
+ | La partie la plus visuel est sans doute le HUD, ou la santé, les munitions et autres informations sont affichés. Pour gérer leur positions et dimensions, c'est le fichier "scripts/HudLayout.res" qui s'en charge. Sachez que le moteur Source calcul toujours les menu et le Hud sur une dimension de 640x480, et par la suite l'ajuste à la résolution du client. Les premières valeur place le rectangle, le "text_" pour la position du titre de l'élément, comme "santé" ou "combi", et le "digit_" est pour la valeur affiché. | ||
+ | |||
+ | Dans le dossier "resource/", le fichier "ClientScheme.res" possède quelques valeurs, soit; HudNumbers, HudNumbersGlow, HudNumbersSmall, HudSelectionNumbers, HudHintTextLarge, HudHintTextSmall, HudSelectionText. Dans le document "SourceScheme.res", c'est les valeurs de "HUDNumber" que vous retrouverez. | ||
+ | |||
+ | Si vous utilisez le "title" et "title2" dans le "GameInfo.txt", "title2" utilise les même paramètres que "title", la valeur "TitleFont2" disponible dans le document "resource/SourceScheme.res" ne l'affecte pas. | ||
+ | |||
+ | Pour gérer le reste des menus et visuel, tel que les dialogues de chapitres, les options et l'ensemble de couleurs, c'est le document "resource/SourceScheme.res" qui possède les valeurs global de base. Si vous fouillez dans le dossier "hl2/resource" du Source SDK 2013, vous trouverez d'autres fichiers qui serve à ajuster chacune des interfaces possibles. Par exemple, pour changer l'image et les valeur de l'écran de chargement d'une map le fichier "loadingDialogBackground.res" possède les paramètres, copier le dans votre mod avant de les modifiers. | ||
== Images et textures (materials) == | == Images et textures (materials) == | ||
+ | Ce qui semble parfois le plus simple est le plus compliqué. Les images sous source n'implique pas qu'une simple importation dans leur format, celui si doit être associé à des paramètres. Une image, qu'ont nomme material sous Source, ce trouve être un Sprite, Decal, Texture, Overlay ou un Helper pour un effet.... Ce guide est pour débutant alors je ne vais que effleurer le sujet. Noter que chaque image pris en charge sont en format .VMT, mais dans les faits, les sources sons aux format .VTF. Le VTF (Valve Texture Format(?)) est l'image, la source. Avec VTF Edit, vous pouvez importer des images, la transparence est pris en charge mais de manière limité. Il est préférable d'enregistrer vos images à importer en format .TGA, qui reflète bien les limitations du format, étant également le format facultatif dans certains cas. Le VMT (pour Valve Material File(?)), contient d'autres paramètres et l'appel des fichiers sources requis. Oui, des, car dans le cas d'un mur par exemple, vous aurez la texture, et également le "bumpmap", qui consiste à une représentation 2D des dénivellations 3D de votre images, pour justement lui donner le rendu de texture, et non plat. VTF Edit peut générer votre fichier "bump" au besoin. | ||
+ | Sujets non couvert dans ce guide, mais associé aux materials; | ||
+ | |||
+ | Texture de model | ||
+ | Texture de NPC (skin) | ||
+ | Texture d'arme | ||
+ | Skybox | ||
+ | Effets | ||
+ | Animations | ||
+ | |||
+ | |||
+ | Texture de base (plafond, mur, plancher) | ||
+ | |||
+ | Celle-ci est généralement Opaque, ce qui simplifie l'intégration. Il vient (ou non) avec un fichier Bump, sont format est habituellement sous LighmappedGeneric, associé à une réponse de la surface (bois, métal, brique,...). | ||
+ | |||
+ | Importation normal : Importer votre fichier en type 'Environmental Map', assurez-vous d'être dans un format de multiple de 4, sinon, voir conseillez à chaque fois, de faire une re-dimension en important. Le Midmap consiste à la création d'une version légerte de l'image compressé pour les apparence longue-distance. Garder les paramètres par défaut. | ||
+ | Importation en "Bump" : Faites la même chose que l'importation de la texture, cependant, sélectionner le "Normal Map", ajuster les paramètres de cette section avec le principe; essai/erreur, car selon la texture à importer, l'effet peut être très différent. | ||
+ | Création du VMT : Une fois l'image importé et sauvegardé, garder la (ouvrez la) pour créer le VMT, VTF Edit offre plusieurs options, mais ce qui est important est le chemin vers la texture, dans cette section la Base Texture est importante, mais la Bump Map est requis seulement si vous désirez un effet texturé selon l'image importé. Dans les Options, le LightmappedGeneric est tout indiqué, vous pouvez définir le type de surface qu'il représente (sinon Default si vide), pour donner un effet de reflet, utilisé avec Cubemap, l'option "Environment Map Contrast" est requis. | ||
+ | |||
+ | |||
+ | Texture d'ajout (overlay, decal, sprite,...) | ||
+ | |||
+ | Un peu plus complexe avec la transparence, même moi je ne maîtrise pas tout à fait, alors je vous explique ce que je sais... | ||
+ | |||
+ | Le format de traitement est UnlitGeneric, | ||
+ | pour une transparence global de 50%, utiliser "Translucent", | ||
+ | Vertex Color / Vertex Alpha affecte la transparence, qui s'applique au Blanc ou au Noir | ||
+ | le DX1 bit Alpha dans l'importation pourrait prendre en charge le canal Alpha pour la transparence (non testé) | ||
+ | L'importation ce fait avec "Animated Map" | ||
+ | Il est possible d'importer des frames pour créer une animation, ceci est relativement simple. | ||
+ | Vous devez extraire chaque frame de l'image, et d'importer l'ensemble dans l'ordre. | ||
=== Création et importation === | === Création et importation === | ||
Ligne 46 : | Ligne 166 : | ||
== NPC et objets (models) == | == NPC et objets (models) == | ||
+ | Tous à vos Weapons! | ||
+ | |||
+ | Les fichiers "weapons_*" sont les configuration de vos armes, ici réside le secret pour remplacer vos armes et choisir certaines valeur, comme le type de munition, combien dans le chargeur, le modèle à utiliser, etc... Dans la section du bas, c'est ce qui sera affiché dans le menu de sélection, le caractère "`" est vide dans la police HalfLife2.ttf, si vous désirez masquer des informations. Si vous désirez le remplacer et ce, avec une image, utilisez cet exemple; | ||
+ | |||
+ | "weapon" | ||
+ | { | ||
+ | "file" "sprites/icon_crowbar" // l'image depuis "materials/", | ||
+ | "x" "0" | ||
+ | "y" "135" | ||
+ | "width" "64" | ||
+ | "height" "64" | ||
+ | } | ||
+ | Cette image doit avoir un fond noir, qui sera la transparence, et le blanc votre icone, éviter les couleur (blanc/noir seulement est idéal). Pour un meilleur rendu, laisser environ 5 à 10 px de libre dans votre image pour éviter de mauvais affichage (bug du HUD). | ||
+ | |||
+ | Pour la modification d'une arme plus poussé, vous devez éditer les sources (voir plus bas au sujet du C++). | ||
+ | Les autres documents sont similaires ou servent à charger d'autres fichiers. | ||
=== Ajouts === | === Ajouts === | ||
Ligne 54 : | Ligne 190 : | ||
== Sons et musiques (sounds) == | == Sons et musiques (sounds) == | ||
+ | Les sons sous Source sont majoritairement en .WAV, les musiques peuvent être en MP3. Le moteur ne prend pas en charge le 48Khz (et plus), alors faites vos sons en 44Khz, Stereo (ou mono). Goldwave est le seul programme permettant d'ajouter des "cue" dans le fichier Wav (pas possible avec les autres programmes, pas possible non plus avec un MP3), c'est "cue" servent à définir la position ou il est possible de "loop" dans le son (quand c'est requis, par exemple, les portes). Le premier "cue" doit ce nommer "start_cue" et le dernier "end_cue". (Possible bug, le loop peut être indéfini, ceci arrive quand le moteur ignore la valeur "end_cue", pas de solution possible, mais bug connu de Valve (documenté dans le WIki)). Les sons ce place tous dans "sounds/", la place n'a pas vraiment d'importance, sauf si vous désirez remplacer un fichier de base. Penser a effacer le fichier "sound.cache" pour vous assurez d'actualiser la liste des sons. | ||
+ | |||
+ | Si vous incluez de la musique, vous voudrez surement la mettre en "loop", Source n'est pas en mesure de "looper" les mp3, et une piste en Wav est trop gros pour rien (3Mo pour MP3 tandis que 30Mo en Wav habituellement). La petite astuce est de connaitre le nombre de seconde de votre MP3, par exemple 210 (3m 30s), ajouter un "logic_timer" à votre carte avec ce délais pour "refire" le "ambient_generic" pour rejouer le fichier, il n'y a pas d'autres solution, le fichier "level_music.txt" vous n'aideras pas. | ||
+ | |||
+ | Ce sont les fichiers des sons associés aux objets, lieux, ou NPC. C'est dans ces documents que vous pouvez retrouver les infos sur le son d'une action, et sois la changer, ou sois savoir quel fichier qu'il faut remplacer. Vous pouvez aussi ajuster d'autres paramètres, tel que; le volume, le pitch, le channel, et proposer plus d'un sons avec un appel "random". Vous pouvez rendre un son "nulle" avec ce paramètre pour le "wave"; "commun/null.wav". | ||
+ | |||
+ | Préparation des fichiers de base | ||
+ | |||
+ | Avec ModMaker, vous pouvez facilement créer la structure requise de vos fichiers de Mod; Ajouter un nouveau Mod à ModMaker, il va vous demander 2 dossiers, celui ou le jeu est installé, habituellement c'est "C:/Program files/Steam/commun/sourcemods/<votremod>", le deuxième dossier est pour vos fichiers de travail, vos sources, choisissez un dossier à votre choix. Même que vous risquer de ne pas trop l'utiliser. Avec ModMaker, c'est tout. Dans le dossier créé dans "sourcemods", vous avec un fichier nommé "GameInfo.txt", c'est les détails de votre Mod est où se trouve vos fichiers. Voici un exemple; | ||
+ | |||
+ | "GameInfo" | ||
+ | { | ||
+ | "game" "Mon Mod Source" | ||
+ | "title" "Mon Mod Source" | ||
+ | "title2" "un sous titre ? optionnel" | ||
+ | "supportsvr" 0 // support le VR ? | ||
+ | "type" "singleplayer_only" // Si vous utilisez le multiplayer, penser à installer le Source SDK base 2013 Multiplayer | ||
+ | "icon" "resource/icon" // Mon Mod à une icon! | ||
+ | "NoDifficulty" 1 // Choisir la difficulté ? Obselet, mais forcé, au cas ou | ||
+ | "Developer" "levelKro" // C'est qui le génie | ||
+ | "Developer_URL" "https://levelkro.com" // Ou je peux en savoir plus sur le génie | ||
+ | "Manual" "https://levelkro.xyz/wiki/" // Si tu as un manual ou Wiki | ||
+ | "gamelogo" 1 // J'ai pas qu'une icon, j'ai aussi un logo :) | ||
+ | "FileSystem" | ||
+ | { | ||
+ | "SteamAppId" 243730 // Même si le Mod est conçu sous HL2, ont désire le SOurce SDK Base 2013 comme jeu de base | ||
+ | "SearchPaths" | ||
+ | { | ||
+ | //"gamebin" "|gameinfo_path|bin" // Si tu veux fournir le DLL avec ton Mod (déconseillé de copier un DLL d'un jeu source existant, votre propre DLL compilé seulement.) | ||
+ | "gamebin" "|all_source_engine_paths|sourcetest/bin" // Utiliser le DLL du Source SDK 2013 | ||
+ | "game+mod" "|gameinfo_path|monmodname.vpk" | ||
+ | "game+mod+mod_write+default_write_path" "|gameinfo_path|." | ||
+ | "game_lv" "hl2/hl2_lv.vpk" | ||
+ | "game" "|all_source_engine_paths|hl2/hl2_english.vpk" | ||
+ | "game" "|all_source_engine_paths|hl2/hl2_pak.vpk" | ||
+ | "game" "|all_source_engine_paths|hl2/hl2_textures.vpk" | ||
+ | "game" "|all_source_engine_paths|hl2/hl2_sound_vo_english.vpk" | ||
+ | "game" "|all_source_engine_paths|hl2/hl2_sound_misc.vpk" | ||
+ | "game" "|all_source_engine_paths|hl2/hl2_misc.vpk" | ||
+ | "game" "|all_source_engine_paths|hl2" | ||
+ | "platform" "|all_source_engine_paths|platform/platform_misc.vpk" | ||
+ | "platform" "|all_source_engine_paths|platform" | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | Dans cet exemple, j'ai commenté certaines des lignes, selon les situation. Le dossier des DLL (gamebin), c'est la vérification de l'autorisation d'utiliser le moteur Source. Il est requis pour démarrer, sinon le jeu ouvre et ce ferme rapidement (également ce problème si les DLL ne marche pas avec le AppID, par exemple utiliser les DLL de Source SDK sur une exécution avec Half-Life 2 (AppId 220)). | ||
+ | |||
+ | Citation | ||
+ | Attention; utiliser le DLL du sourcetest fournis un ensemble d'action qui marcheront parfaitement, mais il est préférable, par la communauté, de créer sont propre DLL avec les modifications incluse dans celui si, lorsque possible. Mais dans les faits, si tu ne le dit pas, personne ne le sauras. | ||
+ | |||
+ | |||
+ | |||
+ | Les dossiers | ||
+ | cfg/ : contient vos chapitres (chapterX.cfg) et les valeurs des éléments de base (skill.cfg) | ||
+ | maps/ : vos maps compilé (en BSP) | ||
+ | materials/ : Textures, Decals, Sprites etc.... | ||
+ | models/ : Les modèles, items, weapons | ||
+ | resource/ : Des fichiers de compilation spécifique (remplacement de Visual Studio) | ||
+ | scripts/ : Scripts de chargements et des éléments | ||
+ | sounds/ : Vos sons, musiques, etc.... | ||
+ | Les Resources | ||
+ | |||
+ | Dans le dossier "cfg/", vous avez un fichier nommé "skill.cfg", il regroupe l'ensemble des paramètres de base du moteur pour les NPC, les items, les réactions (armes). Vous pouvez par exemple ajuster la valeur de santé par défaut des Combines, des citoyens, des ennemis, c'est ce fichier qui sert à "balancer" la difficulté. | ||
+ | |||
+ | Dans le dossier "resource/", vous trouverez plusieurs fichiers, vous y en ajouterez certainement quelques uns. Vous trouverez des fichiers avec l'extension .TTF, ce sont des polices de caractère, Half-Life 2 se sert de L'une d'entre elle pour afficher par exemple les icônes d'arme. Mais il est possible de contourner ce remplacement par la mise en pace d'une image à la place. Un fichier nommé "votremod_english.txt" représente les variable de traduction, pour créer une version français, créer le fichier, en UTF-8; "votremod_french.txt" en suivant le même principe de structure. | ||
+ | |||
+ | Les fichiers avec l'extension .RES sont des fichiers dit Resource, tel que utilisé pour compiler en .Net par exemple. Mais vous pouvez les éditer facilement. | ||
+ | |||
+ | ClientScheme.res et SourceScheme.res | ||
+ | |||
+ | Ce sont l'organisation des éléments du moteur Source, vous y trouverez les dimensions et couleurs pour les fenêtres de dialogue, le menu, les élément visuel de base du HUD etc... le tout doit être sauvegardé en UTF-16 LE. Les couleurs sont en RGB avec transparence (Red Green Blue Opacity <-> 0-255 0-255 0-255 0-255 0-255), il est possible de créer des alias couleur pour faciliter l’implantation. Vos trouverez également dans ces documents les polices de caractère utilisé et remplaçable. Le chargement des polices ce trouve à la fin du fichier. Avec mes tests, je peux vous dire que ce n'est pas toutes les polices qui sont pris en chargent. Alors faites beaucoup de test et trouvez vous une valeur facilement (comme celle de MenuLarge{}) pour faire vos essais avant de commencer vos remplacement. De plus, il faudra surement ajuster vos dimensions du texte en conséquence de votre police choisi. Astuce; utilisez des polices avec un nom court et simple et pas besoin de L,installer sur votre ordinateur, comme indiqué dans les documents, les fichiers de police sont chargé par le moteur si il n'existe pas dans le système. | ||
+ | |||
+ | GameMenu.res | ||
+ | |||
+ | Lui représente les liens du menu, tel que "Nouvelle partie, options, quitter....", vous pouvez retirer par exemple la section "Succès" vu que votre Mod n'en as aucun. | ||
+ | |||
+ | GameLogo.res | ||
+ | |||
+ | Lui il défini vos images de base, dans celui ci vous trouvez ; | ||
+ | |||
+ | Resource/GameLogo.res | ||
+ | { | ||
+ | GameLogo | ||
+ | { | ||
+ | ControlName EditablePanel | ||
+ | fieldName GameLogo | ||
+ | xpos 0 | ||
+ | ypos 0 | ||
+ | zpos 0 | ||
+ | wide 128 //largeur | ||
+ | tall 128 //hauteur | ||
+ | autoResize 1 | ||
+ | pinCorner 1 | ||
+ | visible 1 | ||
+ | enabled 1 | ||
+ | offsetX -70 //offset depuis l'élément positionné Menu | ||
+ | offsetY -100 //offset depuis l'élément positionné Menu | ||
+ | } | ||
+ | |||
+ | Logo | ||
+ | { | ||
+ | ControlName ImagePanel | ||
+ | fieldName Logo | ||
+ | xpos 0 | ||
+ | ypos 0 | ||
+ | zpos 0 | ||
+ | wide 128 // largeur | ||
+ | tall 128 // hauteur | ||
+ | visible 1 | ||
+ | enabled 1 | ||
+ | image logo // image en VMT link a un VTF | ||
+ | scaleImage 1 | ||
+ | } | ||
+ | } | ||
+ | Ici il y a une attrape, le fichier "logo", qui représente votre image/icon/titre, il ce trouve au format VMT (appel) VTF (image); "materials/vgui/logo". | ||
+ | |||
+ | Les scripts | ||
+ | |||
+ | Le dossier "scripts/" peut contenir beaucoup d'éléments, il peux y avoir les fichiers des sons, des armes, des éléments à charger etc.... les fichiers finissant par "_manifest.txt" sont ceux qui sont les "maîtres" de ces semblables, et appel les autres, par exemple, "game_sounds_manifest.txt", est celui qui appel les autres "game_sounds_" et même d'autres fichiers de sons (level_music.txt, par exemple). La présence d'un script dans le dossier annule l'effet de celui par défaut, alors vous pouvez contrôler ce qui sera chargé, ou non. | ||
+ | |||
+ | Commençons avec le plus simple, le fichier "credits", il serait traduisible, mais à ce moment si d'écrire, je n'ai pas arrivé à le faire correctement. Vous avez trois utilité à ce document; 1) afficher les crédit de début, 2) afficher les crédits de fin, et 3) afficher le Logo si besoin. Le Logo est le "[Valve]" qu'ont voit dans le jeu, il est le résultat de la police de caractère HalfLife2.ttf, vous devrez changer la valeur de la police pour l'utiliser en version texte. Le crédit d'intro est celui vu dans le train (HL2), et le crédit de fin... bah .... c'est celui qu'ont vois à la fin.... sur fond noir. | ||
+ | |||
+ | Vous pouvez définir dans chacune des sections le texte et suivi d'un alias, malgré le nom utilisé, il ne sert pas à savoir ou va le texte, (Intro ou Outro), mais c'est un alias de Style (police, grosseur). Alors dans vos fichiers SourceScheme.res et ColorScheme.res dans le dossier "resource/", vous pouvez ajouter et éditer les alias pour ajouter du style à vos crédits. Petite suggestion, vu qu'il y a un crédit de fin, servez-vous de L,intro pour écrire la mise en situation de votre jeu, un peu comme avec HL1 et le train, qui donnais le nom du joueur, son niveau scolaire.... Les textes sont sensibles à la case (double espace donne un double espace) et prend en charge les expressions standard (comme \n pour une Nouvelle ligne). | ||
+ | |||
+ | La section "CreditsParams" du document sert de style d'effet; | ||
+ | |||
+ | "CreditsParams" | ||
+ | { | ||
+ | "logo" "Wolfenstein 3D: Source" // Quand ont appel "logo" via la map | ||
+ | |||
+ | "fadeintime" "1.5" //apparition de la ligne intro | ||
+ | "fadeouttime" "1.5" //disparition de la ligne intro | ||
+ | "fadeholdtime" "1" //durée de transition entre chaque ligne | ||
+ | "nextfadetime" "1" //durée de transition entre block de 3 lignes | ||
+ | "pausebetweenwaves" "3"//attente avant de passer au block suivant de 3 lignes | ||
+ | "logotime" "2" // temps affiché du logo | ||
+ | "posx" "96" // position en horizontal (max 640) | ||
+ | "posy" "340" // position en vertical (max 480) | ||
+ | |||
+ | "color" "255 255 255 128" // couleur du text avec transparence (blanc 50% ici) | ||
+ | |||
+ | //Outro Parameters | ||
+ | "scrolltime" "90" //temps total pour le générique, + de ligne avec ue petite valeur fait qu'il affichera plus vite, l'inverse ralenti... | ||
+ | "separation" "10" // entre chaque ligne | ||
+ | } | ||
+ | Game_Sounds* et NPC_Sounds* | ||
+ | |||
+ | Ce sont les fichiers des sons associés aux objets, lieux, ou NPC. C'est dans ces documents que vous pouvez retrouver les infos sur le son d'une action, et sois la changer, ou sois savoir quel fichier qu'il faut remplacer. Vous pouvez aussi ajuster d'autres paramètres, tel que; le volume, le pitch, le channel, et proposer plus d'un sons avec un appel "random". Vous pouvez rendre un son "nulle" avec ce paramètre pour le "wave"; "commun/null.wav". | ||
+ | |||
+ | Le pas simple sentences.txt | ||
+ | |||
+ | Ce fichier est unique en son genre, dans "npc_sounds_metropolice.txt", un bloc interpelle; | ||
+ | |||
+ | // ********************************************************** | ||
+ | // OBSOLETE: | ||
+ | // metropolice should always use sentences.txt entries, | ||
+ | // the following should NOT be referenced. | ||
+ | Sans qu'il soit mentionné dans le fichier "npc_sounds_soldier.txt", il est aussi affecté par ce commentaire, car il n'y a vraiment pas grand chose dans ce fichier. | ||
+ | |||
+ | Alors "sentences.txt" est une version "amélioré" du système de traduction et de language, en fait les réponses avec des valeurs ou la construction d'une phrase est requise utilise ce fichier, par exemple "Freeman repéré dans le Canal" peut référer à 4 waves différents. Vu que Half-Life 2 est utilisable avec des sous-titres, il ce devais de rendre les textes audio en version sous-titre le plus exacte possible. Mais dans mon guide, je vais me limiter à remplacer les sons, par le plus simple possible. | ||
+ | |||
+ | Dans le document "sentences.txt", descendez pour trouver la première ligne éditable (ceux avant son des alias pour des sons générique); | ||
+ | |||
+ | //PAIN | ||
+ | COMBINE_PAIN0 npc/npcPain1(v100) {Len 0.47} | ||
+ | Ceci est un exemple déjà modifié, tout les sons seront cherchés dans "sounds/", alors vous considérez de partir de ce point. Dans l'exemple, ont va dont dans le dossier "npc/" pour le wav "npcPain1", le (v100) est facultatif, mais représente le volume, il existe aussi le pitch. Dans les "{ }", vous trouvez la durée précise (milliseconde) du son (ou ensemble). Le nom du son est "COMBINE_PAIN", le "0" est le premier élément, pour tout les sons, vous pouvez ajouter ou retirer des répliques en contrôlant la valeur numérique, comme ici il existe 1 seul son de douleur (pain), mais en créant "COMBINE_PAIN1" ont as une deuxième choix, le système passera automatiquement en "random". Pour annuler un son, vous définissez comme ceci; | ||
+ | |||
+ | // I am moving in | ||
+ | COMBINE_FLANK0 common/null {Len 0.0} | ||
+ | À la fin du document, vous retrouverez tout les sons pour l'habit HEV, comme par exemple "Santé 20%" ou "Mort imminente". | ||
=== Utilisation de musique === | === Utilisation de musique === | ||
Ligne 64 : | Ligne 370 : | ||
=== Arrière plan de menu === | === Arrière plan de menu === | ||
+ | Il est possible d'ajouter sont "background" pour le menu, comme dans Half-Life, vous pouvez définir plus d'un arrière plan et selon le chapitre débloqué. Dans le dossier "scripts/" vous trouverez le fichier "ChapterBackgrounds.txt", c'est lui | ||
+ | |||
+ | que vous devez éditer pour définir les map pour le menu. | ||
+ | <pre> | ||
+ | "chapters" | ||
+ | { | ||
+ | 1 "ma_map_menu" | ||
+ | }</pre> | ||
+ | Le numéro est celui associé au chapitre, 0 et 1 étant débloqué par défaut. La map ne dois pas contenir d'emplacement pour le joueur "player_start", mais une caméra pointé sur une "target". | ||
+ | |||
+ | Plus exactement, dans votre map, ajouter un "point_viewcontrol" qui sera la vue de l'arrière-plan, ajouter devant la direction avec un "info_target", donner s'y un nom à fin de configurer dans la camera qu'elle entité regarder. N'oublier pas non plus de définir la valeur "Hold infinite time" dans la valeur de la camera "point_viewcontrol". Faites la compilation de la map et le Cubemap comme habituel, et vous aurez votre arrière-plan animé/3D. | ||
+ | |||
+ | Dans le moteur source, certaines transition utilise une image fix, par exemple entre les vidéo d'intro et le menu, ou dans le chargement de la première map. Créer une image de 1024x1024, elle sera cette image fix, ceci est valable pour l'image "par défaut" et "par chapitre". Le flou utilisé dans Half-Life 2 est de 30%. Cette image aura deux versions, par exemple pour celle "par défaut" l'une sera "default.vtf" et une autre "default_widescreen.vtf" (vos images TGA convertis en VTF avec leur VMT). La version "widescreen" possède la même valeur, vu que seul des multiples de 4 sont possibles, mais vous pouvez optimiser pour quand elle sera étiré. | ||
+ | |||
+ | Dans le dossier "materials/vgui/loading/" vous allez y placer vos fichiers, soit les images pour "default" et vos chapitres comme "chapter0", avec leur variante "widescreen", les fichier VMT doivent être conçu avec ces paramètres; | ||
+ | <pre> | ||
+ | "UnlitGeneric" | ||
+ | { | ||
+ | "$basetexture" "vgui/loading/default" // vers le fichier VMT default.vtf ou chapter0.vtf etc... selon son nom | ||
+ | "$vertexcolor" 1 | ||
+ | "$vertexalpha" 1 | ||
+ | "$ignorez" 1 | ||
+ | "$no_fullbright" "1" | ||
+ | "$nolod" "1" | ||
+ | }</pre> | ||
+ | Le "default" est essentiel pour au moins personnaliser sans voir une map de Half-Life 2. | ||
+ | |||
+ | Pour personnaliser l'arrière du menu sans une map 3D ou si la console développeur est ouverte, il faut pour cela créer les mêmes fichiers que précédemment, mais avec le nom de la map, par exemple, si votre map d'arrière plan ce nomme "monmod_menu", vous aurez à créer "monmod_menu" .vmt et .vtf et "monmod_menu_widescreen" aussi avec le .vmt et .vtf dans le dossier "materials/console/". | ||
+ | === Icones === | ||
+ | Comme vu dans le "GameInfo.txt", vous pouvez définir une icône pour votre Mod. Steam et source prend 2 images; | ||
+ | "resource/game.ico" est une icône standard, vous pouvez inclure les dimensions habituel et plus; 16x16, 32x32, 48x48, et les plus hautes | ||
+ | "resource/logo.tga" est une image au format TGA, sur fond noir idéalement, si vous ne pouvez pas définir la couleur Alpha à votre TGA, la dimension est de 16x16 | ||
+ | "resource/logo_big.tga" est une image au format TGA, sur fond noir idéalement, si vous ne pouvez pas définir la couleur Alpha à votre TGA, la dimension est de 32x32 | ||
+ | "resource/logo_huge.tga" est une image au format TGA, sur fond noir idéalement, si vous ne pouvez pas définir la couleur Alpha à votre TGA, la dimension est de 256x256 | ||
=== Chapitres === | === Chapitres === | ||
+ | Pour définir les chapitres, rendez-vous dans le dossier "cfg/" de votre mod, et créer un fichier selon le numéro du chapitre, habituellement "1", mais vous pouvez définir un chapitre "0", qui peut servir par exemple pour un "Hzard Course" ou un "Tech Demo". Alors votre nom sera "chapter1.cfg" par exemple, à l'intérieur vous inscrivez la map à charger comme suit; "map nom_de_map". | ||
+ | Maintenant que vos chapitres sont créé, aller dans "resource/" et éditer vos fichiers de langues comme "votremod_english" avec ce code comme exemple; | ||
+ | "monmod_Chapter0_Title" "Tech Demo" | ||
+ | Maintenant, vous devez choisir l'image pour votre chapitre. Noter que le moteur source ne peut charger que des images dans des multiples de 4 (soit 4,16,32,64,128,256,512,1024,2048,4096) mais que le chapitre ne ce conforme pas à cette demande. Vous devrez créer une image de 256x128 au format TGA sur fond noir, et placer votre image de chapitre dans le coin supérieur gauche de l'image sur 152x86 (autrement dit,inclure votre image de chapitre au dimension de 152x86, dans une image sur fond noir au format 256x128). Convertiser la au format VTF et nommer la "chapter0.vtf", si "0" est le numéro de votre chapitre. Créer aussi un fichier VMT au même nom, avec ceci; | ||
+ | <pre> | ||
+ | "UnlitGeneric" | ||
+ | { | ||
+ | "$baseTexture" "VGUI/chapters/chapter0" | ||
+ | "$vertexalpha" 1 | ||
+ | }</pre> | ||
+ | Vous aurez devinez que les fichiers ce place dans le dossier "materials/vgui/chapters/" de votre mod. | ||
== Astuces et notes == | == Astuces et notes == | ||
Version actuelle datée du 14 février 2021 à 00:20
Nom | Source SDK |
---|---|
Modèle | Client/Server + Base/Episodic |
Fabricant | Valve Software |
Site Web | developer.valvesoftware.com/wiki |
Version | 2013 (actuel) |
Type | Moteur de jeu |
Système | Windows, Linux*, MacOS* |
Sommaire
Description
Ce guide explique les rudiments de base du Source SDK 2013, pour un Mod Single Player.
Importation et actualisation de : https://forum.vossey.com/topic/73157-tuto-source-sdk-2013-modding/
Ce guide est créé par les observations en situation réel et la traduction depuis le site Wiki de Valve.
Préparation
Logiciels requis
- Le Source SDK base 2013 : Gratuit sur Steam
- Notepad++ : Notepad est déconseillé pour une bonne prise en charge des formats de document requis,
- VTF Edit : Importation et édition partiel des materials (images), format VTF et VTM,
- Skin Editor : Éditeur de model pour modifier les informations sur les materials,
- Crowbar : Plusieurs outils de compilation et décompilation,
- Goldwave : Édition et création des sons Waves,
- ModMaker : Outils pour créer l'importation des sources requis plus simple,
- Rad Tools : Permet de convertir des vidéos dans le format Bink!,
- Visual Studio Community 2013 : pour compiler les DLL si vous devez apporter des modifications avancés,
- Programme d'édition d'image, capable de prendre en charge le format TGA. (Gimp par exemple)
Personnalisations et configurations
Les Scripts
Le dossier "scripts/" peut contenir beaucoup d'éléments, il peux y avoir les fichiers des sons, des armes, des éléments à charger etc.... les fichiers finissant par "_manifest.txt" sont ceux qui sont les "maîtres" de ces semblables, et appel les autres, par exemple, "game_sounds_manifest.txt", est celui qui appel les autres "game_sounds_" et même d'autres fichiers de sons (level_music.txt, par exemple). La présence d'un script dans le dossier annule l'effet de celui par défaut, alors vous pouvez contrôler ce qui sera chargé, ou non.
Commençons avec le plus simple, le fichier "credits", il serait traduisible, mais à ce moment si d'écrire, je n'ai pas arrivé à le faire correctement. Vous avez trois utilité à ce document; 1) afficher les crédit de début, 2) afficher les crédits de fin, et 3) afficher le Logo si besoin. Le Logo est le "[Valve]" qu'ont voit dans le jeu, il est le résultat de la police de caractère HalfLife2.ttf, vous devrez changer la valeur de la police pour l'utiliser en version texte. Le crédit d'intro est celui vu dans le train (HL2), et le crédit de fin... bah .... c'est celui qu'ont vois à la fin.... sur fond noir.
Vous pouvez définir dans chacune des sections le texte et suivi d'un alias, malgré le nom utilisé, il ne sert pas à savoir ou va le texte, (Intro ou Outro), mais c'est un alias de Style (police, grosseur). Alors dans vos fichiers SourceScheme.res et ColorScheme.res dans le dossier "resource/", vous pouvez ajouter et éditer les alias pour ajouter du style à vos crédits. Petite suggestion, vu qu'il y a un crédit de fin, servez-vous de L'intro pour écrire la mise en situation de votre jeu, un peu comme avec HL1 et le train, qui donnais le nom du joueur, son niveau scolaire.... Les textes sont sensibles à la case (double espace donne un double espace) et prend en charge les expressions standard (comme \n pour une Nouvelle ligne).
La section "CreditsParams" du document sert de style d'effet;
"CreditsParams" { "logo" "Wolfenstein 3D: Source" // Quand ont appel "logo" via la map "fadeintime" "1.5" //apparition de la ligne intro "fadeouttime" "1.5" //disparition de la ligne intro "fadeholdtime" "1" //durée de transition entre chaque ligne "nextfadetime" "1" //durée de transition entre block de 3 lignes "pausebetweenwaves" "3"//attente avant de passer au block suivant de 3 lignes "logotime" "2" // temps affiché du logo "posx" "96" // position en horizontal (max 640) "posy" "340" // position en vertical (max 480) "color" "255 255 255 128" // couleur du text avec transparence (blanc 50% ici) //Outro Parameters "scrolltime" "90" //temps total pour le générique, + de ligne avec ue petite valeur fait qu'il affichera plus vite, l'inverse ralenti... "separation" "10" // entre chaque ligne }
Les Resources
Dans le dossier "cfg/", vous avez un fichier nommé "skill.cfg", il regroupe l'ensemble des paramètres de base du moteur pour les NPC, les items, les réactions (armes). Vous pouvez par exemple ajuster la valeur de santé par défaut des Combines, des citoyens, des ennemis, c'est ce fichier qui sert à "balancer" la difficulté.
Dans le dossier "resource/", vous trouverez plusieurs fichiers, vous y en ajouterez certainement quelques uns. Vous trouverez des fichiers avec l'extension .TTF, ce sont des polices de caractère, Half-Life 2 se sert de L'une d'entre elle pour afficher par exemple les icônes d'arme. Mais il est possible de contourner ce remplacement par la mise en pace d'une image à la place. Un fichier nommé "votremod_english.txt" représente les variable de traduction, pour créer une version français, créer le fichier, en UTF-8; "votremod_french.txt" en suivant le même principe de structure.
Les fichiers avec l'extension .RES sont des fichiers dit Resource, tel que utilisé pour compiler en .Net par exemple. Mais vous pouvez les éditer facilement.
ClientScheme.res et SourceScheme.res
Ce sont l'organisation des éléments du moteur Source, vous y trouverez les dimensions et couleurs pour les fenêtres de dialogue, le menu, les élément visuel de base du HUD etc... le tout doit être sauvegardé en UTF-16 LE. Les couleurs sont en RGB avec transparence (Red Green Blue Opacity <-> 0-255 0-255 0-255 0-255 0-255), il est possible de créer des alias couleur pour faciliter l’implantation. Vos trouverez également dans ces documents les polices de caractère utilisé et remplaçable. Le chargement des polices ce trouve à la fin du fichier. Avec mes tests, je peux vous dire que ce n'est pas toutes les polices qui sont pris en chargent. Alors faites beaucoup de test et trouvez vous une valeur facilement (comme celle de MenuLarge{}) pour faire vos essais avant de commencer vos remplacement. De plus, il faudra surement ajuster vos dimensions du texte en conséquence de votre police choisi. Astuce; utilisez des polices avec un nom court et simple et pas besoin de L,installer sur votre ordinateur, comme indiqué dans les documents, les fichiers de police sont chargé par le moteur si il n'existe pas dans le système.
GameMenu.res
Lui représente les liens du menu, tel que "Nouvelle partie, options, quitter....", vous pouvez retirer par exemple la section "Succès" vu que votre Mod n'en as aucun.
GameLogo.res
Lui il défini vos images de base, dans celui ci vous trouvez ;
Resource/GameLogo.res { GameLogo { ControlName EditablePanel fieldName GameLogo xpos 0 ypos 0 zpos 0 wide 128 //largeur tall 128 //hauteur autoResize 1 pinCorner 1 visible 1 enabled 1 offsetX -70 //offset depuis l'élément positionné Menu offsetY -100 //offset depuis l'élément positionné Menu } Logo { ControlName ImagePanel fieldName Logo xpos 0 ypos 0 zpos 0 wide 128 // largeur tall 128 // hauteur visible 1 enabled 1 image logo // image en VMT link a un VTF scaleImage 1 } }
ci il y a une attrape, le fichier "logo", qui représente votre image/icon/titre, il ce trouve au format VMT (appel) VTF (image); "materials/vgui/logo".
Plus avancés
La partie la plus visuel est sans doute le HUD, ou la santé, les munitions et autres informations sont affichés. Pour gérer leur positions et dimensions, c'est le fichier "scripts/HudLayout.res" qui s'en charge. Sachez que le moteur Source calcul toujours les menu et le Hud sur une dimension de 640x480, et par la suite l'ajuste à la résolution du client. Les premières valeur place le rectangle, le "text_" pour la position du titre de l'élément, comme "santé" ou "combi", et le "digit_" est pour la valeur affiché.
Dans le dossier "resource/", le fichier "ClientScheme.res" possède quelques valeurs, soit; HudNumbers, HudNumbersGlow, HudNumbersSmall, HudSelectionNumbers, HudHintTextLarge, HudHintTextSmall, HudSelectionText. Dans le document "SourceScheme.res", c'est les valeurs de "HUDNumber" que vous retrouverez.
Si vous utilisez le "title" et "title2" dans le "GameInfo.txt", "title2" utilise les même paramètres que "title", la valeur "TitleFont2" disponible dans le document "resource/SourceScheme.res" ne l'affecte pas.
Pour gérer le reste des menus et visuel, tel que les dialogues de chapitres, les options et l'ensemble de couleurs, c'est le document "resource/SourceScheme.res" qui possède les valeurs global de base. Si vous fouillez dans le dossier "hl2/resource" du Source SDK 2013, vous trouverez d'autres fichiers qui serve à ajuster chacune des interfaces possibles. Par exemple, pour changer l'image et les valeur de l'écran de chargement d'une map le fichier "loadingDialogBackground.res" possède les paramètres, copier le dans votre mod avant de les modifiers.
Images et textures (materials)
Ce qui semble parfois le plus simple est le plus compliqué. Les images sous source n'implique pas qu'une simple importation dans leur format, celui si doit être associé à des paramètres. Une image, qu'ont nomme material sous Source, ce trouve être un Sprite, Decal, Texture, Overlay ou un Helper pour un effet.... Ce guide est pour débutant alors je ne vais que effleurer le sujet. Noter que chaque image pris en charge sont en format .VMT, mais dans les faits, les sources sons aux format .VTF. Le VTF (Valve Texture Format(?)) est l'image, la source. Avec VTF Edit, vous pouvez importer des images, la transparence est pris en charge mais de manière limité. Il est préférable d'enregistrer vos images à importer en format .TGA, qui reflète bien les limitations du format, étant également le format facultatif dans certains cas. Le VMT (pour Valve Material File(?)), contient d'autres paramètres et l'appel des fichiers sources requis. Oui, des, car dans le cas d'un mur par exemple, vous aurez la texture, et également le "bumpmap", qui consiste à une représentation 2D des dénivellations 3D de votre images, pour justement lui donner le rendu de texture, et non plat. VTF Edit peut générer votre fichier "bump" au besoin.
Sujets non couvert dans ce guide, mais associé aux materials;
Texture de model Texture de NPC (skin) Texture d'arme Skybox Effets Animations
Texture de base (plafond, mur, plancher)
Celle-ci est généralement Opaque, ce qui simplifie l'intégration. Il vient (ou non) avec un fichier Bump, sont format est habituellement sous LighmappedGeneric, associé à une réponse de la surface (bois, métal, brique,...).
Importation normal : Importer votre fichier en type 'Environmental Map', assurez-vous d'être dans un format de multiple de 4, sinon, voir conseillez à chaque fois, de faire une re-dimension en important. Le Midmap consiste à la création d'une version légerte de l'image compressé pour les apparence longue-distance. Garder les paramètres par défaut. Importation en "Bump" : Faites la même chose que l'importation de la texture, cependant, sélectionner le "Normal Map", ajuster les paramètres de cette section avec le principe; essai/erreur, car selon la texture à importer, l'effet peut être très différent. Création du VMT : Une fois l'image importé et sauvegardé, garder la (ouvrez la) pour créer le VMT, VTF Edit offre plusieurs options, mais ce qui est important est le chemin vers la texture, dans cette section la Base Texture est importante, mais la Bump Map est requis seulement si vous désirez un effet texturé selon l'image importé. Dans les Options, le LightmappedGeneric est tout indiqué, vous pouvez définir le type de surface qu'il représente (sinon Default si vide), pour donner un effet de reflet, utilisé avec Cubemap, l'option "Environment Map Contrast" est requis.
Texture d'ajout (overlay, decal, sprite,...)
Un peu plus complexe avec la transparence, même moi je ne maîtrise pas tout à fait, alors je vous explique ce que je sais...
Le format de traitement est UnlitGeneric, pour une transparence global de 50%, utiliser "Translucent", Vertex Color / Vertex Alpha affecte la transparence, qui s'applique au Blanc ou au Noir le DX1 bit Alpha dans l'importation pourrait prendre en charge le canal Alpha pour la transparence (non testé) L'importation ce fait avec "Animated Map" Il est possible d'importer des frames pour créer une animation, ceci est relativement simple. Vous devez extraire chaque frame de l'image, et d'importer l'ensemble dans l'ordre.
Création et importation
Image animé
Replacements
NPC et objets (models)
Tous à vos Weapons!
Les fichiers "weapons_*" sont les configuration de vos armes, ici réside le secret pour remplacer vos armes et choisir certaines valeur, comme le type de munition, combien dans le chargeur, le modèle à utiliser, etc... Dans la section du bas, c'est ce qui sera affiché dans le menu de sélection, le caractère "`" est vide dans la police HalfLife2.ttf, si vous désirez masquer des informations. Si vous désirez le remplacer et ce, avec une image, utilisez cet exemple;
"weapon" { "file" "sprites/icon_crowbar" // l'image depuis "materials/", "x" "0" "y" "135" "width" "64" "height" "64" } Cette image doit avoir un fond noir, qui sera la transparence, et le blanc votre icone, éviter les couleur (blanc/noir seulement est idéal). Pour un meilleur rendu, laisser environ 5 à 10 px de libre dans votre image pour éviter de mauvais affichage (bug du HUD).
Pour la modification d'une arme plus poussé, vous devez éditer les sources (voir plus bas au sujet du C++).
Les autres documents sont similaires ou servent à charger d'autres fichiers.
Ajouts
Remplacements
Avancés
Sons et musiques (sounds)
Les sons sous Source sont majoritairement en .WAV, les musiques peuvent être en MP3. Le moteur ne prend pas en charge le 48Khz (et plus), alors faites vos sons en 44Khz, Stereo (ou mono). Goldwave est le seul programme permettant d'ajouter des "cue" dans le fichier Wav (pas possible avec les autres programmes, pas possible non plus avec un MP3), c'est "cue" servent à définir la position ou il est possible de "loop" dans le son (quand c'est requis, par exemple, les portes). Le premier "cue" doit ce nommer "start_cue" et le dernier "end_cue". (Possible bug, le loop peut être indéfini, ceci arrive quand le moteur ignore la valeur "end_cue", pas de solution possible, mais bug connu de Valve (documenté dans le WIki)). Les sons ce place tous dans "sounds/", la place n'a pas vraiment d'importance, sauf si vous désirez remplacer un fichier de base. Penser a effacer le fichier "sound.cache" pour vous assurez d'actualiser la liste des sons.
Si vous incluez de la musique, vous voudrez surement la mettre en "loop", Source n'est pas en mesure de "looper" les mp3, et une piste en Wav est trop gros pour rien (3Mo pour MP3 tandis que 30Mo en Wav habituellement). La petite astuce est de connaitre le nombre de seconde de votre MP3, par exemple 210 (3m 30s), ajouter un "logic_timer" à votre carte avec ce délais pour "refire" le "ambient_generic" pour rejouer le fichier, il n'y a pas d'autres solution, le fichier "level_music.txt" vous n'aideras pas.
Ce sont les fichiers des sons associés aux objets, lieux, ou NPC. C'est dans ces documents que vous pouvez retrouver les infos sur le son d'une action, et sois la changer, ou sois savoir quel fichier qu'il faut remplacer. Vous pouvez aussi ajuster d'autres paramètres, tel que; le volume, le pitch, le channel, et proposer plus d'un sons avec un appel "random". Vous pouvez rendre un son "nulle" avec ce paramètre pour le "wave"; "commun/null.wav".
Préparation des fichiers de base
Avec ModMaker, vous pouvez facilement créer la structure requise de vos fichiers de Mod; Ajouter un nouveau Mod à ModMaker, il va vous demander 2 dossiers, celui ou le jeu est installé, habituellement c'est "C:/Program files/Steam/commun/sourcemods/<votremod>", le deuxième dossier est pour vos fichiers de travail, vos sources, choisissez un dossier à votre choix. Même que vous risquer de ne pas trop l'utiliser. Avec ModMaker, c'est tout. Dans le dossier créé dans "sourcemods", vous avec un fichier nommé "GameInfo.txt", c'est les détails de votre Mod est où se trouve vos fichiers. Voici un exemple;
"GameInfo" {
"game" "Mon Mod Source" "title" "Mon Mod Source" "title2" "un sous titre ? optionnel" "supportsvr" 0 // support le VR ? "type" "singleplayer_only" // Si vous utilisez le multiplayer, penser à installer le Source SDK base 2013 Multiplayer "icon" "resource/icon" // Mon Mod à une icon! "NoDifficulty" 1 // Choisir la difficulté ? Obselet, mais forcé, au cas ou "Developer" "levelKro" // C'est qui le génie "Developer_URL" "https://levelkro.com" // Ou je peux en savoir plus sur le génie "Manual" "https://levelkro.xyz/wiki/" // Si tu as un manual ou Wiki "gamelogo" 1 // J'ai pas qu'une icon, j'ai aussi un logo :) "FileSystem" { "SteamAppId" 243730 // Même si le Mod est conçu sous HL2, ont désire le SOurce SDK Base 2013 comme jeu de base "SearchPaths" { //"gamebin" "|gameinfo_path|bin" // Si tu veux fournir le DLL avec ton Mod (déconseillé de copier un DLL d'un jeu source existant, votre propre DLL compilé seulement.) "gamebin" "|all_source_engine_paths|sourcetest/bin" // Utiliser le DLL du Source SDK 2013 "game+mod" "|gameinfo_path|monmodname.vpk" "game+mod+mod_write+default_write_path" "|gameinfo_path|." "game_lv" "hl2/hl2_lv.vpk" "game" "|all_source_engine_paths|hl2/hl2_english.vpk" "game" "|all_source_engine_paths|hl2/hl2_pak.vpk" "game" "|all_source_engine_paths|hl2/hl2_textures.vpk" "game" "|all_source_engine_paths|hl2/hl2_sound_vo_english.vpk" "game" "|all_source_engine_paths|hl2/hl2_sound_misc.vpk" "game" "|all_source_engine_paths|hl2/hl2_misc.vpk" "game" "|all_source_engine_paths|hl2" "platform" "|all_source_engine_paths|platform/platform_misc.vpk" "platform" "|all_source_engine_paths|platform" } }
} Dans cet exemple, j'ai commenté certaines des lignes, selon les situation. Le dossier des DLL (gamebin), c'est la vérification de l'autorisation d'utiliser le moteur Source. Il est requis pour démarrer, sinon le jeu ouvre et ce ferme rapidement (également ce problème si les DLL ne marche pas avec le AppID, par exemple utiliser les DLL de Source SDK sur une exécution avec Half-Life 2 (AppId 220)).
Citation
Attention; utiliser le DLL du sourcetest fournis un ensemble d'action qui marcheront parfaitement, mais il est préférable, par la communauté, de créer sont propre DLL avec les modifications incluse dans celui si, lorsque possible. Mais dans les faits, si tu ne le dit pas, personne ne le sauras.
Les dossiers
cfg/ : contient vos chapitres (chapterX.cfg) et les valeurs des éléments de base (skill.cfg) maps/ : vos maps compilé (en BSP) materials/ : Textures, Decals, Sprites etc.... models/ : Les modèles, items, weapons resource/ : Des fichiers de compilation spécifique (remplacement de Visual Studio) scripts/ : Scripts de chargements et des éléments sounds/ : Vos sons, musiques, etc.... Les Resources
Dans le dossier "cfg/", vous avez un fichier nommé "skill.cfg", il regroupe l'ensemble des paramètres de base du moteur pour les NPC, les items, les réactions (armes). Vous pouvez par exemple ajuster la valeur de santé par défaut des Combines, des citoyens, des ennemis, c'est ce fichier qui sert à "balancer" la difficulté.
Dans le dossier "resource/", vous trouverez plusieurs fichiers, vous y en ajouterez certainement quelques uns. Vous trouverez des fichiers avec l'extension .TTF, ce sont des polices de caractère, Half-Life 2 se sert de L'une d'entre elle pour afficher par exemple les icônes d'arme. Mais il est possible de contourner ce remplacement par la mise en pace d'une image à la place. Un fichier nommé "votremod_english.txt" représente les variable de traduction, pour créer une version français, créer le fichier, en UTF-8; "votremod_french.txt" en suivant le même principe de structure.
Les fichiers avec l'extension .RES sont des fichiers dit Resource, tel que utilisé pour compiler en .Net par exemple. Mais vous pouvez les éditer facilement.
ClientScheme.res et SourceScheme.res
Ce sont l'organisation des éléments du moteur Source, vous y trouverez les dimensions et couleurs pour les fenêtres de dialogue, le menu, les élément visuel de base du HUD etc... le tout doit être sauvegardé en UTF-16 LE. Les couleurs sont en RGB avec transparence (Red Green Blue Opacity <-> 0-255 0-255 0-255 0-255 0-255), il est possible de créer des alias couleur pour faciliter l’implantation. Vos trouverez également dans ces documents les polices de caractère utilisé et remplaçable. Le chargement des polices ce trouve à la fin du fichier. Avec mes tests, je peux vous dire que ce n'est pas toutes les polices qui sont pris en chargent. Alors faites beaucoup de test et trouvez vous une valeur facilement (comme celle de MenuLarge{}) pour faire vos essais avant de commencer vos remplacement. De plus, il faudra surement ajuster vos dimensions du texte en conséquence de votre police choisi. Astuce; utilisez des polices avec un nom court et simple et pas besoin de L,installer sur votre ordinateur, comme indiqué dans les documents, les fichiers de police sont chargé par le moteur si il n'existe pas dans le système.
GameMenu.res
Lui représente les liens du menu, tel que "Nouvelle partie, options, quitter....", vous pouvez retirer par exemple la section "Succès" vu que votre Mod n'en as aucun.
GameLogo.res
Lui il défini vos images de base, dans celui ci vous trouvez ;
Resource/GameLogo.res { GameLogo { ControlName EditablePanel fieldName GameLogo xpos 0 ypos 0 zpos 0 wide 128 //largeur tall 128 //hauteur autoResize 1 pinCorner 1 visible 1 enabled 1 offsetX -70 //offset depuis l'élément positionné Menu offsetY -100 //offset depuis l'élément positionné Menu }
Logo { ControlName ImagePanel fieldName Logo xpos 0 ypos 0 zpos 0 wide 128 // largeur tall 128 // hauteur visible 1 enabled 1 image logo // image en VMT link a un VTF scaleImage 1 } } Ici il y a une attrape, le fichier "logo", qui représente votre image/icon/titre, il ce trouve au format VMT (appel) VTF (image); "materials/vgui/logo".
Les scripts
Le dossier "scripts/" peut contenir beaucoup d'éléments, il peux y avoir les fichiers des sons, des armes, des éléments à charger etc.... les fichiers finissant par "_manifest.txt" sont ceux qui sont les "maîtres" de ces semblables, et appel les autres, par exemple, "game_sounds_manifest.txt", est celui qui appel les autres "game_sounds_" et même d'autres fichiers de sons (level_music.txt, par exemple). La présence d'un script dans le dossier annule l'effet de celui par défaut, alors vous pouvez contrôler ce qui sera chargé, ou non.
Commençons avec le plus simple, le fichier "credits", il serait traduisible, mais à ce moment si d'écrire, je n'ai pas arrivé à le faire correctement. Vous avez trois utilité à ce document; 1) afficher les crédit de début, 2) afficher les crédits de fin, et 3) afficher le Logo si besoin. Le Logo est le "[Valve]" qu'ont voit dans le jeu, il est le résultat de la police de caractère HalfLife2.ttf, vous devrez changer la valeur de la police pour l'utiliser en version texte. Le crédit d'intro est celui vu dans le train (HL2), et le crédit de fin... bah .... c'est celui qu'ont vois à la fin.... sur fond noir.
Vous pouvez définir dans chacune des sections le texte et suivi d'un alias, malgré le nom utilisé, il ne sert pas à savoir ou va le texte, (Intro ou Outro), mais c'est un alias de Style (police, grosseur). Alors dans vos fichiers SourceScheme.res et ColorScheme.res dans le dossier "resource/", vous pouvez ajouter et éditer les alias pour ajouter du style à vos crédits. Petite suggestion, vu qu'il y a un crédit de fin, servez-vous de L,intro pour écrire la mise en situation de votre jeu, un peu comme avec HL1 et le train, qui donnais le nom du joueur, son niveau scolaire.... Les textes sont sensibles à la case (double espace donne un double espace) et prend en charge les expressions standard (comme \n pour une Nouvelle ligne).
La section "CreditsParams" du document sert de style d'effet;
"CreditsParams" {
"logo" "Wolfenstein 3D: Source" // Quand ont appel "logo" via la map "fadeintime" "1.5" //apparition de la ligne intro "fadeouttime" "1.5" //disparition de la ligne intro "fadeholdtime" "1" //durée de transition entre chaque ligne "nextfadetime" "1" //durée de transition entre block de 3 lignes "pausebetweenwaves" "3"//attente avant de passer au block suivant de 3 lignes "logotime" "2" // temps affiché du logo "posx" "96" // position en horizontal (max 640) "posy" "340" // position en vertical (max 480)
"color" "255 255 255 128" // couleur du text avec transparence (blanc 50% ici)
//Outro Parameters
"scrolltime" "90" //temps total pour le générique, + de ligne avec ue petite valeur fait qu'il affichera plus vite, l'inverse ralenti... "separation" "10" // entre chaque ligne
} Game_Sounds* et NPC_Sounds*
Ce sont les fichiers des sons associés aux objets, lieux, ou NPC. C'est dans ces documents que vous pouvez retrouver les infos sur le son d'une action, et sois la changer, ou sois savoir quel fichier qu'il faut remplacer. Vous pouvez aussi ajuster d'autres paramètres, tel que; le volume, le pitch, le channel, et proposer plus d'un sons avec un appel "random". Vous pouvez rendre un son "nulle" avec ce paramètre pour le "wave"; "commun/null.wav".
Le pas simple sentences.txt
Ce fichier est unique en son genre, dans "npc_sounds_metropolice.txt", un bloc interpelle;
// ********************************************************** // OBSOLETE: // metropolice should always use sentences.txt entries, // the following should NOT be referenced. Sans qu'il soit mentionné dans le fichier "npc_sounds_soldier.txt", il est aussi affecté par ce commentaire, car il n'y a vraiment pas grand chose dans ce fichier.
Alors "sentences.txt" est une version "amélioré" du système de traduction et de language, en fait les réponses avec des valeurs ou la construction d'une phrase est requise utilise ce fichier, par exemple "Freeman repéré dans le Canal" peut référer à 4 waves différents. Vu que Half-Life 2 est utilisable avec des sous-titres, il ce devais de rendre les textes audio en version sous-titre le plus exacte possible. Mais dans mon guide, je vais me limiter à remplacer les sons, par le plus simple possible.
Dans le document "sentences.txt", descendez pour trouver la première ligne éditable (ceux avant son des alias pour des sons générique);
//PAIN COMBINE_PAIN0 npc/npcPain1(v100) {Len 0.47} Ceci est un exemple déjà modifié, tout les sons seront cherchés dans "sounds/", alors vous considérez de partir de ce point. Dans l'exemple, ont va dont dans le dossier "npc/" pour le wav "npcPain1", le (v100) est facultatif, mais représente le volume, il existe aussi le pitch. Dans les "{ }", vous trouvez la durée précise (milliseconde) du son (ou ensemble). Le nom du son est "COMBINE_PAIN", le "0" est le premier élément, pour tout les sons, vous pouvez ajouter ou retirer des répliques en contrôlant la valeur numérique, comme ici il existe 1 seul son de douleur (pain), mais en créant "COMBINE_PAIN1" ont as une deuxième choix, le système passera automatiquement en "random". Pour annuler un son, vous définissez comme ceci;
// I am moving in COMBINE_FLANK0 common/null {Len 0.0} À la fin du document, vous retrouverez tout les sons pour l'habit HEV, comme par exemple "Santé 20%" ou "Mort imminente".
Utilisation de musique
Effets sonores et 'wavloop'
Introduction du mod (media)
Cartes; Menu et chapitres
Il est possible d'ajouter sont "background" pour le menu, comme dans Half-Life, vous pouvez définir plus d'un arrière plan et selon le chapitre débloqué. Dans le dossier "scripts/" vous trouverez le fichier "ChapterBackgrounds.txt", c'est lui
que vous devez éditer pour définir les map pour le menu.
"chapters" { 1 "ma_map_menu" }
Le numéro est celui associé au chapitre, 0 et 1 étant débloqué par défaut. La map ne dois pas contenir d'emplacement pour le joueur "player_start", mais une caméra pointé sur une "target".
Plus exactement, dans votre map, ajouter un "point_viewcontrol" qui sera la vue de l'arrière-plan, ajouter devant la direction avec un "info_target", donner s'y un nom à fin de configurer dans la camera qu'elle entité regarder. N'oublier pas non plus de définir la valeur "Hold infinite time" dans la valeur de la camera "point_viewcontrol". Faites la compilation de la map et le Cubemap comme habituel, et vous aurez votre arrière-plan animé/3D.
Dans le moteur source, certaines transition utilise une image fix, par exemple entre les vidéo d'intro et le menu, ou dans le chargement de la première map. Créer une image de 1024x1024, elle sera cette image fix, ceci est valable pour l'image "par défaut" et "par chapitre". Le flou utilisé dans Half-Life 2 est de 30%. Cette image aura deux versions, par exemple pour celle "par défaut" l'une sera "default.vtf" et une autre "default_widescreen.vtf" (vos images TGA convertis en VTF avec leur VMT). La version "widescreen" possède la même valeur, vu que seul des multiples de 4 sont possibles, mais vous pouvez optimiser pour quand elle sera étiré.
Dans le dossier "materials/vgui/loading/" vous allez y placer vos fichiers, soit les images pour "default" et vos chapitres comme "chapter0", avec leur variante "widescreen", les fichier VMT doivent être conçu avec ces paramètres;
"UnlitGeneric" { "$basetexture" "vgui/loading/default" // vers le fichier VMT default.vtf ou chapter0.vtf etc... selon son nom "$vertexcolor" 1 "$vertexalpha" 1 "$ignorez" 1 "$no_fullbright" "1" "$nolod" "1" }
Le "default" est essentiel pour au moins personnaliser sans voir une map de Half-Life 2.
Pour personnaliser l'arrière du menu sans une map 3D ou si la console développeur est ouverte, il faut pour cela créer les mêmes fichiers que précédemment, mais avec le nom de la map, par exemple, si votre map d'arrière plan ce nomme "monmod_menu", vous aurez à créer "monmod_menu" .vmt et .vtf et "monmod_menu_widescreen" aussi avec le .vmt et .vtf dans le dossier "materials/console/".
Icones
Comme vu dans le "GameInfo.txt", vous pouvez définir une icône pour votre Mod. Steam et source prend 2 images;
"resource/game.ico" est une icône standard, vous pouvez inclure les dimensions habituel et plus; 16x16, 32x32, 48x48, et les plus hautes "resource/logo.tga" est une image au format TGA, sur fond noir idéalement, si vous ne pouvez pas définir la couleur Alpha à votre TGA, la dimension est de 16x16 "resource/logo_big.tga" est une image au format TGA, sur fond noir idéalement, si vous ne pouvez pas définir la couleur Alpha à votre TGA, la dimension est de 32x32 "resource/logo_huge.tga" est une image au format TGA, sur fond noir idéalement, si vous ne pouvez pas définir la couleur Alpha à votre TGA, la dimension est de 256x256
Chapitres
Pour définir les chapitres, rendez-vous dans le dossier "cfg/" de votre mod, et créer un fichier selon le numéro du chapitre, habituellement "1", mais vous pouvez définir un chapitre "0", qui peut servir par exemple pour un "Hzard Course" ou un "Tech Demo". Alors votre nom sera "chapter1.cfg" par exemple, à l'intérieur vous inscrivez la map à charger comme suit; "map nom_de_map".
Maintenant que vos chapitres sont créé, aller dans "resource/" et éditer vos fichiers de langues comme "votremod_english" avec ce code comme exemple;
"monmod_Chapter0_Title" "Tech Demo"
Maintenant, vous devez choisir l'image pour votre chapitre. Noter que le moteur source ne peut charger que des images dans des multiples de 4 (soit 4,16,32,64,128,256,512,1024,2048,4096) mais que le chapitre ne ce conforme pas à cette demande. Vous devrez créer une image de 256x128 au format TGA sur fond noir, et placer votre image de chapitre dans le coin supérieur gauche de l'image sur 152x86 (autrement dit,inclure votre image de chapitre au dimension de 152x86, dans une image sur fond noir au format 256x128). Convertiser la au format VTF et nommer la "chapter0.vtf", si "0" est le numéro de votre chapitre. Créer aussi un fichier VMT au même nom, avec ceci;
"UnlitGeneric" { "$baseTexture" "VGUI/chapters/chapter0" "$vertexalpha" 1 }
Vous aurez devinez que les fichiers ce place dans le dossier "materials/vgui/chapters/" de votre mod.