目錄
摘要1
一、高難多樣性代碼概況2
(一)高難代碼簡介2
(二)簡述背景2
(三) 本文簡述主要內容2
二、多樣性代碼的簡述3
(一)代碼的宏觀簡述3
1.敵人限制3
2.敵人屬性4
(二)多樣性代碼特殊怪簡述5
1.破壞型特殊怪5
2. 功能型特殊怪(常規)6
3. 功能型特殊怪(改變大小)7
三、多樣性代碼的攻略9
(一)代碼設計的目的9
(二)明確目的後如何編寫代碼9
(三)編碼時常見錯誤10
(四)編寫精英化特殊怪11
(五)敵人不刷或者遊戲閃退或無法正常遊戲12
致謝14
參考文獻15
摘要
隨著深巖銀河玩家水平的提升,現在少數玩家開始為了追求更高的難度需求通過深巖銀河Custom Difficulty自定義難度代碼 MOD寫出高於官方五級難度的遊戲代碼。所以深巖銀河高難泛指比官方五級難度更高的難度。主流分為多樣性和非多樣性,然後根據敵人的屬性和數量倍數進行代碼難度區分命名。具體綜合難度因人而異。本文為了讓更多的玩家瞭解深巖銀河高難代碼的製作和遊玩注意事項,集合數位深巖銀河代碼高手一起寫作。
關鍵詞:自定義難度代碼 ;高難 ;多樣性
1、 高難多樣性代碼概況
(一)高難代碼簡介
高難代碼是指通過深巖銀河Custom Difficulty自定義難度代碼 MOD寫出的高於官方五級難度的遊戲代碼。主流分為多樣性和非多樣性代碼。一般我們開房在房間名字裡面寫的如“5*2 60n”就是典型的非多樣性高難代碼,代表五級難度兩倍敵人每份補給消耗60硝石;如果房間名字寫的如“hard speedrun v1.6+”或者“Hazard 8-Nine Disater-1.7-4”就是典型的多樣性高難代碼,代表speedrun難度的1.6版本或者8-Nine難度的1.7.4版本。
(二)簡述背景
深巖銀河高難的遊玩人數隨著時間的發展有了很大的數量,但是會難度代碼,或者說寫的好的具有主流傳播性質的高難代碼數量較少,為了讓更多的玩家能夠更好的遊玩高難或者對更好的製作高難代碼,本文重點簡述一下常規的思路。
(三) 本文簡述主要內容
本文針對多樣性代碼的問題,制定出一套基於speedrun v1.6+為基礎多樣性代碼的相關攻略,其主要簡述了:
1. 簡述了全局代碼參數的調整說明
2. 簡述了自定義特殊怪的參數說明
3. 簡述了編寫代碼中可能遇到的相關問題與解答
二、多樣性代碼的簡述
(一)代碼的宏觀簡述
通過Custom Difficulty自定義難度代碼編寫的高難代碼在宏觀上可以在敵人的屬性和數量等全局數據進行調整。(以hard speedrun v1.6+的參數為例)
1.敵人限制
"MaxActiveSwarmers": 小型單位敵人最大數量
"MaxActiveEnemies": 大型單位敵人最大數量
單位最大數量是刷潮時敵人同時存在的上限,這裡不包括:大水母和母巢產生的單位。
"EnemyCountModifier": 敵人的數量倍數
敵人數量的倍數:一般1.5參數就是一倍,3就是兩倍,4.5就是三倍,依次類推.(這是一個大概的參數,實際情況因個人代碼為準)主要是和遭遇點數,固定單位點數,自然潮點數相乘後計算出最終敵人點數從而確定出現的敵人數量。
"EncounterDifficulty": 遭遇單位生成點數
遭遇單位生成點數是確定作為"遭遇"生成的敵人數量。當玩家接近洞穴中一個未探索的房間時,將生成一個遭遇生成。遭遇不包括固定單位。
"StationaryDifficulty": 固定單位生成點數
固定單位生成點數是確定會生成多少個固定位置的敵人。具體的固定單位為:
Spitballers(瘟疫吐珠), Brood Nexii(異蟲母巢), Breeders(大水母)和Cave Leeches(洞穴水蛭)。
"EnemyWaveInterval":播報潮的時間間隔
播報潮的時間間隔是確定波次之間的時間間隔,以秒為單位。時間間隔越短壓力越大,謹慎調整。
"EnemyNormalWaveInterval":自然潮的時間間隔
自然潮時間間隔是確定普通波次之間的時間間隔,以秒為單位。"普通波次"是指沒有事件控制宣佈的波次。
"EnemyNormalWaveDifficulty":自然潮生成點數
自然潮生成點數是確定普通波次中將生成多少敵人。
"EnemyDiversity": 敵人多樣性-控制種類
敵人多樣性-控制種類是確定可用於獨特敵人類型的槽位數量。其不包括固定位置敵人和具有破壞性的敵人。但是各位自定義的特殊怪佔據槽位數量的,多樣性代碼中增加的多樣性敵人的種類在這確認。
2.敵人屬性
"EnemyDamageResistance": 敵人的抗性
敵人的抗性是矮人攻擊敵人時敵人的抗性,抗性越高傷害越低,就一般情況來說:五級1.5,六級1.75,七級2,八級2.25.九級2.5。(這是一個大概的參數,實際情況因個人代碼為準)
"EnemyDamageModifier": 敵人的傷害係數
敵人的傷害係數是敵人攻擊矮人的傷害係數,數值越高傷害越高,就一般情況來說:五級3.4,六級4,七級4.6,八級5.2,九級5.6。(這是一個大概的參數,實際情況因個人代碼為準)
"SpeedModifier" 地面敵人移動速度修正
地面敵人的速度修正,敵人的移動速度,一般來說:五級1.2,六級1.3,七級1.4,八級1.5,九級1.6。(這是一個大概的參數,實際情況因個人代碼為準)
"AttackCooldownModifier":敵人的攻擊冷卻修正
敵人攻擊的速度和頻率,一般來說:五級1.5,六級1.75,七級2,八級2.25,九級2.5。(這是一個大概的參數,實際情況因個人代碼為準)
"ProjectileSpeedModifier":拋射物速度修正
敵人拋射物在空中傳播的速度,一般來說:五級1.7,六級1.9,七級2.1,八級2.3,九級2.5。(這是一個大概的參數,實際情況因個人代碼為準)
(二)多樣性代碼特殊怪簡述
在多樣性代碼中,我們會通過自定義敵人的參數來設計獨特的特殊怪用來豐富遊戲在遊玩中的樂趣和挑戰。(看到一個特殊怪,先描述他的特殊代碼,然後說明特異性,最後對策方法)
1. 破壞型特殊怪
"109": {
"Base": "ED_Spider_Tank_Mutated",
"CanBeUsedForConstantPressure": true,
"CanBeUsedInEncounters": true,
"DifficultyRating": 125,
"IdealSpawnSize": 1,
"MaxSpawnCount": 2,
"MinSpawnCount": 1,
"Rarity": 21,
"Scale": 2.4,
"Elite": true,
"PawnStats": {
"PST_ColdResistance": 0.97,
"PST_CorrosiveResistance": 1,
"PST_ElectricResistance": 1,
"PST_ExplosionResistance": 1,
"PST_FireResistance": 0.97,
"PST_InternalDamageResistance": 0.3,
"PST_KineticResistance": 0.5,
"PST_PhysicalResistance": 1,
"PST_PoisonResistance": 1,
"PST_RadiationResistance": 1,
"PST_MovementSpeed": 2,
"PST_DamageResistance": 3
}
},
輻射禁衛在6的傷害係數下放大尺寸,具有非常高的威脅。並且為了達成衝進去用大範圍攻擊威脅矮人的目的,提供了一個高額的移動速度和大體型來方便該怪突進到矮人的陣型中打散陣型。(注意高流速和速度雖然效果很好 但是會導致遊戲卡頓。)
2. 功能型特殊怪(常規)
"112": {
"Base": "ED_Terminator",
"CanBeUsedForConstantPressure": true,
"CanBeUsedInEncounters": true,
"DifficultyRating": 80,
"IdealSpawnSize": 1,
"MaxSpawnCount": 1,
"MinSpawnCount": 1,
"Rarity": 18,
"Scale": 0.1,
"TimeDilation": 10,
"PawnStats": {
"PST_ColdResistance": -7,
"PST_CorrosiveResistance": -1,
"PST_ElectricResistance": -1,
"PST_ExplosionResistance": -1,
"PST_FireResistance": -0.97,
"PST_InternalDamageResistance": -1,
"PST_KineticResistance": -5,
"PST_PhysicalResistance": -1,
"PST_PoisonResistance": -1,
"PST_RadiationResistance": -1,
"PST_MovementSpeed": 5,
"PST_DamageResistance": 3
}
},
深淵復仇者具有快速挖掘且不會導致卡房的功能性,但是其大小卻不影響挖地的範圍。所以可以把復仇者的大小縮小(注意 請不要設置的太小 否則會造成打不中深淵復仇者的尷尬情況)來變成一個帶語音警告(深淵復仇者會自帶語音警告)但是不見蹤影的隱秘控制型刺客,能莫名其妙抓住你隊伍裡落單的矮人使其倒地,從而具有非常高的威脅。
3. 功能型特殊怪(改變大小)
"無畏炮塔": {
"Base": "ED_FacilityTurret_Barrier",
"CanBeUsedForConstantPressure": true,
"CanBeUsedInEncounters": true,
"DifficultyRating": 120,
"IdealSpawnSize": 1,
"MaxSpawnCount": 1,
"MinSpawnCount": 1,
"Scale": 3.4,
"Rarity": 19,
"Elite": true,
"PawnStats": {
"PST_ColdResistance": 0.9,
"PST_CorrosiveResistance": 0.9,
"PST_ElectricResistance": 0.9,
"PST_ExplosionResistance": 0.96,
"PST_FireResistance": 0.6,
"PST_InternalDamageResistance": 1,
"PST_KineticResistance": 1,
"PST_PhysicalResistance": 1,
"PST_PoisonResistance": 1,
"PST_RadiationResistance": 1,
"PST_MovementSpeed": 2
}
},
推斥炮臺的特性則與復仇者不同。由於推斥護盾的擴散是由炮塔本體的邊緣決定的導致提高了大小生成在一些微妙位置的時候(比如推車生成在朵朵鑽出來的隧道中間)其會讓矮人無從下手,對陣型的破壞和對矮人的控制不亞於剛剛提到的復仇者,同時擋核彈更是一個好手。推斥護盾在高傷害係數的情況下,本身的傷害充足,推斥護盾移動速度不慢,一旦彈到矮人,被控制推開的矮人會吃到其他地面怪的補刀,擊殺效果也堪稱一絕。
三、多樣性代碼的攻略
(一)代碼設計的目的
首先設計代碼的時候要考慮多方面細節:
1.是否是為了削弱該代碼表現突出的職業? 是否設計出來的敵人可以針對這個職業?或者針對某一個玩法?
案例:偵察的特殊火藥由於其特殊的存活能力,將戰鬥拖到了Z軸。這就存在團隊配合出現割裂問題。會玩的偵察能輕鬆的完成清圖的任務並不再存在針對偵察的怪物也沒有偵察適合一起戰鬥針對的怪物。那麼此時該平衡的是拖長偵察的清圖時長,例如提供鎖定的狙擊炮臺(狙擊炮臺極難被躲避)來針對噴子跳打法,或者粉碎者,水母來針對噴子跳打法從而提高加速鉤打法的登場率。當然也要注意,過多的粉碎者則會導致其手雷中迴旋鏢的登場率變高。
2 特殊怪的代碼會不會因為流速過高導致主機卡E交互或者透底空降倉?
案例:一部分代碼作者發現設計的蟲子流速大於一定數值時,會導致透底空降倉,大量的流速怪不及時清理也會導致主機交互卡E的情況。設計時一定要考慮這個因素,高流速怪對應的血量要足夠脆,防止大量囤積影響遊戲流暢度。
3 是否有娛樂效果或者視覺效果,在代碼裡充當什麼樣的角色?
一般來說,大部分代碼會添加有足夠視覺效果的特殊怪來吸引遊玩玩家的眼球。但是一部分特殊怪的設計目的是為了改變代碼總體的節奏。注意這部分的特殊怪不像娛樂效果的特殊怪,如果這些特殊怪的設計失衡,會讓整個代碼平衡出現問題,從而導致玩家體驗感降低。
(二)明確目的後如何編寫代碼
如果你是代碼新手,可以使用“貓貓蟲愛吃875小餅乾”和“奇異魔法燈”提供“可視化CD代碼平臺”進行更簡便的設計。其適配《深巖銀河》遊戲中名為Custom Difficulty(簡稱CD)的難度mod,目的是進行難度代碼的可視化閱讀和編寫,增強矮人朋友們的高難遊戲體驗,降低代碼學習和編寫的難度。
如果你是老手有什麼更好的設計方法呢?
個人一般的方法為:使用記事本或者JSON.代碼編輯臺(方便隨時校對格式是否正確)。在編寫好確認無誤後複製進CD檢查會不會報錯。
(三)編碼時常見錯誤
這裡CD提示“Invalid JSON” 翻譯是格式錯誤,當你寫代碼中缺少標點符號,或者標點符號錯誤時會提示,這個需要作者一行代碼一行的代碼檢查,所以寫代碼的時候一定要注意細節。注意編寫時是否會多了空格,回車,標點,錯誤使用中英文符號等格式錯誤
這裡CD提示“Enemy Descriptors must be a map of enemy descriptors”
翻譯是必須是地圖上的怪(案例隱身刀鋒:ED_Spider_Stinger蛭尾異蟲),案例中的代碼就是添加了地圖上不存在的隱身刀鋒導致代碼出錯。
還有一種錯誤,是代碼新手容易出錯的,這種錯誤是不會被JSON和CD檢查出來,但是實踐情況是錯的地方,那就是引用時出現引用“ "SE-RivalBomb"”的錯誤,導致代碼失效,這裡的正確引用是“ "SE_RivalBomb"”。
(四)編寫精英化特殊怪
在編寫時注意該單位是否能精英化 "Elite": true如無法精英化的特殊怪,這裡有精英化套娃的模版。(注意套娃的單位即命名的單位必須是可以精英化的單位)
案例:
"ED_Spider_ExploderTank": {
"Base": "ED_Spider_ShooterQueen",
"CanBeUsedForConstantPressure": true,
"CanBeUsedInEncounters": false,
"DifficultyRating": 75,
"IdealSpawnSize": 1,
"MaxSpawnCount": 1,
"MinSpawnCount": 1,
"TimeDilation": 6,
"Rarity": 15,
"Elite": true,
"Scale": 2.4,
"PawnStats": {
"PST_ColdResistance": -2,
"PST_CorrosiveResistance": 1,
"PST_DamageResistance": 3,
"PST_ElectricResistance": 1,
"PST_FireResistance": -4,
"PST_InternalDamageResistance": -20,
"PST_KineticResistance": -2,
"PST_PhysicalResistance": -15,
"PST_PoisonResistance": 1,
"PST_RadiationResistance": 1,
"PST_MovementSpeed": 0.5
}
},
之後還需將反過來套娃的單位加入遊戲,
如果不想將套娃的單位添加進遊戲,可以給予詞條:"PST_DamageResistance": 300
反向套娃:
"ED_Spider_ShooterQueen": {
"Base": "ED_Spider_ExploderTank",
"DifficultyRating": 95,
"PawnStats": {
"PST_DamageResistance": 300
}
},
也可以給予一個特別高的稀有度數值或者生成點數防止刷出,但一旦刷出會佔用特別多的點數影響平衡,故這種方法不推薦。
(五)敵人不刷或者遊戲閃退或無法正常遊戲
一個普遍存在的問題:為什麼我設計的特殊怪代碼丟進去後不刷出或者遊戲閃退或無法正常遊戲?
這方面有可能的原因:
案例:特殊怪點數為
"104": {
"Base": "ED_Halloween_Skull",
"CanBeUsedForConstantPressure": true,
"CanBeUsedInEncounters": true,
"DifficultyRating": 2000,
"IdealSpawnSize": 1,
"MaxSpawnCount": 1,
"MinSpawnCount": 1,
"Elite": true,
"Rarity": 1800,
而時間間隔潮的點數為:
"EnemyNormalWaveDifficulty": [
{
"weight": 1,
"range": {
"min": 1300,
"max": 1700
}
}
在這段代碼中存在多個問題:
1.特殊怪佔用點數過高甚至高於生成點數,如果期望刷出量是1 那麼這一項也不推薦過低。可以看出,一波時間間隔潮最多(max:1700)點數才1700,可是特殊怪的點數卻高達2000 "DifficultyRating": 2000,
2.稀有度數值過高時同樣導致無法刷出 "Rarity": 1800, 如果期望刷出量是1 那麼這一項也不推薦過低。
3.將原本無法精英化的單位進行錯誤的精英化,會導致刷出來的精英出現無敵。"Elite": true,
4.將無法添加至遭遇池子或固定點數池子的單位修改成:"CanBeUsedInEncounters": true,或者將無法進入恆壓潮的(就如案例中的單位是活動萬聖節頭骨)單位修改成true(該項需為false)"CanBeUsedForConstantPressure": true,
這裡需要說明一下關於佔用點數的理解:
在代碼裡,你可以將你的視角代入到敵方單位然後把內容帶到植物大戰殭屍。池子點數就是你的陽光,你種植物(即刷敵方單位)是需要付出點數的,如果將大量點數購買沒有用的植物(敵方單位)會導致沒有多餘的陽光購買其他有用的植物。
致謝
本教程主要目的是針對多樣性代碼的設計與平衡,讓更多的玩家能夠輕鬆設計並寫出合理的多樣性代碼。在此特別鳴謝koncin與kevin,Coldplayer,j-c-meow等代碼作者的幫助和交流。
參考文獻
參考文獻舉例如下
[1] mirror1900. 深巖銀河Custom Difficulty自定義難度指南. 2023年07月11日
[2] j-c-meow . 深巖銀河高難多倍多樣性代碼 hard speedrun v1.6+.2024年04月25日
[3] 綾彩音風 . 深巖銀河各類生物的代碼註釋,請配合Custom Difficulty模組的自定義怪物屬性的功能食用. 2023年06月05日
[4] 奇異魔法燈、貓貓愛吃875小餅乾. 可視化CD代碼網頁使用教程 2024.年3月17日
[5] Coldplayer. 為你的難度添加多樣性生物的代碼與教程.2022年
[6] Koncin. 深巖銀河Custom Difficulty自定義難度Mod註釋教程. 2022年10月28日