Thinking Skeever

Skyrim/The Witcher 3 Modについてのあれこれ。FoModの作り方、Mod導入時のトラブル事例などのニッチな話を書いていきます。a.k.a. BowmoreLover@nexusmods

Skyrim Mod導入トラブル事例:セーブデータのロード時に確定CTD(Papyrus文字列数上限65535問題)-2016/5/13追記

原因

もしかしたらPapyrus文字列数上限65535問題に該当しているかもしれません。
この問題に該当する場合、そのセーブデータは破損しており、絶対にロードすることはできません。

Skyrimのセーブデータ(.ESS)には、Papyrusスクリプトの使用する文字列を格納する文字列テーブルがあります。ファイル形式上、文字列テーブルの配列数はunsigned shortで表現されており、65535(0xffff)が上限となります。
Papyrus文字列数の上限を超過しても、ある程度はプレイ続行でき、セーブすることも可能ですが、一度ゲームを再起動した後にそのセーブデータをロードすると確定CTDします(必要な文字列がすべて含まれていない不正なセーブファイルとなるようです)。
上限を超過した状態でプレイを続行するのも問題があるようです(参考記事をざっと見た感じ、一見問題がないように見えるが内部的には文字列テーブルがおかしくなっている可能性ありとのこと)。
参考記事によると、実験の結果、Skyrimのエンジンそのものは65535を超える文字を取り扱えるようであり、セーブデータの形式だけの問題らしいとのこと。

bcspさんによる参考記事:The Nexus Forums : Corrupt Saves - StrCount > 0xFFFF - CTD on load


f:id:thinkingskeever:20151114030550p:plain

問題の切り分け方法

Save game script cleanerを使う方法(初期切り分け)

Save game script cleaner by Hadoramでセーブデータを開いたとき、ツールがアプリケーションエラーとなる場合、本問題に該当する可能性が高いです。

TESV ESS Files Editorを使う方法(正確に判断)

TESV ESS Files Editor by fubrusを使って文字列数を正確に把握できます。

ツールを起動し「Open」ボタンを押してセーブデータを開きます。

左のツリーから「Global data table 3」を展開し、その下位にある「2.Papyrus」をクリックします。

右のツリーに表示されるStrings(数字)が現在の文字列数を示しています。65535からこの数字を引いたものが上限までの猶予となります。


「Range check error」ダイアログが表示された場合、既に文字列数上限を超過しています。

文字列数は状況によって1,000~2,000くらい増減することがあるようです。文字列数が超過していなくても63,000以上であれば「以前気付かぬうちに上限を超していた可能性がある」と考えたほうがいいでしょう。

ロードCTDするのに文字列数に余裕がある場合、残念ながら文字列数が原因ではありません。次のブログ記事を参考に他の原因を探ってください。

拙作のStrCountToolを使う方法(まとめてチェック)

複数のセーブファイルを纏めてチェックできるツールを作成してみました。
Crash Fix v8の拡張形式にも対応しています。
ダウンロード:StrCountTool v0.1
解説ページ:Skyrim自作MOD: StrCountTool 利用ガイド (v0.1版) - Thinking Skeever

実行例:

ファイルが壊れている場合、赤枠のようにエラーメッセージが表示されます。
MS OfficeやOpen Officeなどの表計算ソフトを使って表示することを想定していますので列が揃いませんがご勘弁を。




f:id:thinkingskeever:20151114030550p:plain

対策方法

ベゼスダがファイル形式を改善するのが一番ですが、Skyrimでは期待できないでしょう。Fallout4でも同じ問題があるのか気になるところですね。

  • 使用するMODを減らす(特に会話・スクリプト・アニメーションを大量に追加するもの)
  • Dynamic Distant Objects LOD - DynDOLOD by Shesonのv1.47以前は文字列テーブルを大量に消費しますが、v1.48以上にアップグレードすることで消費を大幅に削減できます(下記に実績を書いておきました)。
  • SL 1.61は文字列テーブルを大量に消費しますが、markdf氏のJContainersパッチを使って消費を大幅に削減できるそうです(要JContainer3.3)。

2016/05/04追記
●meh321氏のMOD Crash Fix v8に文字列数超過時の対策が追加されました。

CrashFixPlugin.iniの説明の和訳:

; 情報:スクリプトが65535より多い異なる文字列を使うと、セーブデータは破損しロードできません。
;    これは文字数が65520より大きい場合のファイル保存形式をわずかに変更することにより修正します。
;    これは、このオプションを有効にして作成したセーブデータの形式が変更されるため、バニラのゲームやsave gameツールで開けなくなることを意味します!
;    逆もまた真なりで、文字数を65520以下にして再びセーブするとバニラの保存形式に戻ります。
; 概要:https://forums.nexusmods.com/index.php?/topic/3924850-corrupt-saves-strcount-0xffff-ctd-on-load/ のための修正
; アドレス:大体30箇所のコードにパッチを当てた。
StringCount32=1

文字列数が65520を超えて作成したセーブデータはバニラの形式とは異なるため、Crash Fix v8のインストールされていない環境やセーブデータを扱う各種ツールでロードできなくなることに注意してください。

●markdf氏によりRestringerの開発が進められています(テスト版あり)
・PEXファイル中の文字列をJsonファイルに吐き出し、Jsonファイル中の文字列を参照するようPEXファイルを書き換えることにより、文字数を減らすアプローチです。
・ENDPOINT(末端MOD)に対してパッチを当てることを想定。例えばCampfireは他のMODにより利用されるので末端ではなく、FrostfallやWearable Lanternは末端MODである。
・実行にはJavaが必要で、Mod Organizer使用時は32ビット版のJavaが必要とのこと。



f:id:thinkingskeever:20151114030550p:plain

詳細解説

以下、参考記事の和訳を交えて解説します。

文字列テーブルに格納される文字列

参考記事によると、文字列テーブルには次のものが格納されるとのことです。

  • 関数が利用するローカル変数の定義。通常、関数が終了した後にテーブルから削除されるが、MCM関連の変数の一部は保持され続けるようです。
  • スクリプトプロパティ。文字列テーブルの大半はプロパティのようです。(筆者注:スクリプトの文字列プロパティの代表例はMCMのページ名です。ゲーム進行途中でMCMページ名の訳を変更するとMCMページが表示されなくなるのはこれに起因します)
  • スクリプト/フラグメント名(.pex含まず)。これらのスクリプト名はプロパティと同様のようです。文字列テーブルに含まれるスクリプト名が極めて少ないことがこれを説明しています。

文字列がすべてセーブデータに保存されるわけではなく、現在のセーブで使われているスクリプトの文字列が保存されるようです。従って、インストールしたMODの数や種類によっても変化しますし、ゲームの進行状況に応じたスクリプト環境の変化によっても増減します。

どういうMODが文字列数に悪影響を及ぼすのか(参考記事の和訳)

  • 確実ではないですが、一般的な経験則によれば、スクリプトが多いほどプロパティの数も多くなります。これは大量に会話を追加するMOD(Inteesting NPCs)が大きな影響を及ぼす理由をうまく説明しています。私は会話系MODの専門化ではないですが、クエストステージを進めるためだけにスクリプトが必要となるようです。私に言わせれば、MOD制作者がロールプレイの会話を追加することで16ビットの制限を圧迫するベゼスダのやり方はとてもとてもマヌケに思えます。
  • 大規模で複雑なMCMを持つMOD。MCMの各項目(スライダー、トグルボタンなど)それぞれに対して変数定義が必要です。文字列テーブルの内容を見ると"OID"を含みMOD作者の慣例に従ったネーミング規則を持つ変数名が大量にありました。MODが無意味なMCMを追加するのを見て私はため息をつきます。シンプルなままでいいよ。
  • 沢山のプロパティが付いたスクリプト。プロパティは文字列テーブルの数に大きな影響を与えるようです。例えばですが、最近私は素晴らしい"Illustrious Cloaks Of Skyrim"をスクリプト版からクラフト版にダウングレードしました。スクリプト版ではスクリプト1つあたり230ほどのプロパティがあります。スクリプト版の方がはるかにエレガントで適切な実装ですが、クラフト版にはまったくスクリプトが含まれていません。
  • アニメーションMOD。特に「その手のサイト(訳注:Lovers Lab)」のユーザーで問題になります。アニメーション毎にいくつかの文字列が追加されることが報告されています。

さらに詳しい情報について

bcspさんによる記事:The Nexus Forums : Corrupt Saves - StrCount > 0xFFFF - CTD on loadでは、解決方法に関する議論や各MODの使用文字列数調査が継続して行われています。
OP(最初の書き込み)にはMODの使用文字列数をまとめたgoogleスプレッドシートへのリンクもありますので参考にしてください(うっかり更新しないようにご注意を)。


f:id:thinkingskeever:20151114030550p:plain

Crash Fix v8について

Crash Fix v8を使って実際に文字列数が65535を超過したセーブデータを作成し、その仕組みについて調査してみました。
Papyrusにおける文字管理方式、破損の仕組みを説明したあと、Crash Fix v8の仕組みについて説明します。

Papyrusにおける文字管理方式(PEXファイルの場合)

次のスクリプトコンパイルしてPEXファイルを作成したとします。

Scriptname TestScript extends ObjectReference
Event OnActivate(ObjectReference akActionRef)
	Debug.MessageBox("Not enough money")
EndEvent

PEXファイルには次のような情報が保存されます。保存形式はバイナリ形式ですし保存される情報はもっと多いですが、分かりやすいように簡略化しています。
文字列テーブル

文字列番号 文字列
0 testscript
1 ObjectReference
2 OnActivate
3 akActionRef
4 debug
5 MessageBox
6 Not enough money

スクリプト中間コード:()内が文字列番号

Scriptname (0) extends (1)
Functioon (2)((1) (3))
	(4).(5)((6))
EndFunction

このように、スクリプトコード中の文字列はすべて文字列番号に置き換えられ、文字列本体は文字列テーブルにまとめられます。同じ文字列がある場合、大文字小文字を無視して文字列テーブルの1エントリにまとめられます。

PEXファイルの文字列テーブルの上限は65535(0xffff)ですが、1つのスクリプトファイルで巨大なコードを書くことはないため、この時点では何も問題ありません。

セーブデータに保存される文字列

セーブデータには次の文字列が保存されます(ただし保存のトリガとなる一定の条件がある模様)。

  • スクリプト
    • ESP/ESMのプロパティで定義された文字列
    • オブジェクト名(pexファイル名から拡張子を取り除いたもの)
    • Papyrus広域変数の型名・変数名・初期値
    • Papyrus広域変数に動的に代入された文字列
  • アクティブスクリプトの場合

セーブデータ破損の仕組み

Skyrimゲームエンジンに読み込まれたスクリプトの文字列はすべて1つの文字列テーブルに保存されます。ゲームエンジンでは65,535を超える文字列テーブルを取り扱えるようですが、ファイルに保存する際に16ビットに切り詰められてしまいます。

例えば文字列数が65,600の場合、16進数に変換すると0x10040となりますが、セーブデータには下位16ビットの0x0040が文字列数として保存されます。
調査した範囲では文字列テーブルは65,600個分すべてがセーブデータに保存されるようなので、次回読み込み時に「文字列数が0x0040なのにそれ以上の文字列が入っている」状態となり、データ形式不正=CTDとなります。

Crash Fix v8 StringCount32機能の仕組み

CrashFixPlugin.iniのStringCount32を1にすることで、セーブデータ中の文字列数および文字列番号を拡張することができます。

; 情報:スクリプトが65535より多い異なる文字列を使うと、セーブデータは破損しロードできません。
;    これは文字数が65520より大きい場合のファイル保存形式をわずかに変更することにより修正します。
;    これは、このオプションを有効にして作成したセーブデータの形式が変更されるため、バニラのゲームやsave gameツールで開けなくなることを意味します!
;    逆もまた真なりで、文字数を65520以下にして再びセーブするとバニラの保存形式に戻ります。
; 概要:https://forums.nexusmods.com/index.php?/topic/3924850-corrupt-saves-strcount-0xffff-ctd-on-load/ のための修正
; アドレス:大体30箇所のコードにパッチを当てた。
StringCount32=1

実際に文字列数が超過したセーブデータを作成し調査したところ、セーブデータ中の文字列数(UInt16)および文字列番号(UInt16)が次のように保存されていました。

  • 数<=0xfff0の場合:UInt16形式(バニラと同じ)
  • 数>0xfff0の場合:0xff + 0xff + UInt32形式(Crash Fix拡張)

データ読み込みの際は、値が0xffffなら続けてUInt32の値を読み込めばいい訳です。とてもスマートですね!

このセーブデータで継続的にプレイした訳ではありませんが、パッチ箇所に漏れがなければ上記の問題点を完璧に解決するものだと思います。
とはいえ、文字列数が超過したセーブデータをセーブクリーナなどで読み込めないのは不便なので、あくまでも保険として利用するのが賢いと思います。



f:id:thinkingskeever:20151114030550p:plain

実例(私の体験談)

最近新しい環境を作成してニューゲームしたのですが、全ホールドの従士になってDawnguardクエストを開始しセラーナを救出した直後に本問題が発生しました。
タイミングがタイミングなので諦めきれず、グーグル先生を使ってやっと参考記事を見つけた次第です。
どの程度のMOD構成でどれくらいPapyrus文字列数を消費するかの目安になるかもしれないので、私の環境とPapyrus文字列数を晒しておきます。

MOD環境

カスタムボイスフォロワー、イマージョン系MOD、景観・遠景改善を中心に構築しました。SLなどのLovers Lab系MODは入れていません。
FPS(GTX760で28前後)でスクリプト遅延もひどく、あまり褒められた環境ではありません。他のブログ管理者様が「これを入れたら重くなる」というものがことごとく入っているはずなので注意してください(これでも大分減らしたんですが)。

Mod Organizerのplugin.txtの内容:

# This file was automatically generated by Mod Organizer.
Skyrim.esm
Update.esm
Unofficial Skyrim Patch.esp
Dawnguard.esm
Unofficial Dawnguard Patch.esp
HearthFires.esm
Unofficial Hearthfire Patch.esp
Dragonborn.esm
Unofficial Dragonborn Patch.esp
ApachiiHair.esm
ApachiiHairFemales.esm
ApachiiHairMales.esm
RaceCompatibility.esm
Campfire.esm
HighResTexturePack01.esp
HighResTexturePack02.esp
HighResTexturePack03.esp
Unofficial High Resolution Patch.esp
Bethesda_Hi-Res_Optimized.esp
SMIM-Merged-All.esp
NoWaterStreamBug.esp
RealShelter.esp
FISS.esp
SkyUI.esp
FNIS.esp
FNISspells.esp
Frostfall.esp
UIExtensions.esp
Atlas Legendary.esp
Atlas Compass Tweaks.esp
Mystical Illumination - Glowing Signs with Point the Way.esp
TheEyesOfBeauty.esp
The Eyes Of Beauty - Elves Edition.esp
EnhancedCharacterEdit.esp
CharacterMakingExtender.esp
USKP Patcher for RaceCompatibility.esp
Alternate Start - Live Another Life.esp
FollowerLivePackage.esp
Convenient Horses.esp
My Home Is Your Home.esp
sandboxcylinderheight.esp
dD - Realistic Ragdoll Force - Realistic.esp
LPBards.esp
Males of Skyrim.esp
IB - All-in-One.esp
SBF All In One + DLC.esp
Gyot_NPCs.esp
BTRH_Waifu.esp
Bijin Warmaidens.esp
BW Ria.esp
Bijin NPCs.esp
Bijin Wives.esp
Serana.esp
Valerica.esp
MyWarmaidens.esp
Eli's Coffee Mod.esp
Auto Unequip Ammo.esp
towConversation.esp
00FacialExpressions.esp
GoToBed.esp
Hide Those Futile Quests.esp
hmkHotKeys.esp
JaxonzEnhGrab.esp
JaxonzZoom.esp
PerksUI.esp
jkjsenhancedhotpools.esp
The Paarthurnax Dilemma.esp
Customizable Camera.esp
DetectLever.esp
DG-NoAttacks.esp
DragonBlood.esp
Dual Hand Combo Hotkeys.esp
No Magic Ninja Dodge - No DLC.esp
Qasmoke Travel Spell.esp
Upgrade Leveled Items Spell.esp
Snotgurg Equipment HUD.esp
FixCombatMusic.esp
FCO - Follower Commentary Overhaul.esp
PreventsAccidentPickUp.esp
Immersive detection of NPC.esp
jbNPCMap.esp
MIDFollowMeCloser.esp
SaveHotKeyMCM.esp
SSAssist.esp
ShowRaceMenuAlternative.esp
SkySet.esp
UnreadBooksGlow.esp
Headtracking.esp
TChomesHearth.esp
EnhancedLightsandFX.esp
ELFX - Exteriors.esp
Skysan_ELFX_SMIM_Fix.esp
ELFX - NoBreezehome.esp
BreezehomeByLupus.esp
FieldLab.esp
MammothManor.esp
Pinegrove Lodge.esp
Bluthanch.esp
Wynter.esp
Vellamo.esp
Various Hunter.esp
Chaconne.esp
Toccata.esp
Vivace.esp
GoddessDiana.esp
OK_Noemie.esp
OK_sela.esp
OK_HumanBeastCaravan.esp
OK_Rosalie.esp
RosaFollower.esp
Recorder Follower Base.esp
SolitudeTheLuckySkeeverHome_Lite.esp
Warmstone.esp
RiftenGarret.esp
Thornrock.esp
Minerva.esp
Holidays.esp
WondersofWeather.esp
BlackHorseCourier.esp
Dig Site.esp
WitchTent.esp
alesCampBedrollsSupplies.esp
SimplyKnock.esp
WetandCold.esp
WetandCold - Ashes.esp
ArtOfTheCatch.esp
PipeSmoking.esp
FNISSexyMove.esp
Kyne's Gate.esp
bbDTP.esp
EasyWheel.esp
TKDodge.esp
FacelightPlus.esp
QuickLight.esp
RealisticWaterTwo.esp
RealisticWaterTwo - Legendary.esp
Watercolor_for_ENB_RWT.esp
Fantasy Soundtrack Project.esp
Fantasy Soundtrack Project - Combat.esp
AOS.esp
AOS2_RealisticWaterTwo Patch.esp
AOS2_WetandCold Patch.esp
Hunterborn.esp
Hunterborn_Campfire_Patch.esp
Animallica.esp
iNeed.esp
Skyrim Flora Overhaul.esp
SFO - Dragonborn.esp
Vivid Weathers.esp
Vivid Weathers - AOS patch.esp
MX2BeWithHealer.esp
Tiwa44_Minidresses_Standalone.esp
Tiwa44_Minidresses_Standalone_DG&DB.esp
UNP Spice Gear.esp
Long lost smelters by Hyralux.esp
Long Lost Smelters -Winterhold.esp
AMB Glass Variants Lore.esp
Differently Ebony.esp
aMidianborn_Skyforge_Weapons.esp
Mini Vamps.esp
RUSTIC SOULGEMS - Unsorted.esp
SL01AmuletsSkyrim.esp
SL01AmuletsSkyrimDGDB_Outfit.esp
Immersive Jewelry.esp
SL99Exchanger.esp
SL99Exchanger_Patch_Immersive Jewelry.esp
Skyrim Particle Patch for ENB - Flame Atronach Fix.esp
NoAnimalsReportCrimes-DG+DB.esp
Enhanced Landscapes.esp
Enhanced Landscapes - Solstheim.esp
Enhanced Landscapes - Marsh Pines.esp
Enhanced Landscapes - Oaks.esp
Enhanced Landscapes - DLC Patch.esp
Routa.esp
HoamaiiClearskyHideout.esp
WindPath.esp
AddItemMenu.esp
DynDOLOD.esp
RSPatch.esp
Bashed Patch, 0.esp

Papyrus文字列数の推移

#012 - 39,111
#015 - 44,706 DynDOLOD v1.47の導入
#031 - 45,055
#100 - 46,286
#210 - 50,303
#300 - 52,443
#400 - 59,663
#501 - 61,572
#600 - 63,793
#705 - 65,435 全ホールドの従士になった
#706 - 65,507 ディムホロウ洞窟突入
#707 - 65,434
#708 - 65,473
#710 - 65,496 セラーナ救出
#711 - 65,515
#712 - ロードできない!!
#713 - 41,207 DynDOLOD v1.49へのアップグレード後、屋外に出てセーブ(劇的に減った!)
--- その後の経過 ---
#719 - 41,294 セラーナをヴォルキハル城に送った後
#731 - 41,268 メリディアクエストクリア
#745 - 41,206 ドーンガード砦、新たな命令クエスト開始
#756 - 41,156 ハエマールの不名誉、デイドラの親友クエスト完了
#765 - 41,136 クロンヴァングル洞窟、ガンマーと合流しクマ討伐完了
#890 - 41,383 ドーンガード砦、残響を追ってクエスト開始
#933 - 41,369 アルケイナエウム、霊魂の確認クエスト開始
#949 - 41,491 ソウル・ケルン、死の超越クエスト開始
#972 - 41,562 アイスウォーター桟橋、死の超越クエスト完了
#991 - 41,447 アルフタンド・アニモンキュロリー、霊魂の確認クエスト進行中

グラフにしてみました。
f:id:thinkingskeever:20160501155532p:plain
DynDOLOD v1.49導入以降、増加傾向はほとんどありません。この調子で全クエストクリアまで持ちそうです。

ちなみに、以前構築した2つの環境は、DynDOLODを使っていない以外この環境と似たようなMOD構成でしたが、文字列テーブル数は39,000程度でした。


f:id:thinkingskeever:20151114030550p:plain

最後に

Forumでアドバイスしてくださった元記事The Nexus Forums : Corrupt Saves - StrCount > 0xFFFF - CTD on loadの投稿者bcspさんと、速やかにDynDOLODを改善してくださったShesonさんにこの場を借りて御礼申し上げます。もちろんご両人にKudosを差し上げました!
Thanks bcsp and Sheson!!

また、Crash Fixの作者meh321さんにも感謝します。正直これはFiles of the MonthどころかFiles of the Yearに匹敵する偉業だと思います。もちろんKudosとVOTEを差し上げました!
Thanks meh321! You're a genius!

みなさんへのお願い:
エストMODや比較的複雑な構造・機能を持つMODでは文字列を多く消費する傾向がありますが、決して作者様を責めないでください! どう考えても悪いのはベゼスダですから。
上記のグラフを見ていただければ分かりますが、MODそれぞれの(一度きりの)消費文字数はさほど問題ではありません(大規模MODを大量に導入する際に問題があるかもしれませんが)。オブジェクト増加に従って文字列消費量が増加するMODにさえ気をつければなんとかなると思います。



f:id:thinkingskeever:20151114030550p:plain

変更履歴

2016/04/12 08:00 - 公開
2016/04/13 07:30 - 少し改訂。実例/Papyrus文字列数の推移については今後断りなく追記します
2016/05/04 07:00 - Crash Fix v8とRestringerに関する情報を追記した。
2016/05/04 16:00 - Crash Fix v8の詳細説明を追記した。
2016/05/12 23:30 - StrCountToolのリンクを追記した。
2016/05/13 15:30 - StrCountTool解説ページのリンクを追記した。
//

Skyrim自作MOD: StrCountTool 利用ガイド (v0.1版)

拙作のツール StrCountToolの利用ガイドです。
このツールを使えば、SkyrimセーブデータのPapyrus文字列数を確認したり、プラグインファイル/スクリプトファイル中の文字列を表示することができます。
f:id:thinkingskeever:20160513150816p:plain

ツールのダウンロードはこちら→:StrCountTool v0.1


f:id:thinkingskeever:20151114030550p:plain
StrCountTool 利用ガイド (v0.1版)
f:id:thinkingskeever:20151114030550p:plain

1. はじめに

Skyrimセーブデータの文字列数上限65535問題をご存知でしょうか?
セーブデータにはバニラやMODで追加されたスクリプトに関する情報が保存されます。
スクリプトで使われている文字列データはセーブデータ中の文字列テーブルにまとめて保存されるのですが、セーブデータの文字列テーブルには最大65535個(符号なし16ビット)という上限があり、総文字列数が上限を超えるとセーブデータが破損しロードできなくなるというものです。

※この問題の詳細については以下の記事を参照してください。
bscpさんによる元記事:http://forums.nexusmods.com/index.php?/topic/3924850-corrupt-saves-strcount-0xffff-ctd-on-load/
日本語による解説(本ブログ):Skyrim Mod導入トラブル事例:セーブデータのロード時に確定CTD(Papyrus文字列数上限65535問題)-2016/5/13追記 - Thinking Skeever

本ツールを使えば、文字列の超過が発生していないか、増加傾向はないかを比較的簡単に確認することができます。
また、セーブデータではなく、プラグインファイル(ESM/ESP)やスクリプトファイル(PEX)に含まれる文字列の情報も表示できます。プラグインファイルやスクリプトファイルに含まれる文字列の一部がセーブデータに保存されることが確認されています。どのMODが文字列数増加に影響を与えているか調査する一助となるはずです。



f:id:thinkingskeever:20151114030550p:plain

2. 主な特徴

共通操作

  • テキストボックス2ペイン構成のGUIアプリケーション。
  • テキストボックスにファイルまたはフォルダをドロップしてファイルを開ける。
  • 最大2つのファイルを同時に開き、比較検討できる。
  • 表示する情報の表示レベルを選択可能。
  • Crash Fix v8以降の拡張セーブ形式に対応。v8/v9で動作確認済み。
  • 表示結果をテキストエディタ表計算ソフトで表示可能。
  • 表示結果をファイル比較ツールWinMergeで比較可能。
  • 各言語にローカライズされたファイルにも対応。

セーブデータ(ESS)ファイル表示

  • 単一ファイル表示/複数ファイルをまとめて一覧表示
  • 文字列数だけでなく、ヘッダ情報/ゲーム内時間/アクティブスクリプト/文字列テーブル内容も表示可能

プラグイン/スクリプト(ESM/ESP/PEX)ファイル表示

  • 単一ファイル表示/複数ファイルをまとめて一覧表示
  • ESM/ESPのプロパティ一覧を表示可能
  • ESM/ESPで使われてるスクリプト名/プロパティ名の一覧を表示可能
  • ESM/ESPで使われているプロパティ文字列の一覧を表示可能
  • PEXで使われている文字列の一覧を表示可能

f:id:thinkingskeever:20151114030550p:plain

3. 必要条件

動作環境

私はWindows XP/8/10を持っていないので動作検証できていませんが、恐らく.NET Framework 4.0以降がインストールされていれば動作します。


表計算ソフト(オプション)

本ツールの表示結果は表計算ソフトで表示することを意図しており、列揃えなどの調整を一切行っていません。
Microsoft OfficeApache OpenOfficeLibreOfficeなどの表計算ソフトを使うことで表示結果を見やすくしたり、グラフにしたりできます。
本ガイドではLibreOfficeを使った操作を紹介しています。

ファイル比較ツール(オプション)

表示結果の比較を行うには、WinMergeなどのファイル比較ツールが必要です。
標準ではWinMergeを使いますが、iniファイルを修正すればWinDiff、DF(でふ)などを使うことも可能です。



f:id:thinkingskeever:20151114030550p:plain

4. インストール方法

  • ツールをダウンロードします。こちらからどうぞ→:StrCountTool v0.1
  • ZIPファイルを回答し、StrCountToolごと任意のフォルダにコピーします。ただしゲームのフォルダ、Mod Organizer/NMMのフォルダ、Program Filesフォルダは避けてください。良く分からなければデスクトップ上でも問題ありません。
  • 旧バージョンからのアップデート時には、単純にファイルを上書きコピーしてください。
  • ツールを起動するにはStrCountTool.exeを実行します。


f:id:thinkingskeever:20151114030550p:plain

5. アンインストール方法

アンインストールする場合、インストールしたStrCountToolフォルダごと削除してください。レジストリは使っていませんのでクリーニングの必要はありません(厳密にはWindows.NET Frameworkによって少量のレジストリが作られているかもしれませんが、誤差の範囲だと思います)。



f:id:thinkingskeever:20151114030550p:plain

6. 基本的な使い方(一般プレイヤー向け)

セーブデータの文字列数が超過していないか確認する基本的な使い方を説明します。

ツールの起動とオプションの設定

StrCountTool.exeを実行してツールを起動します。

  • Crash Fix v8以降を使っていて、CrashFixPlugin.iniにStringCount32=1を指定している場合、「Using Crash Fix」をチェックします。
  • Skyrim's Language」のリストを開き、お使いのスカイリムの言語を選択します。旧日本語化方式(sLanguage=english)で日本語化している場合でも、「Japanese (UTF-8)」を選択してください。

文字列数を確認する(単一ファイル)

左右のテキストボックスのどちらかにセーブデータ(ESS)ファイルをドラッグ&ドロップします。
片方のテキストボックスが邪魔ですので、真ん中のセパレータを左右に動かして調整してください。
「globalDataTable3.Papyrus.strCount:」の数字が文字列数です。


文字列数が上限を超過している場合エラーとなります。
発生するエラーは不定で、「Error: インデックスおよびカウントはバッファー内の場所を参照しなければなりません。」エラーとなる場合もあります。


文字列数が上限を超過していても、Crash Fix v8以降を使っている場合は次のようになります。上限の65535を突破できているのがお分かりでしょうか?


文字列数の判断の目安は次のとおりです(私の個人的見解です)。

文字列数 判定 説明
~45,000 安全 まあ大丈夫でしょう。
50,000~55,000 警戒 上限超過に対する備えが必要です。文字列数が増加傾向にあるか監視すべきです
55,000~60,000 危険 そろそろ抜本的な対策が必要です。
60,000~ 対策要 このままプレイを続けるのは危険です。セーブデータのクリーニングが出来なくなってもよいならCrash Fix v8以降を導入しましょう。そうでなければ使用中MODの文字列数対策版を探すか、不要なMODを削除しましょう。
エラー 南無 このデータは破損しています。過去のデータにさかのぼってやり直してください。

文字列数を確認する(複数ファイルをまとめて)

テキストボックスにファイルをまとめてドラッグ&ドロップします。
セーブフォルダごとドロップしてもかまいません。また、拡張子.ESS以外のファイルは無視されますので、.SKSEファイルもまとめてドロップしても問題ありません。

ドロップすると進捗ダイアログが表示されます。
f:id:thinkingskeever:20160513151037p:plain

読み込みが終わると次のような一覧が表示されます。タブ区切りのテキストなので列が揃いませんがご勘弁を。

「Display Level」が「Summary」の場合、右から2つ目の数字が文字列数です。
文字列数が超過している場合、赤枠のようなエラーメッセージが表示されます。

表計算ソフトで開く

テキストボックスを右クリックして「Open as .csv」を選択すると、表計算ソフトで結果を表示できます。
f:id:thinkingskeever:20160513151052p:plain

Libre Officeがインストールされている場合、次のダイアログが表示されます。「区切る」「タブ」をチェックして「OK」ボタンを押します。
他の表計算ソフトでも同様のダイアログが表示されますので、読み替えて設定してください。
f:id:thinkingskeever:20160513151057p:plain

表計算ソフトで表示した様子です。列が揃って見やすくなりました。

ご注意:
表計算ソフトで開くcsvファイルはStrCountToolインストールフォルダのTempフォルダに作成されますが、StrCountTool終了時に自動的に削除されます。データを編集した場合、別名で保存しないと結果が失われます。

グラフを表示する

表計算ソフトで開いたらグラフを表示してみましょう。文字列数の増加傾向がビジュアルに見えるのでとても分かりやすいです。
strCount列(J列)全体を選択し、「挿入」-「グラフ」メニューを選択します。
f:id:thinkingskeever:20160513151250p:plain

「グラフウィザード」画面が表示されたら「完了」ボタンを押します。
これで単純な棒グラフが表示できました。
f:id:thinkingskeever:20160513151255p:plain


今度は横軸をゲーム内時間にして時系列で表示してみましょう。
今度はGameDaysPast列(I列)とstrCount列(J列)全体を選択し、「挿入」-「グラフ」メニューを選択します。
f:id:thinkingskeever:20160513151302p:plain

「グラフウィザード」画面が表示されたら好みのスタイルを選択して「完了」ボタンを押します。
ここでは「線のみ」を選んでみます。
f:id:thinkingskeever:20160513151315p:plain

時系列グラフが表示できました。
ゲーム内時間に比例して文字列数が増加している様子が分かります。ところどころMODの追加や更新で文字列数が急増しているのがよく分かりますね。
f:id:thinkingskeever:20160513151320p:plain

2つのセーブデータを比較する

文字列数の増加傾向がある場合、2つのセーブデータを比較して調査することで原因を突き止められるかもしれません。
本ツールではファイル比較ツールWinMergeを使って2つのセーブデータを比較することができます。、

ファイル比較ツールの準備

先にWinMergeをインストールし、WinMerge.exeのインストールされたフォルダをWindowsのPATH環境変数に追加しておいてください(パスを通しておいてください)。
パスを通したくない場合や、WinMerge以外の比較ツールを使う場合、StrCountToolのインストールフォルダ中のStrCountTool.iniを次のように修正してください。

[General]
winMergePath=winmerge.exe ← ここにファイル比較ツールのフルパスを指定する

ファイル比較ツール活用のススメ:
ファイル比較ツールはあらゆる場面で役立つとても便利なツールです。この機会に是非導入しましょう。

場面ごとの活用例:

  • MOD制作:修正したファイルの洗い出しと点検、過去のリリースと比較してファイル過不足チェックなど
  • MOD翻訳:過去訳との比較、翻訳対象MODの変更箇所洗い出しなど
  • MOD利用:MODアップデート時の変更点の洗い出し、Skyrim.iniファイルの変更点の見直しなど
比較の手順

左のテキストボックスに古いファイルを、右のテキストボックスに新しいファイルをドロップします。
f:id:thinkingskeever:20160513151341p:plain

ファイルを開いたら「Compare Text」ボタンを押します。
f:id:thinkingskeever:20160513151349p:plain

ファイル比較ツールが起動します。

「*** Papyrus Strings (数字):」の下が、セーブデータ中に含まれる文字列の比較となります。
スクロールして追加された文字列を眺めてみましょう。「F7」「F8」キーで前の・次の差異のある行にジャンプできるので便利です。

このセーブデータの場合、ゲームが進行するごとに「c28042」「c28297」という文字が増えていきました。調査の結果、DynDOLODが生成する文字列であることが判明し、DynDOLODを最新版にすることで増加傾向を止めることができました。

比較のコツ:
セーブデータ中の文字列は実行中のスクリプト(アクティブスクリプト)の数・種類によってもめまぐるしく変化します。
ゲーム内時間がある程度離れたデータや、新しい土地に入る前後・新しいクエスト開始前後とったイベントまたがりののデータを比較した方が問題を特定しやすいと思います。

f:id:thinkingskeever:20151114030550p:plain

7. 少し高度な使い方(MOD制作者/問題調査者向け)(作成中)

(現在作成中です)




f:id:thinkingskeever:20151114030550p:plain

8. 表示項目一覧

セーブデータ(ESS)ファイル

Lvl ※1 表示項目 説明 表示例
1 header.version: ファイル形式のバージョン 9
1 header.saveNumber: セーブ番号 10
1 header.playerName: プレイヤー名 Bowmore
1 header.playerLevel: プレイヤーレベル 1
1 header.playerLocation: プレイヤーの場所 ラッキー・スキーヴァー
1 header.gameDate: ゲーム内日時 001.35.36
1 header.playerRaceEditorId: プレイヤー種族 NordRace
1 header.playerSex: プレイヤー性別。女性は1 0
2 header.playerCurExp: 36.75
2 header.playerLvlUpExp: 100
1 header.fileTime: ファイル保存日時 2016/03/14 11:00:33
2 formVersion: 74
1 globalDataTable1.GlobalVariables.GameDaysPassed: ゲーム内経過日数(Skyrim広域変数より) ※2 0.5688909
1 globalDataTable1.GlobalVariables.TimeScale: タイムスケール(Skyrim広域変数より) 6
1 gameDateString: ゲーム内日時文字列(Skyrim広域変数より組み立て) 4E 201/07/17 13:39
1 GameHoursPassed (GameDaysPassed multiplied by 24): ゲーム内経過時間(GameDaysPassed * 24) ※2 13.65338
1 RealHoursPassed (GameHoursPassed divided by TimeScale): 経過実時間(GameHoursPassed / TimeScale) ※2 ※3 2.275563
2 globalDataTable3.Papyrus.header: 4
1 globalDataTable3.Papyrus.strCount: Papyrus文字列数。Crash Fixによる拡張形式の場合、末尾に(Crash Fixed)が表示される 39164
2 globalDataTable3.Papyrus.stringsSize (bytes): Papyrus文字列テーブルのサイズ(16進表記) 0x000EC0E9
2 globalDataTable3.Papyrus.scriptCount: スクリプト 5421
2 globalDataTable3.Papyrus.scriptInstanceCount: スクリプトインスタンス 55115
2 globalDataTable3.Papyrus.referenceCount: リファレンス数 0
2 globalDataTable3.Papyrus.arrayInfoCount: 1244
2 globalDataTable3.Papyrus.papyrusRuntime: 0x00017AD0
1 globalDataTable3.Papyrus.activeScriptCount: アクティブスクリプト 4
2 String Count used in Active Scripts: アクティブスクリプトで使われているPapyrus文字列数 196
3 globalDataTable3.Papyrus.FunctionMessageCount: 3
3 globalDataTable3.Papyrus.SuspendedStackCount1: 0
3 globalDataTable3.Papyrus.SuspendedStackCount2: 0
3 globalDataTable3.Papyrus.Unknown0Count: 0
3 globalDataTable3.Papyrus.QueuedUnbindCount: 0
3 globalDataTable3.Papyrus.SaveFileVersion: 5
3 globalDataTable3.Papyrus.ArrayCount1: 0
3 globalDataTable3.Papyrus.ArrayCount1a: 0
3 globalDataTable3.Papyrus.ArrayCount2: 1
3 globalDataTable3.Papyrus.ArrayCount3: 74
3 globalDataTable3.Papyrus.ArrayCount4: 20
3 globalDataTable3.Papyrus.ScriptListCount: 1
3 globalDataTable3.Papyrus.ArrayCount4a: 0
3 globalDataTable3.Papyrus.ArrayCount4b: 0
3 globalDataTable3.Papyrus.ArrayCount4c: 0
3 globalDataTable3.Papyrus.ArrayCount4d: 0
3 globalDataTable3.Papyrus.ArrayCount5: 0
3 globalDataTable3.Papyrus.ArrayCount6: 3
3 globalDataTable3.Papyrus.ArrayCount7: 1
3 globalDataTable3.Papyrus.ArrayCount8: 29
3 globalDataTable3.Papyrus.ArrayCount9: 0
3 globalDataTable3.Papyrus.ArrayCount10: 0
3 globalDataTable3.Papyrus.ArrayCount11: 0
3 globalDataTable3.Papyrus.ArrayCount12: 0
3 globalDataTable3.Papyrus.ArrayCount13: 0
3 globalDataTable3.Papyrus.ArrayCount14: 0
3 globalDataTable3.Papyrus.ArrayCount15: 0
2 *** Active Scripts アクティブスクリプトの一覧 -
3  Local Variables アクティブスクリプトで使われているローカル変数の一覧 -
3  Papyrus Strings used in Function アクティブスクリプトで使われているPapyrus文字列の一覧 -
3 *** Papyrus Strings used in Active Scripts アクティブスクリプトで使われているPapyrus文字列の一覧 (全アクティブスクリプト分) -
1 *** Papyrus Strings Papyrus文字列の一覧 -

※1:表示レベル(1=Summary / 2=Detail / 3=More Detail)
※2:メニュー表示中の時間はカウントされない。
※3:ゲーム途中でTimeScale値が変更された場合には不正確となる。

プラグイン(ESM/ESP)ファイル

Lvl ※1 表示項目 説明
0 プロパティ一覧 プロパティ定義の一覧。Display LevelがSummaryの場合、文字列型プロパティのみ表示
1 Script Names プロパティ定義されたスクリプト名の一覧
1 Property Names プロパティ名の一覧
0 Property Strings プロパティで定義された文字列の一覧

※1:表示レベル(1=Summary / 2=Detail / 3=More Detail)


スクリプト(PEX)ファイル

Lvl ※1 表示項目 説明
0 String table 使用されている文字列の一覧

※1:表示レベル(1=Summary / 2=Detail / 3=More Detail)





f:id:thinkingskeever:20151114030550p:plain

本ガイドの改訂履歴

  • 2016/05/13 15:30 - 公開開始。v0.1対応
  • 2016/05/14 09:30 - 表示項目一覧を追記
  • 2016/05/21 10:30 - Crash Fix v9に関する記述を追記

以上

Wearable Lanterns公式ページの和訳(2016/06/20 - v4.0.2対応)

Chesko氏のSkyrim用Mod「Wearable Lanterns」公式ページの和訳です。
大変すばらしいModをシェアしてくださったCheskoさんにこの場を借りてお礼申し上げます。

補足:


f:id:thinkingskeever:20151114030550p:plain

Mod情報

Wearable Lanterns by Chesko
ダウンロードサイト:http://www.nexusmods.com/skyrim/mods/17416
Chesko氏公式サイト:http://skyrimsurvival.com/home/wearable-lanterns/
Skyrim Mod データベース:http://skyrim.2game.info/detail.php?id=17416
Chesko氏のTwitterhttps://twitter.com/CheskoTES


Wearable Lanterns Japanese Translation by Sifka(日本語版)
ダウンロードサイト:http://www.nexusmods.com/skyrim/mods/18464
Skyrim Mod データベース:http://skyrim.2game.info/detail.php?id=18464


f:id:thinkingskeever:20151114030550p:plain


http://skyrimsurvival.com/wp/wp-content/uploads/2016/03/ScreenShot139.jpg

Wearable Lanterns Home:Wearable Lanterns | Skyrim Survival

Wearable Lanterns 4が利用可能になりました! ここ Wearable Lanterns Change Log をクリックすればパッチの完全な情報が見れます。

Wearable Lanternsは The Elder Scrolls V: Skyrimのための装備可能ランタンMODの決定版です。

ベルトに掛けたり手に持ったりできる作成・装備可能なトラベルランタンを追加します。空のホタルランタンでホタルを捕らえて、戦闘や冒険中に手ぶらで暗いダンジョンの道を照らしましょう。Dragonbornがインストールされている場合、紙製のランタン(ダンマーランタン)を作ることもできます。

Campfireがインストールされていれば、「サバイバルスキル: 道具作成」を使ってトラベルランタンや紙製のランタン(ダンマーランタン)を作成したり、トラベルランタンの燃料を焚き火の火口として利用できます。

ランタンをベルトの上に配置するのは「ゼルダの伝説: トワイライトプリンセス」にインスパイアされました。それはドラゴンズドグマの先駆けともなりました。ランタンの使い方と切り替え方(持つまたは装備する)は、SkyUIのMOD設定メニューから変更できます。Wearable Lanternsはキーボードとゲームパッド両方の操作をサポートしています。


f:id:thinkingskeever:20151114030550p:plain

遊び方:How To Play | Skyrim Survival

http://skyrimsurvival.com/wp/wp-content/uploads/2016/03/ScreenShot144small.png

ランタンは種類によって作成したり購入することができます。

  • トラベルランタン:ほとんどの一般雑貨商人から購入できます。または鋳造器具で作成できます。
  • 紙製のランタン(ダンマーランタン):鋳造器具で作成できます。Dragonbornがインストールされている必要があります。
  • ホタルランタン:ほとんどの一般雑貨商人から空っぽのホタルランタンを購入できます。装備してホタルを選択して捕まえます。捕まえたホタルは瓶の中に入ります。

捕まえたホタルは隠密状態でホタルランタンを落とすことで逃がすことができます。

Campfireがインストールされていれば、「サバイバルスキル: 道具作成」を使ってトラベルランタンと紙製のランタン(ダンマーランタン)を作成できます。

ランタンを装備する

http://skyrimsurvival.com/wp/wp-content/uploads/2016/03/ScreenShot142small.png

デフォルトではランタンをベルトの背面右に装備します。装備するだけで点灯します。

MCMでは場所を背面右、前面右、または手持ちから選択できます。

デフォルトではランタンは装備スロット55番を使用します。ランタンの使用する装備スロットはMCMで選択できます。ランタンを手に持つ場合、従来通り持つ場所のスロットを使用します。

また、MCMでランタンの明るさを設定することもできます。

フォロワーもランタンを使える

フォロワーにランタンを与えると、彼らもランタンを使い始めます。

フォロワーのランタン装備位置を変更するには、会話メニューから「ランタンについて」を選択します。フォロワーは教えられた装備位置をずっと覚えています。

フォロワーは夜間や、洞窟やダンジョンのような敵のいる屋内でランタンを点灯します。日中、隠密中、敵のいない屋内(家や宿屋など)では消灯します。

フォロワーにランタンを与えた場合、たいまつを取り上げることをお勧めします。そうしないとどちらも使います。

Extensible Follower Frameworkを使う場合、「Inventory」オプションでなく「Equipment」オプションでランタンを渡してください。そうしないと装備してくれません。

ランタンの燃料

http://skyrimsurvival.com/wp/wp-content/uploads/2016/03/ScreenShot144small-1.png

「ランタンの燃料を使う」または「ホタルの餌を使う」を有効にした場合、ランタンの動作に燃料が必要となります。この機能はオプションです。

ランタンの燃料は一般雑貨商人から比較的安価に購入できます。燃料が切れると自動的にランタンの燃料が補充されます。ランタンの燃料一瓶でランタンは満タンになります。

山の花やシッスルのようなSkyrimの至るところで見つかる花は、ホタルに与える花粉の餌として使えます。花を取るだけで自動的にホタルランタンに置かれます。ランタンを満タンにするには花が約4つ必要です。

通常、ランタンの燃料一瓶または花4つは、ランタンをたいまつ2本分の時間燃やし続けることができます。

燃料を確認するには「燃料チェック」ホットキーを使うか、「点灯/消灯時に燃料チェック」オプションを有効にして長押し/ホットキーでランタンを点灯/消灯します。

Campfireがインストールされていれば、トラベルランタンの燃料は焚き火をつけるのに非常に優秀な火口として利用できます。

ホットキー

MCMでランタンのホットキーを設定できます。

「点灯/消灯」「燃料チェック」にはキーボードのホットキーのみ設定できます。Skyrim本体で使われていない任意のキーを割り当てられます。

特定のキーを割り当てる代わりに、「長押しで点灯/消灯する」を有効にして長押しでランタンを点灯/消灯することができます。「使う」「スプリント」「武器を構える」キーから選択できます。これはFalloutでPip-Boy lightを有効にするのと似た感じです。この方法はゲームパッドによるランタンの点灯/消灯もサポートしています。

ゲージ

http://skyrimsurvival.com/wp/wp-content/uploads/2016/03/ScreenShotmetersmall.png

燃料機構を有効にすると、燃料の残量を示すゲージとメッセージが適切なタイミングで画面上に表示されます。

MCMの「ゲージ」ページの「Display モード」は、「常にオン」「自動」「オフ」から選択できます。「自動」は推奨設定で、残量が50%/10%/空っぽのときにゲージが表示されます。

画面上のゲージの配置に合わせたレイアウトのプリセットを4種類から選択できます。ディスプレイのアスペクト比は16:9/16:10/4:3をサポートしています。

上級者ユーザーは、サポートされていないアスペクト比の場合でもゲージを画面上の好きな位置に表示するよう設定できます。多くの項目を設定するためには、燃料ゲージ/花粉ゲージの高度な設定を有効にします。

プロファイル

プロファイルは私のMODの多くにある機能です。Wearable Lanternsのすべての設定はプロファイルにセーブされます。設定内容はセーブデータに共通のファイルにセーブされ、ロード・キャラクター・ニューゲームに関わらず永続的に利用できます。一度設定した内容はどこでも利用することができ、ゲーム開始時に自動的にロードされます。Wearable Lanternsには選択可能なプロファイルのスロットが10個あります。

Mod Organizerの利用者なら、プロファイルのファイルはoverwriteディレクトリ(overwrite/SKSE/WearableLanternsData)にセーブされます。Mod Organizerはこれをエラーとして報告しますが、無視しても安全です。
もしくは、これらのファイルをWearable LanternsのMODディレクトリにコピーすると、以降こちらにセーブされます(意味が分かる場合のみこれを実行してください)。
(訳注:overwriteにデータを残すことは何かとトラブルの原因となります。overwriteの右クリックメニューから「MODを作成」を選んでMODフォルダに移動した後、有効にすることをお勧めします)

間違ってプロファイルを削除したり紛失した場合、ゲームをロードするとすべての設定がデフォルトに戻ります。

その他の設定

  • モード変更:「手動」または「自動」を選択します。
    • 「手動」の場合、ランタンを装備すると常に点灯します。ホットキーを使ってランタンを点灯/消灯できます。
    • 「自動」の場合、プレイヤーのランタンはNPCが装備したときと同様に機能します。夜間に点灯し、日中に消灯します。洞窟やダンジョンのような敵のいる屋内で点灯し、敵のいない屋内(家や宿屋など)では消灯します。この場合でもホットキーを使ってランタンを点灯/消灯できます。
  • 隠密中に消灯する:有効にすると隠密中にランタンを消灯します。これはモード変更に関わらず動作します。ですから、これを有効にしても他の時には手動モードを使えます。
  • 自動的にランタンを地面に置く:左手にランタンを持っている場合、ホットキーを使って左手の盾や武器を装備すると、ランタンは点灯したまま地面に置かれます。後でランタンを拾うと自動的に再装備されます。これはOblivionで人気のあったDrop Lit Torchesと非常に良く似ています。
  • 表示方法:燃料の残量をチェックするとき、ゲージ、メッセージ、どちらも表示するかを選択します。


f:id:thinkingskeever:20151114030550p:plain

インストールとアップグレード:Install and Upgrade | Skyrim Survival

始める前に…

Wearable Lanternsをインストールする前に次のことを行ってください。

  • SKSE 1.7.3以上をインストールします。SKSEは必須です。http://skse.silverlock.org/からダウンロードするか、Steam Workshopからインストールしてください。
  • SkyUI 4.1以上をインストールします。SkyUIは必須です(SkyUI AwayでもOKです)。
  • オプション:Dragonborn DLCをインストールします。紙製のランタン(ダンマーランタン)を使いたい場合、Dragonborn DLCは必須です。Dragonbornはオプション要件であり、それがなくてもWearable Lanternsは動作します。
  • 古いスクリプトファイルを削除します。過去にWearable Lanterns 3.x以前をインストールしたことがある場合、インストールしたファイル中に残っているスクリプトファイル(解凍済みのルーズファイル)をすべて削除する必要があります。これはあなたの使っているMOD管理ツールで管理されているはずです。もしMOD管理ツールを使わずに直接インストールした場合、Skyrim/Data/ScriptsフォルダおよびSkyrim/Data/Scripts/Sourceフォルダから、ファイル名が_WLで始まり拡張子が.pscまたは.pexのファイルを探しすべて削除してください。
  • ModをダウンロードしたらWearable LanternsのBSAファイルを解凍しないでください。BSAファイルを解凍してLooseファイルにすると、今後のアップグレード時に問題が起こりやすくなります。Looseファイルは常にBSAファイルより優先してロードされるので、(今後のアップデートでBSAファイルを置き換えても)最新のファイルがロードされず、modの特定機能が動かなくなるかもしれません。あなたがmod制作者で意味をよく理解している場合のみLooseファイルに解凍してください。警告はしました。

訳注:BSAファイルの解凍について
ユーザの導入ミスや不適切なインストールによる問い合わせを減らしたいという意味合いも込めてこの警告をしているのだと思いますが、modのロードの仕組みを理解しているならばBSA解凍すなわち悪という訳でありません。modを日本語化する上ではBSAファイルの解凍と日本語化は欠かせませんから。日本語化のためにBSAファイルを解凍する場合、以下の点に留意しましょう。

  • Mod管理ツール、できれば仮想フォルダの扱えるMod Organizerを使う
  • 必要最低限のファイルを解凍する
  • BSAより解凍したファイルの方が優先されることを念頭に置く
  • modのバージョンアップの際、特に指示がない場合は前バージョンのファイルを削除する

新規インストール方法

  • 単純にダウンロードして、インストールして、お使いのMOD管理ツールでMODを有効にしてください。
  • MOD管理ツールからStorageUtil.dllやJsonUtilなどの共用コンポーネントの上書きについて警告されるかもしれませんが問題ありません。上書きを選択します。Wearable LanternsにはPapyrusUtil 3.2など、私のMODでよく使われている共用コンポーネントの最新版が入っています。

アップグレード方法

アップグレードに関する重要な情報
  • 旧バージョンからアップグレードできるのは3.0bからのみです。他のバージョンからアップグレードする場合、ニューゲームから導入する必要があります。
  • ニューゲームから始めると、問題が発生することなく、より簡単にインストールできます。
  • みんなのゲームはそれぞれ異なります。進行状況もまちまちでしょう。いずれにせよ、ニューゲームする必要があるかもしれません。
アップグレード手順 - 直接アップグレードする方法

この方法が最も簡単ですが、一部のユーザーで問題が起こる可能性があります。この手順に従うことで問題が発生した場合、クリーンセーブする方法を試してください。

    1. セーブデータをバックアップします! この手順を飛ばさないでください!
    2. プレイヤーとフォロワーが装備しているランタンをすべて装備解除します。
    3. 屋内セル(家、宿屋など)に移動します。
    4. ゲームをセーブして終了します。
    5. MOD管理ツールを使ってWearable Lanterns 4をダウンロード・インストールします。(MOD管理ツールからStorageUtil.dllやJsonUtilなどの共用コンポーネントの上書きについて警告されるかもしれませんが問題ありません。上書きを選択します。Wearable LanternsにはPapyrusUtil 3.2など、私のMODでよく使われている共用コンポーネントの最新版が入っています)
    6. MOD管理ツールでWearable Lanterns 3.0bを無効にします。
    7. MOD管理ツールでWearable Lanterns 4を有効にします。
    8. ゲームを起動して先ほどセーブしたデータをロードします。Wearable Lanternが起動し、MCMが更新されるはずです。(Papyrusログが有効な場合、多岐に渡る大量のエラーがログファイルに出力されます。これはアップグレード手順で想定されたものです。ほとんどは一度しか出力されず、無視できるものです)
アップグレード手順 - クリーンセーブする方法

上記の直接アップグレードする方法で問題が起こったユーザーでもこのアップグレード手順でうまくいくかもしれません。この手順に従うことで持っているランタンをすべて失うことになりますが、他の方法が失敗しニューゲームしたくない場合はこれが最良の選択です。

    1. セーブデータをバックアップします! この手順を飛ばさないでください!
    2. プレイヤーとフォロワーが装備しているランタンをすべて装備解除します。
    3. 屋内セル(家、宿屋など)に移動します。
    4. ゲームをセーブして終了します(訳注:新規セーブ推奨)。
    5. MOD管理ツールでロードオーダーからWearable Lanternsを無効にします
    6. ゲームを起動します。
    7. 再びゲームをセーブして終了します(訳注:新規セーブ推奨)。このセーブデータはWearable Lanternsがない状態で保存されています。
    8. MOD管理ツールを使ってWearable Lanterns 4をダウンロード・インストールします。(MOD管理ツールからStorageUtil.dllやJsonUtilなどの共用コンポーネントの上書きについて警告されるかもしれませんが問題ありません。上書きを選択します。Wearable LanternsにはPapyrusUtil 3.2など、私のMODでよく使われている共用コンポーネントの最新版が入っています)
    9. MOD管理ツールでWearable Lanterns 4を有効にします。
    10. ゲームを起動して先ほどセーブしたデータをロードします。ランタンを入手して動作することを確認してください。(Papyrusログが有効な場合、多岐に渡る大量のエラーがログファイルに出力されます。これはアップグレード手順で想定されたものです。ほとんどは一度しか出力されず、無視できるものです)

この時点でMODがまだ正常に動作しない場合はニューゲームで開始する必要があります。


f:id:thinkingskeever:20151114030550p:plain

互換性:Compatibility | Skyrim Survival

一般的な互換性

  • DLCと互換性があります。
  • 販売アイテムを変更・追加するMODと互換性があります。
  • 主要なオーバーホールMOD(SkyRe, Requiem, Ordinator, PerMaなど)と互換性があります。
  • フォロワー追加MODと互換性があります。
  • 連れ歩くフォロワーの数を増やすMOD(multi-follower mod)と互換性があります。

拡張サポートによる互換性

  • Campfire :
    • 「サバイバルスキル: 道具作成」を使ってトラベルランタンと紙製のランタン(ダンマーランタン)を作成できます。
    • トラベルランタンの燃料は焚き火をつけるのに非常に優秀な火口として利用できます。
  • Hunterborn :
    • 動物の脂からランタンの燃料を作成できます。
  • 101BUGS :
    • 空っぽのホタルランタンを使ってホタル(訳注:101BUGSの)を捕まえ、ホタルランタンを作成できます。それは明るい赤色に光ります。

パッチ

  • Static Mesh Improvement Mod : このパッチを試してください。
  • ランタンのガラスの反射 : トラベルランタンが少し反射しすぎると思ったらこのパッチを試してください。
  • Stained Glass Lanterns : トラベルランタンにステンドグラスが付きます。
  • Firefly Torchbug Pet : ホタルランタンを使うとき、ホタルがあなたの肩の上に浮かびます。

非互換性

MOD制作者向け:持ち歩ける光源追加との互換性

手に持つランタンをサポートするために、Wearable LanternsはTorchEventsのIdleAnimationレコードへの編集が必要でした。このレコードを編集できるMODは一度に一つだけです。

以下の手順でWearable Lanternsと互換性を持つ、持ち歩き可能な光源を追加するMODを作成できます。

  • あなたのMODのTorchEventsのIdleAnimationレコードを編集しないバージョンを作成します。
  • 実行時にスクリプトを使ってフォームリスト_WL_HeldLanternsに自分の光源を追加します。サンプルコードは次のとおりです。(この例は説明目的のものであり、あまり堅牢ではありません。例えばこの例では一度Wearable Lanternsのチェックをしたら二度とチェックしません。個々のニーズや使用形態に合わせるために、あなたの手で拡張する必要があります。)
scriptname ExampleWearableLanternsCompatibility extends Quest

; For providing compatibility between Wearable Lanterns and
; a mod that adds new carried light sources.

Light property MyCoolLight1 auto
Light property MyCoolLight2 auto
Light property MyCoolLight3 auto

Event OnInit()
    bool WearableLanternsLoaded = Game.GetFormFromFile(0x005404, "Chesko_WearableLantern.esp")
    if WearableLanternsLoaded
        FormList _WL_HeldLanterns = Game.GetFormFromFile(0x005404, "Chesko_WearableLantern.esp") as FormList
        if !_WL_HeldLanterns.HasForm(MyCoolLight1)
            _WL_HeldLanterns.AddForm(MyCoolLight1)
            _WL_HeldLanterns.AddForm(MyCoolLight2)
            _WL_HeldLanterns.AddForm(MyCoolLight3)
        endif
    endif
endEvent


f:id:thinkingskeever:20151114030550p:plain

よくある質問:FAQ | Skyrim Survival

  • ゲームパッドをサポートしている?:はい! MCMの「長押しで点灯/消灯する」「点灯/消灯時に燃料チェック」機能でそのことが示唆されています。
  • SkyUIとSKSEが不要なバージョンは作らないの?:いいえ
  • 軽量版を作るつもりはある?:Wearable Lanternsは既にかなりの軽量化と最適化済みです。
  • ランタンの使用スロットを変更できる?:はい! MCMを使ってください。
  • (マルチフォロワーMODの名前)と互換性はある?:はい! Wearable Lanterns 4はすべてのマルチフォロワーMODと互換性があります。
  • (フォロワー追加MODの名前)と互換性はある?:はい! Wearable Lanterns 4はMODにより追加されるすべてのフォロワーと互換性があります。
  • DLCのフォロワー名)と互換性はある?:はい。Wearable Lanterns 4はゲーム本体のすべてのフォロワー(DLCにより追加される特殊フォロワー、例えばセラーナを含む)と互換性があります。
  • 半径とは独立して明るさを設定できるようにできない?:いいえ。それは受け入れがたいレベルの複雑さをMODにもたらしますので。
  • TES5EditがTorchEventsと呼ばれるアイドルアニメーションにダーティーエディットがあると言っている。クリーニングは必要?:Wearable Lanterns 4は既にTES5Editでクリーニング済みです、その編集は意図的なものです。その編集を削除したり変更したりするとMODが壊れます。
  • 数年前に衛兵用のランタンのようなオプションのアドオンがあったけど、どうなったの?:それらは実装上の問題がありとてもエラーを起こしやすいので削除されました。それらのサポートはWearable Lanterns 3.0と同様、打ち切られました。
  • Bandoliers(弾薬帯)MODと互換性はある?:はい。このMODとBandoliersはどちらも未使用の装備スロットを使っています。ランタンを装備すると同じ装備スロットのBandoliersが装備解除されます。お気に入りのBandoliersが装備解除されるのを回避したい場合、MCMで装備ランタンが使う装備スロットを変更します。
  • ランタンが使用するスロットは?:デフォルトで55です。

f:id:thinkingskeever:20151114030550p:plain

トラブルシュート:Troubleshooting | Skyrim Survival

既知の問題点

  • 「自動的にランタンを地面に置く」とき、(ごく稀に)地面まで落ちずに宙に浮く場合があります。
  • 例えばDawnguardのセラーナなど、複雑なスクリプトを持つ一部のフォロワーは、定期的に自分の装備アイテムを再評価します。このため、彼らのランタンが消灯したり装備解除されたりすることがあります。フォロワーに持たせる代わりに装備させたほうがうまくいく可能性が高いです。バニラのフォロワーについては、(たとえ彼らの行動を変更するマルチフォロワーMODを使ったとしても)うまくランタンを持ち運べるはずです。

トラブルシュート一般

  • 他のアイテムを装備すると、装備していたランタンが装備解除された。修正してくれない?:あなたが装備しようとしたアイテムとランタンが同じ装備スロットを使っています。MCMを使ってランタンの装備スロットを55以外に変更してください。
  • フォロワーがランタンとたいまつを同時に使用する。:フォロワーにランタンを与えたとき、たいまつを取り上げないと両方使おうとするかもしれません。
  • どの商人もランタンの燃料を売っていない:ゲーム内で24時間~7日経過させます。それでもアイテムが売っていない場合、他の商人を試してください。商人ごとにランダムで異なる在庫を持っています。
  • コンソールを使って紙製のランタン(ダンマーランタン)を追加したが、インベントリでランタンが紫色で表示され、装備できなかった:ランタンが紫色になるのはDragonbornがインストールされていないからです。紙製のランタン(ダンマーランタン)はDLCのアセットを使っているのでDragonbornが必要です。紙製のランタン(ダンマーランタン)を使うにはDragonborn DLCを購入してインストールしてください。
  • ゲージが表示されない:ゲージが有効(自動または常にオン)になっていること、ランタンを装備していること、そのランタンが燃料を消費するタイプかどうかを確認してください。それでもゲージが表示されない場合、下記のゲージに関する注意事項を参照してください。
  • フォロワーが期待通りランタンを使ってくれない:フォロワーは次の状況で自分のランタンを使います:屋外、午後7時~午前7時、敵のいる屋内(家や店以外)。隠密時にフォロワーはランタンを消灯します。
  • MCMで設定変更したのにフォロワーのランタンの明るさが変わらない:MCMの設定に関係なく、NPCのランタンは広さ:600、明るさ:1.55となります。
  • ランタンを使うと(地面の大きな暗部のような)おかしな表示異常となる:これはDirectXゲームエンジンの制限で、一度に多くの明かりがゲーム上のサーフェイス上に適用されるために発生します。町の周辺に重複する光源を新たに追加するMOD(たとえばLanterns of Skyrim)を使っている場合、この問題はより頻繁に発生します。簡単な解決方法はランタンの広さを狭めることです。
  • ランタン内の炎のエフェクトが正しく一列に並ばず、横に離れて見える:ENBのいくつか(例えばRealVisionTetrachromatic)ではこの視覚異常が発生する場合があります。メッシュ上での炎エフェクトの並びは正しいのに、ENBが間違った表示の原因となっています。

ゲージ

ゲージが表示されない場合:

  • サポートされないバージョン・正しくインストールされていないバージョンのSkyUIを使っていますか?4.1以降がサポート対象です。MOD管理ツールを使いましょう!
  • 間違ったバージョンのWearable Lanternsがインストールされていませんか?MOD管理ツールを使いましょう!
  • 直接コンパスオーバーレイのフラッシュファイルを変更するMODを使っていませんか?(iHUDの注意事項については以下を参照)
  • アスペクト比が16:9/16:10/4:3以外のディスプレイを使っていませんか?(解像度の注意事項については以下を参照)

ゲージと画面解像度

アスペクト比が16:9/16:10/4:3以外のディスプレイを使っている場合、ゲージは間違った場所に表示されます。修正方法は次のとおりです。

  1. MCMを開きます。
  2. ゲージのページを開きます。
  3. ゲージの詳細設定を表示します。
  4. ゲージが見えるまでX 軸、Y 軸、水平アンカー、垂直アンカー、高さ、幅の値を調整します。

プロファイルを切り替えない限り、これを設定する必要があるのは一度だけです。ゲージの設定はプロファイルに自動的に保存されます。

ゲージとiHUD

iHUDを使う場合にゲージが動作するかどうかは、HUDの表示に関するiHUDの設定に直接関係します。iHUDを使ってHUDを非表示にする場合、それでゲージが隠れます。

二つの選択肢があります。

  • Wearable Lanternsのゲージを「常にオン」にし、iHUDのHUD設定を切り替え(「Toggle compass hotkey」)に設定します。iHUDで「コンパス」ホットキーを押すたびにゲージが表示されます。
  • iHUDのHUD設定を「SkyUI HUD ALWAYS On」に設定し、Wearable Lanternsのゲージを「常にオン」または「自動」にします。これで適切に表示されます。続けてiHUDの他の設定(コンパスのアルファ値など)を好みに合わせて変更します。

iHUDでHUDの非表示を許可するとそれによってゲージが隠れます。両方の設定を変更しながらプレイしてみてベストと思う解決策を見つけてください。人によって求めるHUD修正はまちまちです。あなたの要求はあなた個人の好みによる一意見でしかありません。

SkyUIとWearable Lanternsが正しくインストールされてして他のMODとの競合がなく、全ての条件が同じであれば、ゲージは正しく動作します。



f:id:thinkingskeever:20151114030550p:plain

日本語訳の更新履歴

  • 2016/03/30 05:40 : 公開(v4.0.1和訳完了)
  • 2016/06/20 09:00 : v4.0.2対応。タイトルのみ変更。内容変更なし

//

2016/3/22 1:11 Nexus Mods全体通知メッセージの和訳

3/22の深夜にnexusを開くと画面全体に通知メッセージが表示されました。
去年暮れにアナウンスされていたアカウント情報漏洩に関するお願いメッセージ(念押し)でした。

通知メッセージのポイント

  • 2013年7月にnexusアカウントを持っていた人はパスワード変更を必ず変更しよう
  • これまで一度もパスワード変更していない人もパスワードを変更しよう
  • パスワードは少なくとも6ヶ月に1回変更しよう
  • このメッセージは6ヶ月に1回表示される。パスワード変更のリマインダ(合図)として活用してほしい

去年暮れにアナウンスされたパスワードの注意事項

  • 8文字より長くする
  • 特殊文字と数字をそれぞれ1文字以上含める
  • 他のサイトで使ったパスワードを流用しない(重要:一箇所で漏洩するとすべてのサイトのアカウントが乗っ取られるので)

通知メッセージの閉じ方

  • メッセージ末尾の文中にあるチェックボックス(ちょっと見つけにくい)をチェックし、一番下の「SUBMIT」ボタンをクリックします。

パスワードの変更方法

  • Nexus modsページ右上の"自分の名前's account"をクリックし、"User area"をクリックします。
  • 自分のユーザー名の付いたページが表示されます。左上"User"の中にある"Change your password"をクリックします。
  • "Email & Password"ページが表示されます。画面下の"Currrent password"に今のパスワードを、"NEW password"と"Confirm NEW Password"に新しいパスワードを入力して "Save Changes" をクリックします。画面上半分の"Emain Address"はe-mailアドレス変更欄ですので、パスワード変更だけなら入力不要(なはず)です。


最近アカウントを乗っ取られたMOD作者様もいらっしゃるようです。特にMOD作者の方はパスワード管理にお気をつけください。



f:id:thinkingskeever:20151114030550p:plain

Nexus Networkメンバー全員へのメッセージ

やあみんな

フルページの全体通知をしてすまない(これはnexusにログインしている人すべてに表示されている)。残念だけど、ユーザーの一部は去年12月のニュースを読まなかったか無視することにしたみたいで、僕たちはニュースを広めるためにもう少し努力しなきゃならなかった。

僕達は去年12月にハッカー界隈でNexus Modsからのデータベース漏洩の噂が広まっているとアナウンスした。このデータベース漏洩はずっと前の2013年7月に発生して、2013年8月以前にアカウントを持っていた人すべてに影響する。漏洩したのはユーザー名、メールアドレス、それとハッシュ化/ソルト化(要は暗号化)したパスワードだ。僕達の心からの謝罪とともに、全員にパスワードを変更するようにお願いした。

でも残念なことに、多くの人は自分のパスワードを変更していない。

僕達は特定の極悪な個人がこれらの暗号化されたパスワードを元に数々のクラッキングに取り組んでいること、それに最も単純なパスワード(「password」や「123456」)が既にクラックされ、他人のアカウントにログインするために使われているこを公式に知っている。2013年8月以前の時点で君のパスワードがあまり安全なものでなかった場合、それはすでにクラックされたかクラックされたも同然の状態で、サイトへのアクセスにうまく使うことができたのはありそうなことだ。

現在のところ、君がMODを入手するためにこのサイトを使うただの一般ユーザならそれほと大きな問題ではない。起きうる最悪のことは、君がアカウントから締め出され新しいアカウントを作らねばならなくなることだ(君のダウンロード履歴と心は失われるが)。しかしながら、君がMODの作者またはサポーター/プレミアムメンバーか、他のサイトで同じパスワードを使っているなら、事態はもっと深刻だ。悪意のあるユーザーが君のアカウントにアクセスして君のMODを改変したり、汚したり、サイト上のMODを完全に削除することができる。同様に、同じパスワードを使っている他のサイトのアカウントにたいして簡単にアクセスすることができる。明らかに、それは誰にとってもかなり胸糞悪い話だ!

そのような事態が発生した場合、僕達には君の身元を確認してアカウントを元に戻す方法が本当にないんだ。だから君のアカウントは失われることになる。

だからお願いだ。2013年8月以前からパスワードを変更していないか、これまでパスワードを変更していないなら、すぐにこのページからパスワードを変更してほしい。

君が2013年8月以降にNexus Modsに登録したなら、君のアカウントの詳細は漏洩物に入っていないので、当然君には当てはまらない。とはいえ、これは君にとっても依然重要な情報だ。君は少なくとも6ヶ月に1回はパスワードをリセットする必要があるので、この通知をパスワードリセットの合図として利用してほしい。

これが起こってしまったことと、それにより不快感を与えてしまったことについて再度お詫びします。

PS. みんなが一斉に自分のパスワードを変更し、提供されたリンクを読もうとしているので、現在フォーラムは少し過負荷な状態です。それについてはすまない!

発行:2016/3/22 1:11 by Dark0ne(サイトオーナー、ウェブマスター)

君がこのメッセージを読んだことを確認するため、このボックスをチェックしてください □

//

Copyright (C) 2015-2020 ThinkingSkeever, All Rights Reserved.
ブログの記事内に記載されているメーカー名、製品名称等は、日本及びその他の国における各企業の商標または登録商標です。
リンクはご自由に。記事の転載はご遠慮ください。記事を引用する場合はトラックバックするか元のURLを明記してください。