Création de cartes pour les NanoMods existants
Je fournis les sources de mes cartes afin que vous puissiez vous en servir de modèles. Elles comportent toutes un certain nombre d'éléments nécessaires au fonctionnement du NanoMod qu'elles exploitent. Après avoir téléchargé l'archive de la source d'une carte, décompressez-la dans le dossier de cette carte (FarCry\Mods\NanoMods\Levels\xx_xxxxx).
- td_snake_source.zip (980 Ko)
-
zh_camp_source.zip (2.59 Mo)
zh_balltrap_source.zip (681 Ko) -
lr_sewers_source.zip (198 Ko)
lr_faceoff_source.zip (190 Ko) -
ck_monkeybay_source.zip (1.75 Mo)
ck_carnades_source.zip (2.82 Mo) - w8_forts_source.zip (828 Ko)
Voici maintenant la marche à suivre pour créer une carte de A à Z (je pars du principe que vous connaissez les bases de Sandbox). La première partie des explications est valable quel que soit le NanoMod pour lequel vous créez une carte.
Le dossier Levels\ auquel je fais référence dans cette page est bien sûr FarCry\Mods\NanoMods\Levels\.
-
Aide commune
- Lancez Sandbox et créez une nouvelle carte. Nommez-la en accord avec les autres cartes du NanoMod que vous avez choisi (utilisez le même préfixe)
- Copiez les fichiers languages.lua et properties.lua depuis le dossier d'une carte du NanoMod que vous avez choisi vers le dossier de votre nouvelle carte
- Modifiez les informations générales contenues dans ces deux fichiers (le nom de votre carte, votre nom, votre email et votre signature)
- Facultatif : Vous pouvez définir des valeurs par défaut pour les options de la partie. Il vous suffit de modifier (ou de décommenter) NanoMod.tDefaultSettings dans Levels\xx_xxxxx\properties.lua :
- Note : Ceci n'est valable que pour les cartes de NanoMods proposant des options de réglage de la partie. Pas en Tower Defense donc.
- Placez Delaytrigger_OnEverySecond (qui cadence le système de NanoMods et qui est configuré automatiquement)
- Plus tard, lorsque vous aurez terminé votre carte, réalisez son écran de chargement en vous basant s'il vous plaît sur le modèle que je fournis, afin que les cartes de NanoMods soient facilement reconnaissables. Téléchargez le modèle PhotoShop (233 Ko)
- Notes générales :
- Modifier l'orientation d'un ProximityTrigger ne sert à rien. Lors du calcul de collision, il est toujours considéré comme étant aligné aux axes (AABB).
- Les réglages que je donne pour les différents objets à placer sont basés sur les valeurs par défaut : après avoir placé un nouvel objet, ne modifiez que les réglages que je vous donne. Faites attention si vous dupliquez un objet existant.
Haut de page
-
Aide Tower Defense
- En tant que tout premier NanoMod, le Tower Defense a connu plusieurs versions très différentes. Son fonctionnement en conserve les stigmates et me paraît maintenant assez archaïque. Bref, les explications vont être longues - je vous conseille de tout lire avant de vous lancer...
- Placez ProximityTrigger_Switch (l'interrupteur qui déclenche le début de la partie)
- ActivateWithUseButton = True
- DimX, DimY, DimZ = [1 doit suffire]
- OnlyMyPlayer = True
- OnlyPlayer = False
- ScriptCommand = NanoMod:TowerDefense_OnActivateSwitch();
- TextInstruction = use_switch (voir Levels\td_xxxxx\languages.lua)
- TriggerOnce = True
- Placez DelayTrigger_EngineerTool (qui distribue les outils d'ingénieur)
- ScriptCommand = NanoMod:TowerDefense_ManageEngineerTools();
- Placez DelayTrigger_NextWave (qui lance la vague d'ennemis suivante)
- ScriptCommand = NanoMod:TowerDefense_LaunchNextWave();
- Placez Delaytrigger_RemoveDeadBodies (qui supprime les cadavres)
- ScriptCommand = NanoMod:TowerDefense_RemoveDeadBodies();
- Placez ProximityTrigger_Defeat (la zone que les ennemis doivent atteindre)
- DimX, DimY, DimZ = [à vous de voir...]
- OnlyAI = True
- OnlyPlayer = False
- ScriptCommand = NanoMod:TowerDefense_MissionDefeat();
- TriggerOnce = True
- Placez DelayTrigger_GameOver (qui gère la fin de la partie)
- ScriptCommand = NanoMod:TowerDefense_GameOver();
- Pour précharger les .cgf des ennemis
- Placez chaque ennemi spécial NanoMods (depuis Entity > AI > NanoMod_[...]) dans un coin de la carte inaccessible aux joueurs
- Donnez à chacun le nom suivant : Preload
- Réglez-les comme suit :
- HiddenIngame = True
- Pour que les ennemis laissent des armes ou munitions en mourant
- Créez un Equipement-Pack pour chacun des cinq ennemis spécial NanoMods : nommez-les DropPack_Big, DropPack_Bezerker, DropPack_BezerkerAlt, DropPack_Fast et DropPack_Stealth.
- Vous pouvez les laissez vides si vous voulez, mais créez toujours ces cinq Equipement-Packs même si vous n'utilisez pas les cinq ennemis spécial NanoMods.
- Note : Ce point est important car l'absence d'un DropPack peut ralentir le serveur.
- Pour que les ennemis apparaissent
- Placez des TagPoints aux endroits où les ennemis vont apparaître (si les ennemis sont nombreux à un endroit, placez un groupe de TagPoints)
- Nommez-les d'une lettre (ou d'un mot) suivie d'un chiffre (voir NanoMod.tLocations dans Levels\td_xxxxx\properties.lua) en utilisant la même lettre (ou le même mot) pour tous les TagPoints d'un même groupe
- Modifiez NanoMod.tWaves dans Levels\td_xxxxx\properties.lua en vous reportant aux instructions (écrites dans un anglais simple), afin que l'ennemi apparaisse à l'endroit voulu (location prend comme valeur la lettre ou le mot du nom du TagPoint, mais pas le chiffre)
- Pour que les ennemis se déplacent
- Dessinez un AIPath pour chaque TagPoint ou groupe de TagPoints, partant de lui ou d'à côté de lui, et arrivant au ProximityTrigger_Defeat, ou bien bouclant sur lui-même en passant par des ProximityTrigger_Damage (voir plus bas)
- Nommez cet AIPath à votre guise (sans oublier _PATH à la fin), et modifiez NanoMod.tWaves dans Levels\td_xxxxx\properties.lua afin que l'ennemi suive le chemin voulu (name prend comme valeur le nom de l'AIPath partant du TagPoint ou groupe de TagPoints choisi, mais sans le _PATH à la fin)
- Pour que les joueurs puissent construire des mitrailleuses
- Note : Ci-dessous, n représente le numéro d'une mitrailleuse
- Placez des MountedWeaponMG[n] aux endroits que vous jugez stratégiques, et réglez ces mitrailleuses comme suit :
- Hidden = True
- angHLimit = [à vous de voir...]
- angVLimitMax = [à vous de voir...]
- angVLimitMin = [à vous de voir...]
- Placez des BuildableObject[n] à l'emplacement des mitrailleuses (mettre InitalState à 0 est nécessaire et vous aidera en plus à placer l'objet), et réglez-les comme suit :
- Model_building = Objects\multiplayer\buildables\mountedweapon_building.cgf
- Model_built = Objects\multiplayer\buildables\mountedweapon_base.cgf
- Model_damaged = Objects\multiplayer\buildables\mountedweapon_destroyed.cgf
- Model_repair = Objects\multiplayer\buildables\mountedweapon_repair.cgf
- Model_unbuilt = Objects\multiplayer\buildables\unbuilt_mountedweapon.cgf
- max_buildpoints = [un nombre] (environ 250 par seconde de construction)
- max_hitpoints = 0
- max_repairpoints = [un nombre] (environ 250 par seconde de réparation)
- Events > On built > MountedWeaponMG[n] [Unhide]
- Events > On built > ProximityTrigger_Damage[n] [Enable]
- Events > On damaged > MountedWeaponMG[n] [Hide]
- Events > On damaged > ProximityTrigger_Damage[n] [Disable]
- Pour que certains ennemis détruisent les mitrailleuses
- Note : Ci-dessous, n représente le numéro d'une mitrailleuse
- Placez un ProximityTrigger_Damage[n] à côté de chaque mitrailleuse de telle sorte qu'un ennemi puisse le déclencher en suivant un AIPath qui le traverse
- Réglez-le comme suit :
- DimX, DimY, DimZ = [1 doit suffire, mais attention aux ennemis rapides...]
- Enabled = False
- OnlyAI = True
- OnlyPlayer = False
- Events > On Enter > BuildableObjects[n] [damaged]
- Heureusement que je vous avais dis que c'est compliqué. Alors n'ayez pas peur de relire une fois de plus, et... bonne chance !
Haut de page
-
Aide Zone Holding
- Tout comme le Tower Defense, le Zone Holding a beaucoup évolué depuis sa création. Encore une fois, avant de vous lancer, je vous conseille de lire toutes les explications.
- Placez ProximityTrigger_Switch (l'interrupteur qui déclenche le début de la partie)
- ActivateWithUseButton = True
- DimX, DimY, DimZ = [1 doit suffire]
- OnlyMyPlayer = True
- OnlyPlayer = False
- ScriptCommand = NanoMod:ZoneHolding_OnActivateSwitch();
- TextInstruction = use_switch (voir Levels\zh_xxxxx\languages.lua)
- TriggerOnce = True
- Facultatif : Events > On Enter > SoundSpot_Switch [Play ou Stop]
- Facultatif : Events > On Enter > DelayTrigger_Switch [InputTrigger]
- Placez DelayTrigger_ManageEnemiesSpawn (qui cadence la génération des ennemis)
- ScriptCommand = NanoMod:ZoneHolding_ManageEnemiesSpawn();
- Placez DelayTrigger_RemoveDeadBodies (qui supprime les cadavres)
- ScriptCommand = NanoMod:ZoneHolding_RemoveDeadBodies();
- Facultatif : Placez un DestroyableObject (comme RadioTransmitter dans zh_camp) :
- Nommez-le comme bon vous semble, et écrivez ce nom entre les guillemets de NanoMod.sObjectiveName dans Levels\zh_xxxxx\properties.lua
- Réglez-le comme suit :
- Damage = 999
- Placez ProximityTrigger_ObjectiveArea (la zone que les ennemis doivent atteindre)
- DimX, DimY, DimZ = [à vous de voir...]
- OnlyAI = True
- OnlyPlayer = False
- Pour précharger les .cgf des ennemis
- Placez chaque ennemi spécial NanoMods (depuis Entity > AI > NanoMod_[...]) dans un coin de la carte inaccessible aux joueurs
- Donnez à chacun le nom suivant : Preload
- Réglez-les comme suit :
- HiddenIngame = True
- Pour que les ennemis laissent des armes ou munitions en mourant
- Créez un Equipement-Pack pour chacun des cinq ennemis spécial NanoMods : nommez-les DropPack_Big, DropPack_Bezerker, DropPack_BezerkerAlt, DropPack_Fast et DropPack_Stealth.
- Vous pouvez les laissez vides si vous voulez, mais créez toujours ces cinq Equipement-Packs même si vous n'utilisez pas les cinq ennemis spécial NanoMods.
- Note : Ce point est important car l'absence d'un DropPack peut ralentir le serveur.
- Pour que les ennemis apparaissent
- Modifiez NanoMod.tEnemiesData dans Levels\zh_xxxxx\properties.lua en vous reportant aux instructions (écrites dans un anglais simple)
- Placez des TagPoints aux endroits où les ennemis vont apparaître, et nommez-les SpawnPoint[n] avec n commençant à 1 et finissant au nombre de TagPoints placés (ne sautez pas de nombre)
- Modifiez NanoMod.iNumberOfSpawnPoints dans Levels\zh_xxxxx\properties.lua : mettez-y la valeur maximale de n
- Pour que les ennemis se dirigent vers leur objectif
- Dessinez un AIPath entre chaque TagPoint et ProximityTrigger_ObjectiveArea (il est important que cet AIPath finisse dans ProximityTrigger_ObjectiveArea)
- Nommez-le Enemy_[n]_PATH (où n est le numéro du TagPoint)
- Pour que les ennemis s'occupent après avoir atteint leur objectif
- Dessinez un AIPath autour de ProximityTrigger_ObjectiveArea et faites-le boucler sur lui-même
- Nommez-le Enemy_PATH
- Note : Les ennemis suivront cet AIPath jusqu'à ce qu'ils repèrent un joueur.
- Facultatif : Pour que les ennemis sautent par-dessus des obstacles
- Placez des ImpulseTrigger_CustomJump sur les AIPaths, et réglez-les comme suit :
- DimX, DimY, DimZ = [à vous de voir...]
- ImpulseDuration = [un nombre représentant la variation de la force de l'impulsion]
- ImpulseStrength = [un nombre représentant la force de l'impulsion]
- OnlyAI = True
- OnlyMyPlayer = False
- Note : En pratique, l'impulsion est aléatoire et varie entre ImpulseStrength et ImpulseStrength x (1 + ImpulseDuration). En fait, cet élément n'est exclusif ni au Zone Holding ni à l'IA, et peut donc être utilisé dans chaque NanoMod.
- Placez des ImpulseTrigger_CustomJump sur les AIPaths, et réglez-les comme suit :
- Facultatif : Pour gérer une mise en scène (comme les cris dans zh_camp)
- Placez SoundSpot_Switch (son joué ou stoppé lorsque l'interrupteur est activé)
- Placez DelayTrigger_Switch (lancé lorsque l'interrupteur est activé) et réglez-le comme suit :
- TriggerOnce = true
- Notes : Ces deux éléments permettent de synchroniser la mise en scène lorsqu'un joueur rejoint une partie déjà commencée. Vous n'êtes pas obligé d'utiliser les deux à la fois.
- C'est à peine plus simple que pour le Tower Defense, alors mes félicitations à ceux qui ont tout compris. Bon courage pour votre carte !
Haut de page
-
Aide Lone Run
- Le Lone Run se rapprochant du multijoueur classique de Far Cry (par rapport au Tower Defense et au Zone holding), ses cartes sont plus simples à réaliser.
- Placez des ProximityTrigger_Zone aux endroits où les joueurs vont devoir aller pour marquer, et réglez-les comme suit :
- DimX, DimY, DimZ = [à vous de voir...]
- TextInstruction = [un nombre représentant la valeur de la zone en points]
- Si vous avez bien suivi les explications communes à tous les NanoMods, alors c'est fini !
Haut de page
-
Aide Constraint Kill
- Le Constraint Kill n'étant rien d'autre que du match à mort avec contraintes, ses cartes sont très proches des cartes multijoueur classiques.
- Editez le fichier Levels\ck_xxxxx\properties.lua et intéressez-vous à NanoMod.tConstraintsData. Tout ce que vous avez à faire, c'est de créer un ou plusieurs ensembles de contraintes en vous reportant aux instructions (écrites dans un anglais simple).
- Si vous avez bien suivi les explications communes à tous les NanoMods, alors c'est fini !
Haut de page
-
Aide Wonder 8
- Bientôt...
Haut de page
