INFORMATIONS DE BASE

Dossier du moteur (Engine Directory)

Avant toutes choses, Serious Engine réclame que la totalité des fichiers utilisés soient placés dans un seul repertoire, ou dans n'importe lequel de ces sous repertoires. Il n'est pas possible de charger ou sauvegarder un fichier depuis l exterieur de ce repertoire, ou d'un autre disque. Nous appelons ce repertoire 'engine directory'. Tous les fichiers sont réunis à un seul endroit et evite tout probleme d'utilisation de chemins relatifs dans la communication entre les fichiers. chaque fichier est uniquement identifié par son chemin relatif au sein du 'engine directory'.

Sur chaque ordinateur, le repertoire peut avoir un chemin et un nom totalement different; vous pouvez avoir plusieurs copies du moteur coexistant au meme moment sur le meme systeme.
Lorsque le jeu ou l'un des editeur est lancé, le moteur détecte automatiquement le chemin d'ou il a été exécuté, depuis la totalité du repertoire du moteur jusqu'à ces sous repertoires. Il n'y a aucun fichier qui n'est un chemin absolu. par ce systeme, vous pouvez simplement faire une copie complete du 'engine dir' dans un autre repertoire, disque ou ordinateur, et il marchera quand même.

Si vous travaillez en equipe, vous aurez surement besoin de partager ce repertoire avec les autres membres via un reseau. vos coéquipiers n'auront que faire de l endroit ou vous stockez vos données. Vous pouvez tres bien créer un dossier maitre sur le reseau, dans lequel vous mettrez les nouvelles versions de vos fichiers (textures, sons, niveaux, ...) puisque vos coéquipiers devront mettre ces données dans leur propre repertoire 'engine dir'. la structure de ce repertoire ne changeant pas d'un ordinateur a l autre.

Si vous avez installé serious sam et les outils serious engine, votre repertoire 'engine dir' doit probablement etre 'C:\Program files\Croteam\SeriousSam\'

Il est tres important que vous vous rapelliez que vous ne pouvez charger aucun fichier depuis l exterieur de ce repertoire. Sii vous essayez, vous verez apparaitre un message d erreur vous disant que ce fichier ne se trouve pas dans le bon repertoire et qu'il ne peut ete chargé. pour pouvoir charger ce fichier, vous devez en premier lieu le copier quelque part dans le repertoire 'engine dir'.

Structure des repertoires (Directory Structure)

A l interieur du repertoire 'engine dir', la structure des sous-repertories est assez libres. Quelques fichiers doivent ete dans des repertoires specifiques, mais le reste est tres flexible. Je vais vous decrire la structure utilisée pour serious sam:

Bin\
L'ensemble des fichiers executables du moteur, exe, dll, ... se trouvent dans ce repertoire

Bin\Debug\
Les versions de debugging des executables se trouvent ici

Classes\
Les liens des classes des entités (.ecl) sont ici. Utilisées pour identifier les classes individuelles des entités.

Data\
Divers fichiers de données, comme listing des fichiers, configuration, etc sont sauvés ici.

Data\Translations
Les fichiers de traductions pour la localisation sont placés ici.

Data\Var
Quelques variables specifiques qui ont besoin de travailler indépendament du schema du systeme persistant de stockage sont placées ici et sauvées au format txt.

Fonts\
Fichiers des polices d'écriture et leurs textures respectives.

Levels\
Fichiers des niveaux pour le jeu.

Models\
Placer les models '.mdl' ici et dans les sous repertoires.

Models\Editor\
Quelques models spécifiques recquis par les editeurs ce trouvent ici.

Music\
repertoire contenant les musiques (mp3 et ogg).

Players\
Fichiers de configuration des joueurs (nom, apparence pour chaque joueur).

SaveGame\
Stockage des sauvegardes des parties, un sous repertoire pour chaque joueur, plus un repertoire pour le jeu multijoueur avec ecran splité et un pour le jeu multijoueur en reseau.

Screenshots\
Captures d ecran sotckéées ici lorsque vous appuyez sur F11 pendant le jeu.

Scripts\
Fichiers scripts pour la console lors du démarrage

Scripts\GLSettings\
Scripts speciaux pour l ajustement automatique des configurations graphiques pour chaque carte 3D.

Sound\
fichiers son (wav ou ogg)

Temp\
Le moteur, le jeu ou les editeurs ont besoin de sauver une grande variété de fichiers temporaires. par exemple, une sauvegarde rapide d'une demo, les undo/redo des editeurs, et les copier/coller et bien d'autres...

Textures\
Fichiers .tex

Thumbnails\
icone (.tbn) pour chaque classe qui est inserée dans le niveau).

VirtualTrees\
l editeur de niveaux sauve votre virtual tree personnel ici.

Si vous ne voulez qu'ajouter des elements additionnels à serious sam, vous devez respecter cette structure pour que tout marche. Si vous avez acquis la licence du moteur, peut etre voudrez vous changer cette structure selon vos besoins.

Travailler avec la dépendance de fichier (File Dependencies)

Chaque fichier est un module séparé et le moteur ne compacte pas dans un quelquonque fichier. Vous devez donc faire attention avant de déplacer un quelquonque fichier. Les fichiers sont référancés par leur chemin relatif au moteur (engine dir).
Si un niveau 'level\mylevel.wld' utilise une texture 'textures\wall01.tex', et que vous décidez de déplacer cette textures dans 'textures\walls\bricks.tex', le niveau ne pourra plus etre chargé. Pour permettre de telles manipulations, serious engine supporte le remplacement automatique des fichiers.
le fichier 'Data\BaseForReplacingFiles.txt' liste le nom d'origine des fichiers et leur chemin, ainsi que l'endroit ou vous voulez les déplacer. Dans l exemple suivant, si vous ajoutez cette ligne :

"textures\wall01.tex" "textures\walls\bricks.tex"

Au chargement du niveau 'mylevel.wld', l'editeur remplacera automatiquement l'ancien chemin par le nouveau. Si vous tentez de lancer le niveau dans le jeu sans avoir fait le remplacement, le chargement ne se fera pas. Mais, si vous essayez de le charger avec l editeur, celui ci vous demandera le chemin du nouveau fichier. Si vous le faite, il ce souviendra du remplacement dans le fichier texte, Donc si vous tentez de charger un autre niveau contenant la même texture, le remplacement ce fera automatiquement sans votre intervention. A la fin du chargement, vous serez averti des modifications qui ont été éffectué.

C'est un outil tres pratique si vous renommez/déplacez vos fichiers. Parfois, si vous désirez que cela ne se fasse pas, peut etre, vous voulez savoir si vous n'avez pas certains fichiers sur le disque. Si vous utilisez le systeme de remplacement, vous devrez controler le remaping manuellement dans un editeur de texte a chaque fois, pour etre sur de savoir ce qu'il en est. Mais faites attention de ne pas créer du remapping récursif.

La dépendance est liée à tous les élements utilisés dans le niveau (textures, models, son, classes...) Les classes dependent bien sur des models, textures et sons utilisés.etc

Ces dépendances sont sauvées dans chaque fichier que le moteur utilise dans un format special. L utilitaire dependant (depend.exe) peut etre utilisé pour extraire ces dépendances et voir ce qui est dépendant et a quoi. Ces tres pratique pour mettre a jour de nouvelles versions de fichiers, pour la distribution de nouveaux contenus et similaires.

par exemple, une fois que vous avez créé un niveau nommé 'level\mylevel.wld', vous pouvez utiliser l utilitaire depend pour extraire tous les fichiers réclamés pour faire tourner ce niveau. Si vous voulez distribuer ce niveau, vous savez quels fichiers inclure dans la distribution. Vous pouvez aussi controler ces fichiers sur une ancienne version du jeu ne contenant pas ce niveau et trouver les fichiers nouveaux qui ont été ajoutés. etc...
pour plus d'informations sur la facon d utiliser l utilitaire depend, consultez sa docummentation.

Fichiers .gro

Serious Engine, les editeurs et le jeu travaillent tres bien avec tous les fichiers placés dans les repertoires comme indiqué précédament. Placer une grande quantité de fichiers dans les repertoires est a la fois un incovéniant pour l utilisateur (due à la difficulté de placer ces fichiers au bon endroit, et de la place que cela occupe) et à l'auteur par une distribution difficile.

pour resoudre ce probleme, vous pouvez compresser un groupe de fichiers dans un unique fichier '.gro'. un fichier Group n'est qu'un fichier zip ordinaire que vous pouvez créer avec votre logiciel de compression favoris (comme infozip, pkzip, winzip, windows commander...). Apres avoir compressé les fichiers, renommez cette archive avec l extension '.gro', et placez là dans le repertoire 'engine directory' (à ca racine). au démarrage du jeu, le moteur scanne tous les fichiers group et les ajoute à sa liste interne.

lors du chargement d'un fichier, le moteur utilise le schema suivant :

Si un MOD est lancé
- Son premier essai est de tenter d ouvrir directement le fichier sur le disque, mais le lien relatif au mod est utilisé (ex : Mods\MyMod\Models\Player\SeriousSam\...)
- Si le fichier n'est pas trouvé, le moteur essaiera de le localiser dans tous les fichiers .Gro se trouvant dans le repertoire du mod par odre inverse alphabetique (nouvelles versions par ordre alphabetique)
Si un MOD n'est pas lancé
- il essaiera d'ouvrir directement le fichier sur le disque (dans son repertoire correspondant)
- Si le fichier n'existe pas sur le dique, il cherchera sur le CD, s'il n'est pas là, il regardera dans chaque fichier Gro.
- Si le fichier n'est pas trouvé dans les fichiers Gro, il tentera de regarder dans le fichier de replacement, si le replacement est trouvé il retourne au debut et essaie a nouveau avec le nouveau lien.
-Si aucun replacement n'est trouvé, il demande à l'utilisateur un fichier de replacement (seulement si l editeur est installé)
-Si le fichier n'est pas trouvé, une erreur est repportée.

Lorsque vous ajoutez un fichier Gro avec un contenu totalement nouveau, vous pouvez en general lui donner n'importe quel nom avec l extension 'Gro' et le placer à la racine du 'engine dir'.
Mais si vous voulez créer un fichier Gro qui remplace certains anciens fichiers, vous devez proceder comme suit;
1) Le fichier qui doit etre remplacé ne doit pas exister sur le disque (un fichier physique remplace toujours n'importe quel fichier Gro)
2) le nom du fichier Gro doit se trouver apres tous les autres groupes pouvant contenir le fichier a remplacer.