Marco Rale
26/11/2007, 23h14
Voilà, je voulais voir si il était possible de modder les modificateurs de terrains, qui ne sont pas franchement terrorisants en vanilla (-1 foret, -1 colline ...) bref pas très importants par rapport aux jets de dès et aux leaders.
C'est possible et c'est facile ! Le système de modding est simple et vaste.
Dans le repertoire <mod>, vous avez des fichiers *.mod et des repertoires.
Chaque fichier *.mod décrit le mod du répertoire du même nom.
Par exemple, tata.mod décrit le contenu de <mod/tata> et ce que Vanilla doit en faire.
Le contenu du fichier *.mod est constitué simplement du nom du mod et une liste de repertoires, compris dans le répertoire du mod.
Pour chaque repertoire (common, history, event) est précisé le comportement que le jeu doit avoir avec le contenu du répertoire: soit celà remplace, soit celà étend les valeurs de la Vanilla. Je n'ai pas trop compris la différence.
Prenons le fichier descripteur d'un gros mod, Magna Mundi. Le fichier s'appelle MagnaMundi.mod et contient:
name = "Magna Mundi IV 1.31"
extend = "common"
extend = "events"
replace = "history"
extend = "localisation"
extend = "map"
extend = "interface"
extend = "gfx"
extend = "sound"
Lorsqu'on se balade dans le répertoire du même nom <MagnaMundi>, on trouve les repertoire <common>, <events>, <history>, etc.. et leurs contenus. On y retrouve les fichiers de la vanilla, même si certains sont absents. Pas grave.
Si on séléctionne le mod Magna Mundi au lancement, le jeu se balade dans ces repertoire et, dès qu'il rencontre un fichier du même nom que l'un des fichiers de la vanilla dans un des repertoire du même nom également, il remplace les valeurs de la vanilla par celle du fichier du mod. Si il manque un fichier, il garde celui de la vanilla. En fait ça va même plus loin: vous pouvez faire un mini-fichier car une seule valeur vous interesse: ça suffit. Si le jeu ne trouve pas les autres, il prend celle de la vanilla. C'est très souple.
Travaux pratiques:
Je crée un fichier monModTerrain.mod.
Le contenu est très simple:
name = "Super Dur dans la Foret"
extend = "map"
Je crée donc un repertoire <monModTerrain>, puis un repertoire <map>. Dans ce repertoire je place le fichier terrain.txt qui est une copie du terrain.txt de la vanilla. J'ai donc
-> monModTerrain.mod
-> <monModTerrain/map>/terrain.txt
Mon Mod veut rendre le combat en forêt vachement balèze et c'est tout. Je change donc le contenu de terrain.txt de la façon suivante:
#TODO, add other rules here.. like climate / attrition modifiers..
#white
ocean = {
color = {
0
}
movement_cost = 1.0
is_water = yes
has_texture = no
}
#red
farmland = {
color = {
1 2 3 4 5 6 7
}
movement_cost = 1.25
objects =
{
windmill_1 = 0.005
windmill_2 = 0.005
windmill_3 = 0.005
windmill_4 = 0.005
cottage_1 = 0.01
cottage_2 = 0.01
cottage_3 = 0.01
cottage_4 = 0.01
cottage_5 = 0.01
cottage_6 = 0.01
cottage_7 = 0.01
cottage_8 = 0.01
cottage_9 = 0.01
cottage_10 = 0.01
cottage_11 = 0.01
cottage_12 = 0.01
}
}
#brown
plains = {
color = {
8 9 10 11 12 13 14 15
}
movement_cost = 1.1
}
#pale-yellow
steppe = {
color = {
16 17 18 19 20 21 22 23
}
movement_cost = 1.0
## tree = grass
}
#dark-green
coniferous_forest = {
color = {
24 25 26 27 28 29 30 31
}
movement_cost = 2.5
tree = coniferous
defender = 4
}
#bright-green
decidous_forest = {
color = {
32 33 34 35 36 37 38 39
}
movement_cost = 2.0
tree = decidous
defender = 4
}
#cyan-green
jungle = {
color = {
40 41 42 43 44 45 46 47
}
movement_cost = 3.0
tree = jungletree
defender = 1
}
#cyan
marsh = {
color = {
48 49 50 51 52 53 54 55
}
movement_cost = 2.2
defender = 1
}
#dark yellow
desert = {
color = {
56 57 58 59 60 61 62 63
}
movement_cost = 1.25
## tree = palmtree
}
#darkgrey
hills = {
color = {
64 65 66 67 68 69 70 71
}
movement_cost = 1.66
altitude = 0.3
defender = 1
}
#light grey
mountains = {
color = {
72 73 74 75 76 77 78 79
}
movement_cost = 3.0
altitude = 0.7
defender = 2
}
#purple
impassable_mountains = {
color = {
80
}
movement_cost = 8.0
altitude = 1
}
inland_ocean = {
color = {
81
}
movement_cost = 1.0
is_water = yes
inland_sea = yes
has_texture = no
}
pti = {
color = {
255
}
has_texture = no
}
Et c'est tout.
Je charge... Le launcher me présente mon nouveau mod, "Super Dur dans la Forêt":
http://img519.imageshack.us/img519/2632/screenshot096lm9.jpg
Le premier chargement prends un peu de temps... Le jeu recalcule tous les comportement de déplacement en fonction de ce nouveau parametre semble-t-il.. A cette occasion il place un repertoire cache dans monModTerrain/map. Il ne fait qu'une fois l'opération.
Le jeu a chargé avec mon mod correctement, semble m'indiquer la page d'accueil:
http://img90.imageshack.us/img90/632/screenshot099so3.jpg
Allez j'entamme une partie. Je prends Novgorod ces héros, et je déclare immédiatement la guerre aux chevaliers teutonniques, ces fanatiques racistes. Je prends position à Ingermanland. L'IA attaque. Baston en pleine forêt:
http://img441.imageshack.us/img441/386/screenshot098qn7.jpg
ça a marché :banana:! Le malus est dorénavant de 4 ! Les teutons vont se faire tailler en pièce dans les impénétrables forêts qui protègent notre belle capitale.
La preuve est faite que cette valeur n'est pas en dur, et qu'un mini-mod est vite fait.
En fait, baladez-vous dans les repertoires d'un mod puissant comme MM pour voir tout ce qui est moddable, particulièrement common/static_modifiers.txt pour commencer, vous serez étonnés. Il y a certainement plus que ce qui est marqué, à partir de là il faut aller voir des réferences plus consistantes, mais je voulais expérimenter en vrai sur un exemple simple et parlant, c'est fait
Par contre dans tout ça je n'ai pas trouvé le malus rivières.
C'est possible et c'est facile ! Le système de modding est simple et vaste.
Dans le repertoire <mod>, vous avez des fichiers *.mod et des repertoires.
Chaque fichier *.mod décrit le mod du répertoire du même nom.
Par exemple, tata.mod décrit le contenu de <mod/tata> et ce que Vanilla doit en faire.
Le contenu du fichier *.mod est constitué simplement du nom du mod et une liste de repertoires, compris dans le répertoire du mod.
Pour chaque repertoire (common, history, event) est précisé le comportement que le jeu doit avoir avec le contenu du répertoire: soit celà remplace, soit celà étend les valeurs de la Vanilla. Je n'ai pas trop compris la différence.
Prenons le fichier descripteur d'un gros mod, Magna Mundi. Le fichier s'appelle MagnaMundi.mod et contient:
name = "Magna Mundi IV 1.31"
extend = "common"
extend = "events"
replace = "history"
extend = "localisation"
extend = "map"
extend = "interface"
extend = "gfx"
extend = "sound"
Lorsqu'on se balade dans le répertoire du même nom <MagnaMundi>, on trouve les repertoire <common>, <events>, <history>, etc.. et leurs contenus. On y retrouve les fichiers de la vanilla, même si certains sont absents. Pas grave.
Si on séléctionne le mod Magna Mundi au lancement, le jeu se balade dans ces repertoire et, dès qu'il rencontre un fichier du même nom que l'un des fichiers de la vanilla dans un des repertoire du même nom également, il remplace les valeurs de la vanilla par celle du fichier du mod. Si il manque un fichier, il garde celui de la vanilla. En fait ça va même plus loin: vous pouvez faire un mini-fichier car une seule valeur vous interesse: ça suffit. Si le jeu ne trouve pas les autres, il prend celle de la vanilla. C'est très souple.
Travaux pratiques:
Je crée un fichier monModTerrain.mod.
Le contenu est très simple:
name = "Super Dur dans la Foret"
extend = "map"
Je crée donc un repertoire <monModTerrain>, puis un repertoire <map>. Dans ce repertoire je place le fichier terrain.txt qui est une copie du terrain.txt de la vanilla. J'ai donc
-> monModTerrain.mod
-> <monModTerrain/map>/terrain.txt
Mon Mod veut rendre le combat en forêt vachement balèze et c'est tout. Je change donc le contenu de terrain.txt de la façon suivante:
#TODO, add other rules here.. like climate / attrition modifiers..
#white
ocean = {
color = {
0
}
movement_cost = 1.0
is_water = yes
has_texture = no
}
#red
farmland = {
color = {
1 2 3 4 5 6 7
}
movement_cost = 1.25
objects =
{
windmill_1 = 0.005
windmill_2 = 0.005
windmill_3 = 0.005
windmill_4 = 0.005
cottage_1 = 0.01
cottage_2 = 0.01
cottage_3 = 0.01
cottage_4 = 0.01
cottage_5 = 0.01
cottage_6 = 0.01
cottage_7 = 0.01
cottage_8 = 0.01
cottage_9 = 0.01
cottage_10 = 0.01
cottage_11 = 0.01
cottage_12 = 0.01
}
}
#brown
plains = {
color = {
8 9 10 11 12 13 14 15
}
movement_cost = 1.1
}
#pale-yellow
steppe = {
color = {
16 17 18 19 20 21 22 23
}
movement_cost = 1.0
## tree = grass
}
#dark-green
coniferous_forest = {
color = {
24 25 26 27 28 29 30 31
}
movement_cost = 2.5
tree = coniferous
defender = 4
}
#bright-green
decidous_forest = {
color = {
32 33 34 35 36 37 38 39
}
movement_cost = 2.0
tree = decidous
defender = 4
}
#cyan-green
jungle = {
color = {
40 41 42 43 44 45 46 47
}
movement_cost = 3.0
tree = jungletree
defender = 1
}
#cyan
marsh = {
color = {
48 49 50 51 52 53 54 55
}
movement_cost = 2.2
defender = 1
}
#dark yellow
desert = {
color = {
56 57 58 59 60 61 62 63
}
movement_cost = 1.25
## tree = palmtree
}
#darkgrey
hills = {
color = {
64 65 66 67 68 69 70 71
}
movement_cost = 1.66
altitude = 0.3
defender = 1
}
#light grey
mountains = {
color = {
72 73 74 75 76 77 78 79
}
movement_cost = 3.0
altitude = 0.7
defender = 2
}
#purple
impassable_mountains = {
color = {
80
}
movement_cost = 8.0
altitude = 1
}
inland_ocean = {
color = {
81
}
movement_cost = 1.0
is_water = yes
inland_sea = yes
has_texture = no
}
pti = {
color = {
255
}
has_texture = no
}
Et c'est tout.
Je charge... Le launcher me présente mon nouveau mod, "Super Dur dans la Forêt":
http://img519.imageshack.us/img519/2632/screenshot096lm9.jpg
Le premier chargement prends un peu de temps... Le jeu recalcule tous les comportement de déplacement en fonction de ce nouveau parametre semble-t-il.. A cette occasion il place un repertoire cache dans monModTerrain/map. Il ne fait qu'une fois l'opération.
Le jeu a chargé avec mon mod correctement, semble m'indiquer la page d'accueil:
http://img90.imageshack.us/img90/632/screenshot099so3.jpg
Allez j'entamme une partie. Je prends Novgorod ces héros, et je déclare immédiatement la guerre aux chevaliers teutonniques, ces fanatiques racistes. Je prends position à Ingermanland. L'IA attaque. Baston en pleine forêt:
http://img441.imageshack.us/img441/386/screenshot098qn7.jpg
ça a marché :banana:! Le malus est dorénavant de 4 ! Les teutons vont se faire tailler en pièce dans les impénétrables forêts qui protègent notre belle capitale.
La preuve est faite que cette valeur n'est pas en dur, et qu'un mini-mod est vite fait.
En fait, baladez-vous dans les repertoires d'un mod puissant comme MM pour voir tout ce qui est moddable, particulièrement common/static_modifiers.txt pour commencer, vous serez étonnés. Il y a certainement plus que ce qui est marqué, à partir de là il faut aller voir des réferences plus consistantes, mais je voulais expérimenter en vrai sur un exemple simple et parlant, c'est fait
Par contre dans tout ça je n'ai pas trouvé le malus rivières.