■Unity開発メモ用のWiki◎現在扱っていること・Unity全般・MMDからUnityへの変換してインポート・MMDの仕様把握・BlenderでMMDモデルのカスタム


目次



ログ関連のツール

LogExpert(ログのリアルタイム監視)

◎準備
「LogExpert-1.6.13.zip」をダウンロードして展開します。
「Log Export」を起動します。
File->Openから以下のログファイルを開きます。
ドキュメント\My Games\Skyrim\Logs\Script\Papyrus.0.log

◎使い方
「Follow tail」にチェックまたはスクロールを一番下にすると自動で最後尾行を追尾します。
Optionから「Always On Top」を有効にすると、LogExpertを常に手前に表示したままにできます。

◎文字化け
メニューバー→View/Navigation→Encoding→UTF-8

Papyrus Log Viewer(デバッグ用ログビューワ)

参考:https://skyrim.2game.info/detail.php?id=42815
Papyrus のログは非常に大きくなり、各警告やエラーが無数に重複して乱雑になることがあります。
このシンプルなログ ビューアでは、各エントリが 1 回だけ表示されるため、概要を把握しやすくなり、
すべての重複の中であまり一般的ではないエントリを見逃す可能性が低くなります。


↓の様に「Count」でソートし、多量にエラーが出た場合は対応する


ログ関連

■ログをとる上での注意事項
※普段からログを取る必要はありません。ログを取ると負荷がかかります。

■スクリプトとCTD
スクリプトはクラッシュの原因になりにくいです。同期が取れなくて大量のエラーが出てるときだけです。
それもスクリプト以外の複合要因であることも多く、CTDの解明にログはあまり役に立ちません。

クラッシュの原因はログには一切記載されません。
したがって最後に出てるエラーがクラッシュの原因ではありません。
ログはあくまでもデバッグ用途に使用します。
エラーの出てるmodが悪いとも限りません。

■デバッグ用の関数をスクリプトにつける(後で考える)
デバッグに使う場合は、スクリプトにデバッグの関数を書き込む必要があります。
スクリプトのデバッグしたい部分にdebug.trace(“”)を書き、コンパイルします。
“”外に+を加えることで関数で取得した値を付け加えることができます。
debug.trace("Player Health:" + Game.GetPlayer().GetAV("Health"))

■トレースログを減らす(後で考える)
参考:Skyrim SEおぼえがき
http://afternun.mydns.jp/blog/skyrimspecialedition...

一部のModはトレースログにデバッグ用のメッセージを出力を消して、自分が見たいものだけが出るようにする
Modを検知している部分がバニラの関数を使っていて警告が出るのを避けられないので、SKSE64の関数に置き換える

ログの出力設定と出力先

■ログの出力設定
※MO2の場合はMO2のiniエディターで開く
Papyrusログを出力するにはSkyrim.iniを以下のように変更する
これらの項目がなければ追記する
[Papyrus]
fPostLoadUpdateTimeMS=500.0
bEnableLogging=1
bEnableTrace=1
bLoadDebugInformation=1

■ログの出力先
マイドキュメント\My Games\Skyrim\Logs
・Papyrus.0.log ファイルには、最後に Skyrim を開いたときのログが常に含まれます。
・過度に繰り返されている行(MODやスクリプト)を調べてヒントを探す
Sexlab の問題については、「ssl」または「SexLab」という単語を検索して、それに関連するエラーを見つける。

Papyrusのプロファイル(処理時間やタイミングの計測)

参考:https://tktk1.net/skyrim/tutorial/papyrusprofile/

■プロファイルの設定
以下のiniファイルを開きます。
Documents\My Games\skyrim\skyrim.ini

[Papyrus]がある行を探します。
以下のように書き加えます。(MOはMOのSkyrim.ini弄ってください)
[Papyrus]
bEnableProfiling=1
書き終えたらiniを保存します。
普段プロファイルしないときは0にしておいてください。

計測する
ゲームを起動します。コンソールを開き以下のコマンドを打ち込みます。
startpsp 計測したいスクリプト名
以下のファイルにプロファイリングしたデータがリアルタイムで反映されます。
LogExpertみたいなリアルタイムで反映されるログビューワーを使うと追いやすいです。

■ログの読み方【後でまとめる】

◎読み方の実践【後でまとめる】

エラーログのメモ

■Papyrusのエラー一覧
https://www.creationkit.com/index.php?title=Papyru...

◎ログの最初にある大量のエラー
主にmodを外した時やmodの更新時にセーブに残るデータ(グローバル変数、静的変数、プロパティの類)
エラーは無視されるので気にしない
セーブのクリーニングである程度は消せる

■エラーの種類
  • error: エラーです。エラー内容がここに書かれます。
  • warning: 警告です。セーブのテーブルとプラグインでデータが一致しないときなどに出ます。大抵は処理が無視されるので問題ありません。
  • stack: 単発で出る分には特に危険ではありません。これが繰り返し大量に出る場合は危険です。
  • 文頭に何もなし エラーではなくデバッグ用のテキストです。特にDLCはデバック用テキストが多いのでエラーと勘違いしないでください。

Unable to bind script ***(スクリプトが見つからない・オブジェクトにアタッチできない)

「基本タイプが一致しないため、スクリプト <スクリプト名> を <フォーム ID> にバインドできません」
◎エラー
Error: Unable to bind script *** to *** because their base types do not match

◎概要
これは、スクリプトが見つからないか (この場合、このエラーの前にロードに失敗したエラーが表示されます)、
またはスクリプトがアタッチされているタイプのオブジェクトにアタッチできないことを意味する可能性があります。
(ObjectReference を拡張するスクリプトをエイリアスにアタッチしようとするようなもの)

◎実例
エラー: 基本タイプが一致しないため、スクリプト sslExtraVoicesAlias (sslExtraVoicesAlias->ReferenceAlias->Alias) を SexLabExtraVoices (3000189E) にバインドできません

クリーニングする?
参考Papyrus ログには、「... は正しいタイプではありません」または「... スクリプトにそのプロパティが含まれていないため、... 初期化できません」というメッセージが表示されます。
https://www.loverslab.com/topic/78140-papyrus-log-...

Cannot open store for class "***", missing file(適切なpexファイルが無い)

◎エラー
「クラス X のストアを開けません。ファイルがありません」
◎概要
このエラーは、ゲームが要求されたスクリプトをロードしようとしたが、そのファイルが見つからない場合に表示されます。
pex ファイルが適切なフォルダー (データ/スクリプト) にあることを再確認します。

誰が呼び出そうとしているのかをどうやって調べるか?

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

【メニュー編集】

スカイリム関連

スカイリム関連


Menu

【メニュー編集】

スクリプト関連

フリーエリア

管理人/副管理人のみ編集できます