這款遊戲出來有幾天了,如果算上beta版本的話,就更早了。奈何筆者是個學生黨兼考研黨,實在是忙得可以,所以一直到今天周六,才正式上手試玩。
然後,果不其然,老毛病又犯了,半個小時之後,果斷退出遊戲,查看遊戲文件,開始另一次毀遊戲的工程。
這兒先說一下筆者對於MOD和修改的了解。很多人往往把某一文件的修改覆蓋認為是MOD,比如《死亡島:激潮》中各種掛著MOD標簽的帖子。不過筆者私以為真正的MOD必須具有可擴展性,可兼容性,或者對於遊戲本身要有延生作用。所以對那類隻是對於遊戲文件本身簡單修改覆蓋的我習慣稱之為“修改”,而非MOD。不過說到底,兩者的原理其實類似。
【MOD/修改】的製作可以說很難,也可以說很簡單。
說到難點,往往在於遊戲資源包本身的解壓封裝(如暗黑破壞神2、地牢圍攻2)、遊戲可執行文件的反編譯(泰坦之旅)、遊戲數據庫的解碼(DND類遊戲,如無冬之夜)、遊戲資源文件的反加密(火炬之光)、純粹的編程(饑荒、憤怒的小鳥)等等。
說到簡單自然是站在完成前麵說的這些工作的人的肩膀上。當然還有一種情況,就是官方提供編輯器,比如魔獸、星際、老滾、龍騰世紀、火炬之光、巫師2。
筆者接觸遊戲不過短短的3年,但是很有幸玩的第一個大作就是老滾4,在一遍又一遍的崩潰、跳出之後,終於了解了MOD這個奇葩的東東。然後又經過了龍騰:起源&覺醒的熏陶,剛剛在火炬之光1中自力更生,馬上又被星際爭霸2坑爹的觸發器完虐,好不容易依葫蘆畫瓢在泰坦之旅中得意了一把,隨即又被暗黑2的MOD弄得一頭霧水。於是,就這樣曆經了3年的摸索,樓主養成了毀遊戲的習慣……好吧,吐槽完畢,請不要噴……下麵這正題,雖然很簡單。
這款遊戲的資源包後綴是N2PK,用十六進製打開看一下,頭文件是Neocore Package,可以用特定的算法進行解壓,不過筆者對於這個不咋麼懂,漢化組的高人們一定知道怎麼解壓(因為遊戲文本也是這種格式)。如圖所示:文本包。
自遊戲根目錄下有幾個文件夾:Cfg、CommonTextures、Effects、Models、Sounds、Strings、UI等等,至於裏麵是神馬,看文件夾的名稱大致就猜到了。cfg是config的縮寫,應該是配置文件;CommonTextures應該是材質包;Models應該是模型、動作、骨骼;Strings應該是遊戲文本;Effects開始不知道,不過用十六進製打開一看,頭文件後麵緊跟著particles system,所以應該是粒子效果。
很明顯遊戲的資源包是分類打包的,這個習慣好啊,連找的工作都省略了。
因為不會解壓封裝,所以那各種模型、材質、UI的修改就算了,畢竟不是老滾。可修改的文件隻有cfg(因為就這個沒壓縮),雖然大多數遊戲中cfg文件往往隻是各種遊戲配置,但是凡事總有例外不是,在這個遊戲中內涵就多了去了。
Cfg\\Artifact下有4個cfg文件:alchemyrecipes.cfg、artifacts.cfg、enchantments.cfg、loottypes.cfg顧名思義,alchemyrecipes是煉金配方、artifacts是器物、enchantments是附魔、loottypes是掉落。
alchemyrecipes文件很簡單,第一行是合成物品,第二行是配方物品。
Recipe
{
Name=Ethereal_Essence
Artifacts=Primordial_Essence,Mercurial_Essence
}
artifacts也很簡單,找個複雜點的說明一下。
Artifact
{
Name=Zorros_Hat
Icon=kalapv6_3
LootModel=GeneralHelmet
EquipmentModel=kalapv6_3
Type=Armor
SubType=Helmet
Rarity=epic
MinLevel=18
MaxLevel=30
Value=6500
Alchemy=35
Enchantments=attack_ratebonus_percentUnique(value=3|4),dexterityUnique(value=8|10),bodyUnique(value=8|10),rageUnique(value=10|10),dodgeUnique(value=50|50;powerup_use=200),physical_resistanceUnique(value=50|50;critical_hit=150)
}
Name=Zorros_Hat /物品名稱
Icon=kalapv6_3 /物品圖標
LootModel=GeneralHelmet /掉落模型
EquipmentModel=kalapv6_3 /裝備模型,就是穿在身上的效果
Type=Armor /物品類型:護甲
SubType=Helmet /sub原本應該是下標的意思,這兒應該是下級類型:頭盔
Rarity=epic /物品品質:傳奇
MinLevel=18 /最小等級:18
MaxLevel=30 /最高等級:30
Value=6500 /價值:6500金幣
Alchemy=35 /這個煉金不知道神馬意思,求教熟悉遊戲的人。
Enchantments=attack_ratebonus_percentUnique(value=3|4),dexterityUnique(value=8|10),bodyUnique(value=8|10),rageUnique(value=10|10),dodgeUnique(value=50|50;powerup_use=200),physical_resistanceUnique(value=50|50;critical_hit=150) /附魔屬性:屬性名稱[這個對應到enchantments](範圍),例如(value=3|4)表示值為3~4。
enchantments內容比較多,也比較有用。
Enchantment
{
Name=FireDamage
Type=warrior
ArtifactType=Sword,TwoHandedSword,Pistol,Rifle,Ring
Property=fire_damage
PriorityGroup=bonus_fix
MinValue=1,2,3,5,7,8
MaxValue=2,3,5,7,8,10
MinCost=20,50,100,170,260,360
MaxCost=50,100,170,260,360,470
LevelLimit=0,5,10,15,20,25
LevelLimitMax=10,15,20,25,30,30
Group=elemidamage
Order=4
}
Name=FireDamage /屬性名稱
Type=warrior /屬性適用類型:戰士
ArtifactType=Sword,TwoHandedSword,Pistol,Rifle,Ring /屬性適用裝備範圍:劍、雙手劍、槍、來複槍、戒指
Property=fire_damage /所屬類型:火焰傷害
PriorityGroup=bonus_fix
MinValue=1,2,3,5,7,8 /最小值
MaxValue=2,3,5,7,8,10 /最大值
MinCost=20,50,100,170,260,360 /對應最小價格
MaxCost=50,100,170,260,360,470 /最大價格
LevelLimit=0,5,10,15,20,25 /最低等級限製,物品等級
LevelLimitMax=10,15,20,25,30,30 /最高等級限製
Group=elemidamage
Order=4 /序號:14,不知道幹嘛用的
至於各個附魔詞綴,看英文的意思就明白了,比較實用的幾個:刷裝備必備啊。
TrophyLuck /幸運
TrophyMagicItemFind /魔法物品掉落
TrophyGoldFind /金幣掉落
Luck
ItemFindChance
GoldFindChance
loottypes已經有人發過了,我還是簡單說一下吧。
1_champion
{
None=800
Item
{
Rarity=normal
Chance=50
}
Item
{
Rarity=magic
Chance=125
}
Item
{
Rarity=rare
Chance=25
}
Item
{
Rarity=epic
Chance=3
}
}
開頭是怪物或者箱子等等的分類。比如上麵這個是champion(精英怪),後麵緊跟著一個數組(第一個大括號),數組中的每一對大括號為一個整體,即數組的一個元素。
上麵這個表示,精英怪掉落物品的概率:
1. 什麼都沒(800/總數)
2. 普通物品(50/總數)
3. 附魔物品(125/總數)
4. 稀有物品(25/總數)
5. 傳奇物品(3/總數)
Cfg\Traps下隻有一個traps.cfg陷阱文件,不過可以改著玩玩。
Trap
{
Name=RugosElloko
ResearchCost=0
BuildToolCost=4
CapacityCost=4
SkillCount=1
Skill[0].SkillName=trap__rugos_elloko
Skill[0].ActivateRangeForward=0.5
Skill[0].ActivateRangeRight=0.5
Skill[0].ActivateRangeLeft=0.5
Skill[0].ActivateRangeBackward=0.5
Skill[0].DeActivateRangeForward=0.9
Skill[0].DeActivateRangeRight=0.9
Skill[0].DeActivateRangeLeft=0.9
Skill[0].DeActivateRangeBackward=0.9
TrapPositionType=floor
}
Name=RugosElloko /陷阱名稱
ResearchCost=0 /這啥花費?
BuildToolCost=4 /建築材料花費
CapacityCost=4 /容量花費
SkillCount=1 /技能數目
Skill[0].SkillName=trap__rugos_elloko /技能名稱
Skill[0].ActivateRangeForward=0.5 /陷阱激發範圍(前)
Skill[0].ActivateRangeRight=0.5 /陷阱激發範圍(右)
Skill[0].ActivateRangeLeft=0.5 /陷阱激發範圍(左)
Skill[0].ActivateRangeBackward=0.5 /陷阱激發範圍(後)
Skill[0].DeActivateRangeForward=0.9 /陷阱停止範圍(前)
Skill[0].DeActivateRangeRight=0.9 /陷阱停止範圍(右)
Skill[0].DeActivateRangeLeft=0.9 /陷阱停止範圍(左)
Skill[0].DeActivateRangeBackward=0.9 /陷阱停止範圍(後)
TrapPositionType=floor /陷阱布置地點:地板
還有一個可以修改隨機遭遇怪物的文件:Cfg\\RandomEncounters下RandomEncounters.cfg文件
cave_4
{
_Elite_Shrieking_Gargantula
{
Count=1
}
_Minion_Shrieking_Gargantula
{
Count=7
CountMin=4
}
}
cave_4 /地圖
{
_Elite_Shrieking_Gargantula /怪物名稱
{
Count=1 /數目
}
_Minion_Shrieking_Gargantula /怪物名稱
{
Count=7 /數目
CountMin=4 /最小數目
}
}