2018年07月01日

#VRChat のログをHMDでも見たい時用PowerShellスクリプト

ワールドのデバッグ等々の際ログを見たくなりますが、HMDをかぶっているとうまく表示されないものです。
そこでWindows Power Shellを使って、VRChatのログを表示しましょう。
vvvlog.png

*注意
※製作者はWindows Power Shellは初心者です。
 これを実行したことによる損害等の保障は一切しません。
 スクリプトをざっと読んで何をするのか理解した上で実行してください。


*仕組み
VRChatのデバッグログファイル(%appdata%\..\LocalLow\VRChat\vrchat;output_log.txt)を
リアルタイムに読んでいるだけです。ので、チートとかには該当しないと思います。

VRChatのメニューキー+3とほぼ同じ情報が出ていると思います。

VRChatを長時間立ち上げ続けていると、ファイルが分割されて表示できなくなることがあります。
その際はVRChatを起動し直すか、コマンドのファイル名を修正してください。

*最も基本的な手順
1. Windows Power Shellを起動する(スタートメニューにあるはず)

2. 以下のコマンドを入力してEnter(長いが1行。コピペでどうぞ)

cat "$env:APPDATA\..\LocalLow\VRChat\vrchat;output_log.txt" -wait -Encoding UTF8 | ? {$_.trim() -ne "" } | % {$_ -replace "</?color.*?>",""}


コードの内容
・VRChatのログファイルの最新情報をUTF-8で常に読み込みながら
・空行を削除しながら
・Unity用のcolorタグを削除しながら
・画面に表示する

3. 出てきた画面をOVRDropなどを利用してVR空間に表示する

フォントサイズを大きくすると見やすくなります。
設定はPowerShellのタイトルバーを右クリックして出てきた設定から。

ログを止めたいときはScroll Lock
終了したいときはCtrl+Cか、PowerShellを閉じる。

*特定の文字を含むログを出したい場合
例えばIKを含むものの場合

cat "$env:APPDATA\..\LocalLow\VRChat\vrchat;output_log.txt" -wait -Encoding UTF8 | ? {$_.trim() -like "*IK*" } | % {$_ -replace "</?color.*?>",""}


例えばExecuting event(ワールドでのトリガなどの始動)を含むものの場合

cat "$env:APPDATA\..\LocalLow\VRChat\vrchat;output_log.txt" -wait -Encoding UTF8 | ? {$_.trim() -like "*Executing event*" } | % {$_ -replace "</?color.*?>",""}


例えばSwitching (プレーヤー名) to avatarを含むものの場合

cat "$env:APPDATA\..\LocalLow\VRChat\vrchat;output_log.txt" -wait -Encoding UTF8 | ? {$_.trim() -like "*Switching * to avatar*" } | % {$_ -replace "</?color.*?>",""}


*色をつける・音を鳴らす
長くて改行も含んでますが、コピペで入力してください
いろいろとワールド制作に便利そうなのを強調したりしてみています

cat "$env:APPDATA\..\LocalLow\VRChat\vrchat;output_log.txt" -wait -Encoding -last 5 UTF8 | ? {$_.trim() -ne "" } | % {$_ -replace "</?color.*?>",""} | % {
$msg = $_ -replace "</?color.*?>",""
if($_ -match "uSpeak"){
#uSpeakを含むとき表示しない
}elseif($_ -match "APIUser"){
#APIUserを含むとき表示しない
}elseif($_ -match "The referenced script on this Behaviour"){
#The referenced script on this Behaviourを含むとき表示しない
}elseif($_ -match "Can not play a disabled audio source"){
#Can not play a disabled audio sourceを含むとき表示しない
}elseif($_ -match "IK\[VRCPlayer"){
#IK[VRCPlayerを強調
Write-Host $msg -backgroundcolor DarkRed
}elseif($_ -match "Photon"){
#Photonを強調
Write-Host $msg -backgroundcolor DarkRed
}elseif($_ -match "OnPlayerJoined"){
#OnPlayerJoinedを強調
Write-Host $msg -backgroundcolor DarkCyan
[Console]::Beep(800, 100)
[Console]::Beep(4070, 100)
}elseif($_ -match "I am MASTER"){
#I am MASTERを強調
Write-Host $msg -backgroundcolor DarkCyan
[Console]::Beep(2000, 100)
}elseif($_ -match "Room"){
#Roomを強調
Write-Host $msg -backgroundcolor DarkCyan
}elseif($_ -match "OnPlayerLeft"){
#OnPlayerLeftを強調
Write-Host $msg -backgroundcolor DarkCyan
[Console]::Beep(300, 100)
[Console]::Beep(150, 100)
}elseif($_ -match "triggered"){
#triggeredを強調
Write-Host $msg -backgroundcolor DarkCyan
[Console]::Beep(500, 10)
}elseif($_ -match "OnOwnershipTransfered"){
#OnOwnershipTransferedを強調
Write-Host $msg -backgroundcolor Black
[Console]::Beep(400, 10)
}elseif($_ -match "Executing event"){
#Executing eventを強調
Write-Host $msg -backgroundcolor DarkGreen
[Console]::Beep(700, 10)
}elseif($_ -match "Preparation has taken"){
#Preparation has takenを強調
Write-Host $msg -backgroundcolor DarkGreen
[Console]::Beep(700, 10)
}elseif($_ -match "to avatar"){
#Switching * to avatarを強調
Write-Host $msg -backgroundcolor DarkCyan
[Console]::Beep(300, 10)
}elseif($_ -match "Warning"){
#Warningのとき
Write-Host $msg -foregroundcolor red
}elseif($_ -match "Exception"){
#Exceptionのとき
Write-Host $msg -foregroundcolor yellow
}elseif($_ -match "Error"){
#Errorのとき
Write-Host $msg -foregroundcolor Cyan
}else{
#Logのとき
Write-Output $msg
}
}


*入退室情報だけ表示する
長くて改行も含んでますが、コピペで入力してください

cat "$env:APPDATA\..\LocalLow\VRChat\vrchat;output_log.txt" -wait -Encoding -last 5 UTF8 | ? {$_.trim() -ne "" } | % {$_ -replace "</?color.*?>",""} | % {
$msg = $_ -replace "</?color.*?>",""
if($_ -match "OnPlayerJoined"){
#OnPlayerJoinedを強調
Write-Host $msg -backgroundcolor DarkCyan
[Console]::Beep(800, 100)
[Console]::Beep(4070, 100)
}elseif($_ -match "OnPlayerLeft"){
#OnPlayerLeftを強調
Write-Host $msg -backgroundcolor DarkCyan
[Console]::Beep(300, 100)
[Console]::Beep(150, 100)
}else{
#その他は表示しない
}
}

posted by gpsnmeajp at 04:22| Comment(0) | TrackBack(0) | プログラム
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/183687719
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック