最終更新: kenken2020 2023年08月03日(木) 13:24:25履歴
目次
参考:https://skyrim.2game.info/detail.php?id=42815
Papyrus のログは非常に大きくなり、各警告やエラーが無数に重複して乱雑になることがあります。
このシンプルなログ ビューアでは、各エントリが 1 回だけ表示されるため、概要を把握しやすくなり、
すべての重複の中であまり一般的ではないエントリを見逃す可能性が低くなります。
↓の様に「Count」でソートし、多量にエラーが出た場合は対応する
Papyrus のログは非常に大きくなり、各警告やエラーが無数に重複して乱雑になることがあります。
このシンプルなログ ビューアでは、各エントリが 1 回だけ表示されるため、概要を把握しやすくなり、
すべての重複の中であまり一般的ではないエントリを見逃す可能性が低くなります。
↓の様に「Count」でソートし、多量にエラーが出た場合は対応する
■ログをとる上での注意事項
※普段からログを取る必要はありません。ログを取ると負荷がかかります。
■スクリプトとCTD
スクリプトはクラッシュの原因になりにくいです。同期が取れなくて大量のエラーが出てるときだけです。
それもスクリプト以外の複合要因であることも多く、CTDの解明にログはあまり役に立ちません。
クラッシュの原因はログには一切記載されません。
したがって最後に出てるエラーがクラッシュの原因ではありません。
ログはあくまでもデバッグ用途に使用します。
エラーの出てるmodが悪いとも限りません。
■デバッグ用の関数をスクリプトにつける(後で考える)
デバッグに使う場合は、スクリプトにデバッグの関数を書き込む必要があります。
スクリプトのデバッグしたい部分にdebug.trace(“”)を書き、コンパイルします。
“”外に+を加えることで関数で取得した値を付け加えることができます。
■トレースログを減らす(後で考える)
参考:Skyrim SEおぼえがき
http://afternun.mydns.jp/blog/skyrimspecialedition...
一部のModはトレースログにデバッグ用のメッセージを出力を消して、自分が見たいものだけが出るようにする
Modを検知している部分がバニラの関数を使っていて警告が出るのを避けられないので、SKSE64の関数に置き換える
※普段からログを取る必要はありません。ログを取ると負荷がかかります。
■スクリプトと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を以下のように変更する
これらの項目がなければ追記する
■ログの出力先
・過度に繰り返されている行(MODやスクリプト)を調べてヒントを探す
・Sexlab の問題については、「ssl」または「SexLab」という単語を検索して、それに関連するエラーを見つける。
※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」という単語を検索して、それに関連するエラーを見つける。
参考:https://tktk1.net/skyrim/tutorial/papyrusprofile/
■プロファイルの設定
以下のiniファイルを開きます。
[Papyrus]がある行を探します。
以下のように書き加えます。(MOはMOのSkyrim.ini弄ってください)
普段プロファイルしないときは0にしておいてください。
計測する
ゲームを起動します。コンソールを開き以下のコマンドを打ち込みます。
LogExpertみたいなリアルタイムで反映されるログビューワーを使うと追いやすいです。
■ログの読み方【後でまとめる】
◎読み方の実践【後でまとめる】
■プロファイルの設定
以下のiniファイルを開きます。
Documents\My Games\skyrim\skyrim.ini
[Papyrus]がある行を探します。
以下のように書き加えます。(MOはMOのSkyrim.ini弄ってください)
[Papyrus]書き終えたらiniを保存します。
bEnableProfiling=1
普段プロファイルしないときは0にしておいてください。
計測する
ゲームを起動します。コンソールを開き以下のコマンドを打ち込みます。
startpsp 計測したいスクリプト名以下のファイルにプロファイリングしたデータがリアルタイムで反映されます。
LogExpertみたいなリアルタイムで反映されるログビューワーを使うと追いやすいです。
■ログの読み方【後でまとめる】
◎読み方の実践【後でまとめる】
■Papyrusのエラー一覧
https://www.creationkit.com/index.php?title=Papyru...
◎ログの最初にある大量のエラー
主にmodを外した時やmodの更新時にセーブに残るデータ(グローバル変数、静的変数、プロパティの類)
エラーは無視されるので気にしない
セーブのクリーニングである程度は消せる
■エラーの種類
https://www.creationkit.com/index.php?title=Papyru...
◎ログの最初にある大量のエラー
主にmodを外した時やmodの更新時にセーブに残るデータ(グローバル変数、静的変数、プロパティの類)
エラーは無視されるので気にしない
セーブのクリーニングである程度は消せる
■エラーの種類
- error: エラーです。エラー内容がここに書かれます。
- warning: 警告です。セーブのテーブルとプラグインでデータが一致しないときなどに出ます。大抵は処理が無視されるので問題ありません。
- stack: 単発で出る分には特に危険ではありません。これが繰り返し大量に出る場合は危険です。
- 文頭に何もなし エラーではなくデバッグ用のテキストです。特にDLCはデバック用テキストが多いのでエラーと勘違いしないでください。
「基本タイプが一致しないため、スクリプト <スクリプト名> を <フォーム 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-...
◎エラー
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-...
コメントをかく