2009年4月17日 星期五

Cold War Crisis(C&C zH mod CWC)養成計劃三——盈野尸籍


奧丁們和阿瑞斯們、馬爾斯(mars)們浴血廝殺過后的沙場,應該是尸首遍地,殘肢敗體漫地的一副境況。無論是勝是敗,游戲中必然有一方會落得盡歸黃泉的宿命,這是即時戰略游戲無法逃離的宿命模式。尤其是c&c系列,瘋狂的電腦AI必定是最會爆兵的AI。你的完美布局之下,電腦每一次絕命沖擊都無功而返,只留一地尸首。然則常為玩家不滿的在于,這些尸首在數秒之內就會消失,這對于營造一個真實的戰場非常的不利,然而其他的游戲且不論,鄙人可以非常有把握的告訴您,C&C將軍絕命時刻這個游戲是絕對可以做到我們設想中的盈野尸籍的盛況的。

思路非常的簡單,無非是在ini文件中找到死亡定義,然后調整尸體的消失時間,但也并不只是這么簡單。且容我慢慢述清。

sshot001

sshot003一般來說,做得比較認真的mod里面,object的死亡在作者眼里必是一件非常嚴肅的事情, 如果是一個好mod,這一塊在ini文件中必定是得到異常的重視的,可以發現,Cold War Crisis這個mod里面,死亡都用

;--- begin Death modules ---
……
; --- end Death modules ---

先研究tank【廣告,天安門坦克人紀錄片】,這樣的代碼標出來。我以USSR在AI中最會造的BMP2來舉例吧

; --- begin Death modules ---
  Behavior = TransitionDamageFX ModuleTag_Death01
    DamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:CWCgenTankDeathSmokeDamaged
    DamagedFXList1 = Loc: x:0 y:0 z:0 FXList:FX_CWCgenTankDamageTransition
    ;
    ReallyDamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:CWCgenTankDeathSmokeReallyDamaged
    ReallyDamagedFXList1 = Loc: x:0 y:0 z:0 FXList:FX_CWCgenTankDamageTransition
    ;
    RubbleParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:CWCgenTankDeathSmokeRubble
    RubbleFXList1 = Loc: x:0 y:0 z:0 FXList:FX_CWCgenTankDamageTransition
    RubbleFXList2 = Loc: x:0 y:0 z:0 FXList:FX_CWCgenTankDeathRubble1
  End
  Behavior = SlowDeathBehavior ModuleTag_Death02
    DestructionDelay = 1800000000
    FX = MIDPOINT FX_CWCgenTankDeathRubble2
    OCL = MIDPOINT OCL_CWCgenTankDeathTrails
    SinkDelay = 150000000
    SinkRate = 4.0
    ;
    Weapon = MIDPOINT CWCgenVehicleExplodeWeapon
  End
; --- end Death modules ---

在結合游戲中所見可知,一個tank的死亡在冷戰危機CWC這個模組中,是按照:起火——爆炸——冒煙殘骸——下沉【消失】的模式來的。按照本人的設計,是取消最后一步,或者說,可以讓整個步驟停在起火的成分或者最后那個冒煙殘骸的環節上,也就是如圖示。

一堆被打爆的T72;T80

一般來說,在ini的object文件檔里面定義死亡必定和一些粒子代碼有關,歸根到底最終的時間一定是在FXList.ini中可以找到它在ParticleSystem.ini的最終定義。那里有一個時間的定義,這是以往的所有mod我的更改上顛撲不破的真理。

舉例還是BMP2

DamagedParticleSystem1 = Bone:Smoke RandomBone:Yes PSys:CWCgenTankDeathSmokeDamaged
    DamagedFXList1 = Loc: x:0 y:0 z:0 FXList:FX_CWCgenTankDamageTransition

這是燃燒著的tank代碼,這里有個ParticleSystem的定義CWCgenTankDeathSmokeDamaged

好,把生存時間后面加n個0,保存。

Lifetime = 2000000000.00 2000000000.00
  SystemLifetime = 2000000000.00

然后是FX_CWCgenTankDamageTransition的定義,這在FXList.ini中看到,其ParticleSystem代碼是……CWCgenTankTransitionExplosion

也一樣把生存時間改成很大的數字,好了,保存。你會發現,這個代碼為所有的戰車所用,難道,這樣一來,一勞永逸了???

打開游戲,自己生產三量隨便什么出來,二打一,沒幾炮,這架可憐的試驗車見了馬克思,我們開始期待它的表現……呃、它著火了,呃、它爆炸了,呃、它沒了!怎么回事??唉,這個放之四海皆準的方法竟然無效?不過你會發現,剛剛還停著那倒霉車的地方,冒著一團鬼火。這……是CWCgenTankTransitionExplosion代碼的效果。由此可見,在物品的死亡定義里面,物品本身和“粒子效果”是分離的。

原來,此游戲中對于尸體的停留時間,一概用DestructionDelay =這個定義去覆蓋。那是關于死亡后的模型的定義。而把死亡模型停留在著火情況還是發煙的情況的方法如下:

  • 讓死尸停留在剛被擊穿的形態上:改動CWCgenTankDeathArms
  • 定義在剛被擊中的冒火狀態:改動CWCgenTankTransitionExplosion
  • 讓死尸停留在著火狀態:改動CWCgenTankDeathFireRubble
  • 讓殘骸不斷的自爆:改動CWCgenTankDeathFireRubbleEmbers CWCgenTankDeathLenzflare【這個千萬不要改太大】
  • 冒煙狀態:CWCgenTankDeathSmokeDamaged,CWCgenTankDeathSmokeReallyDamaged,CWCgenTankDeathSmokeRubble【這三個是往復起作用的,形成煙霧時大時小的效果】
  • 下沉狀態是這么幾個:【沒試驗】CWCgenTankMuzzleFlashSmoke;CWCgenTankMuzzleFlashFlame;CWCgenTankMuzzleFlare

sshot008當然,友情提醒一下:為了你電腦不要載荷過大(玩這個游戲,配置好沒有用,因為引擎不太好)還請不要亂開效果。

關于飛機:

飛機死亡后模型在這幾個ini文件里面定義。CWCruJetHulk.ini【蘇聯噴射機】; CWCruHelicopterHulk.ini【蘇聯直升機】CWCusHelicopterHulk.ini【美國直升機】CWCusJetHulk.ini【美國噴射機】

要改的只有這條DestructionDelay

如果要修改效果,還是上面那些。我上面一張圖片其實出現了粒子系統的全面當機,一點效果也沒有了。這是開得過量的結果。我覺得,弄到“冒青煙”也就可以了。

士兵:

這個mod的兵的數量并不大,如果想瘋狂點,搞個狂爆兵的mod最好。還有一招,就是在地方的兵營Barracks里面加上

Behavior = ProductionUpdate ModuleTag_11
QuantityModifier = CWCruInfAssault 8
QuantityModifier = CWCruInfAntiMaterial 5
QuantityModifier = CWCruInfAntiTank 5
QuantityModifier = CWCruInfOfficer 3
End

這個技能,包你爽。

但是容易死機

兵士的死亡在游戲中會變成一個特殊的“死亡型”兵,一定時間內可以由醫生救活它,而這些死亡兵都會放在\Infantry\Death里面,那么簡單了,如果你想讓兵在更長的時間內可以救活,那么修改下

Behavior = LifetimeUpdate ModuleTag_03
  MinLifetime = 120000
  MaxLifetime = 220000
End

就行,但是,“死亡型”兵再次死亡后,變成的是一灘血,這個在底下的一個

Behavior = SlowDeathBehavior ModuleTag_07
    DeathTypes = ALL -EXTRA_3
    SinkDelay = 5000000000
    SinkRate = 0.5 ; in Dist/Sec
    DestructionDelay = 100000000000
    OCL = INITIAL OCL_CWCgenInfBlood
  End

里面可以看到,如果想要兵“倒在血泊中”,那么怎么辦呢?也很簡單,一個兵有很多不同的死法,我也懶的一一敘述,只說說方法——非常簡單,打開兵“活的”的ini搜索DestructionDelay全部改大就行了。我的設置是有的死后有尸體有血泊。有的完全只有血泊。可改Object CWCgenInfBlood致所有的兵死后都有永久的一灘血。

效果,怎樣?“一將功成萬骨枯”所言不虛。

sshot002

第三輯完

0 意見:

張貼留言

高人請指證,白癡請自證
<a href="連結網址">連結名稱</a>

Heifenbrug 的分享項目

 

About Me

我的相片
阿提拉
在此通告兩點, 1.鄙人止與廣場同歲 2.鄙人的想法決定了鄙人的寫法,是故沒有所謂主客觀
檢視我的完整簡介

閩越國 © 2008 Business Ads Ready is Designed by Ipiet Supported by Tadpole's Notez