sk7zの備忘録

自分用メモなど

BukkitのPlayerInteractEventで右クリックした看板の前後を取得する方法

経緯 Mincraft1.20アップデートで看板に前後の概念が追加された上に、再編集可能となったが、 再編集時に装飾文字が消えてしまう。

対応方針 プレイヤーが看板を開く際に、装飾文字を別の文字を置き換えてから、看板を開く。(編集完了時に再度装飾文字に戻す)

実装方法 1.PlayerInteractEventでクリックした看板を取得 2.看板の装飾文字を別の文字に置き換える 3.置き換え直後は反映されて居ないのでイベントを一旦キャンセル 4.反映後(2tick後)看板を開く

発生した問題 4はplayer.openSign(sign, clickSide)にて看板を開くことができるが、その際に看板の向きを渡す必要がある。 PlayerInteractEventではプレイヤーが開いた看板を取得できるものの、その看板が前後どちらか取得することはできない。

対処方法 プレイヤーが開いた看板のインスタンスと、看板の前方の看板インスタンスを比較して、同一のインスタンスであれば前と判断する。

github.com

Minecraftでピラミッドを作るに必要なブロックの数

敷き詰める場合 段:個数 1=9 2=34 3=83 4=164 5=285 6=454 7=679 8=968 9=1329 10=1770 11=2299 12=2924 13=3653 14=4494 15=5455 16=6544 17=7769 18=9138 19=10659 20=12340 21=14189 22=16214 23=18423 24=20824 25=23425 26=26234 27=29259 28=32508 29=35989 30=39710 31=43679 32=47904 33=52393 34=57154 35=62195 36=67524 37=73149 38=79078 39=85319 40=91880 41=98769 42=105994 43=113563 44=121484 45=129765 46=138414 47=147439 48=156848 49=166649 50=176850 51=187459 52=198484 53=209933 54=221814 55=234135 56=246904 57=260129 58=273818 59=287979 60=302620 61=317749 62=333374 63=349503 64=366144 65=383305 66=400994 67=419219 68=437988 69=457309 70=477190 71=497639 72=518664 73=540273 74=562474 75=585275 76=608684 77=632709 78=657358 79=682639 80=708560 81=735129 82=762354 83=790243 84=818804 85=848045 86=877974 87=908599 88=939928 89=971969 90=1004730 91=1038219 92=1072444 93=1107413 94=1143134 95=1179615 96=1216864 97=1254889 98=1293698 99=1333299 100=1373700 101=1414909 102=1456934 103=1499783 104=1543464 105=1587985 106=1633354 107=1679579 108=1726668 109=1774629 110=1823470 111=1873199 112=1923824 113=1975353 114=2027794 115=2081155 116=2135444 117=2190669 118=2246838 119=2303959 120=2362040 121=2421089 122=2481114 123=2542123 124=2604124 125=2667125 126=2731134 127=2796159 128=2862208 129=2929289 130=2997410 131=3066579 132=3136804 133=3208093 134=3280454 135=3353895 136=3428424 137=3504049 138=3580778 139=3658619 140=3737580 141=3817669 142=3898894 143=3981263 144=4064784 145=4149465 146=4235314 147=4322339 148=4410548 149=4499949 150=4590550 151=4682359 152=4775384 153=4869633 154=4965114 155=5061835 156=5159804 157=5259029 158=5359518 159=5461279 160=5564320 161=5668649 162=5774274 163=5881203 164=5989444 165=6099005 166=6209894 167=6322119 168=6435688 169=6550609 170=6666890 171=6784539 172=6903564 173=7023973 174=7145774 175=7268975 176=7393584 177=7519609 178=7647058 179=7775939 180=7906260 181=8038029 182=8171254 183=8305943 184=8442104 185=8579745 186=8718874 187=8859499 188=9001628 189=9145269 190=9290430 191=9437119 192=9585344 193=9735113 194=9886434 195=10039315 196=10193764 197=10349789 198=10507398 199=10666599 200=10827400 201=10989809 202=11153834 203=11319483 204=11486764 205=11655685 206=11826254 207=11998479 208=12172368 209=12347929 210=12525170 211=12704099 212=12884724 213=13067053 214=13251094 215=13436855 216=13624344 217=13813569 218=14004538 219=14197259 220=14391740 221=14587989 222=14786014 223=14985823 224=15187424 225=15390825 226=15596034 227=15803059 228=16011908 229=16222589 230=16435110 231=16649479 232=16865704 233=17083793 234=17303754 235=17525595 236=17749324 237=17974949 238=18202478 239=18431919 240=18663280 241=18896569 242=19131794 243=19368963 244=19608084 245=19849165 246=20092214 247=20337239 248=20584248 249=20833249 250=21084250 251=21337259 252=21592284 253=21849333 254=22108414 255=22369535 256=22632704 257=22897929 258=23165218 259=23434579 260=23706020 261=23979549 262=24255174 263=24532903 264=24812744 265=25094705 266=25378794 267=25665019 268=25953388 269=26243909 270=26536590 271=26831439 272=27128464 273=27427673 274=27729074 275=28032675 276=28338484 277=28646509 278=28956758 279=29269239 280=29583960 281=29900929 282=30220154 283=30541643 284=30865404 285=31191445 286=31519774 287=31850399 288=32183328 289=32518569 290=32856130 291=33196019 292=33538244 293=33882813 294=34229734 295=34579015 296=34930664 297=35284689 298=35641098 299=35999899 300=36361100 301=36724709 302=37090734 303=37459183 304=37830064 305=38203385 306=38579154 307=38957379 308=39338068 309=39721229 310=40106870 311=40494999 312=40885624 313=41278753 314=41674394 315=42072555 316=42473244 317=42876469 318=43282238 319=43690559 320=44101440 321=44514889 322=44930914 323=45349523 324=45770724 325=46194525 326=46620934 327=47049959 328=47481608 329=47915889 330=48352810 331=48792379 332=49234604 333=49679493 334=50127054 335=50577295 336=51030224 337=51485849 338=51944178 339=52405219 340=52868980 341=53335469 342=53804694 343=54276663 344=54751384 345=55228865 346=55709114 347=56192139 348=56677948 349=57166549 350=57657950 351=58152159 352=58649184 353=59149033 354=59651714 355=60157235 356=60665604 357=61176829 358=61690918 359=62207879 360=62727720 361=63250449 362=63776074 363=64304603 364=64836044 365=65370405 366=65907694 367=66447919 368=66991088 369=67537209 370=68086290 371=68638339 372=69193364 373=69751373 374=70312374 375=70876375 376=71443384 377=72013409 378=72586458 379=73162539 380=73741660 381=74323829 382=74909054 383=75497343 384=76088704 385=76683145 386=77280674 387=77881299 388=78485028 389=79091869 390=79701830 391=80314919 392=80931144 393=81550513 394=82173034 395=82798715 396=83427564 397=84059589 398=84694798 399=85333199 400=85974800 401=86619609 402=87267634 403=87918883 404=88573364 405=89231085 406=89892054 407=90556279 408=91223768 409=91894529 410=92568570 411=93245899 412=93926524 413=94610453 414=95297694 415=95988255 416=96682144 417=97379369 418=98079938 419=98783859 420=99491140 421=100201789 422=100915814 423=101633223 424=102354024 425=103078225 426=103805834 427=104536859 428=105271308 429=106009189 430=106750510 431=107495279 432=108243504 433=108995193 434=109750354 435=110508995 436=111271124 437=112036749 438=112805878 439=113578519 440=114354680 441=115134369 442=115917594 443=116704363 444=117494684 445=118288565 446=119086014 447=119887039 448=120691648 449=121499849 450=122311650 451=123127059 452=123946084 453=124768733 454=125595014 455=126424935 456=127258504 457=128095729 458=128936618 459=129781179 460=130629420 461=131481349 462=132336974 463=133196303 464=134059344 465=134926105 466=135796594 467=136670819 468=137548788 469=138430509 470=139315990 471=140205239 472=141098264 473=141995073 474=142895674 475=143800075 476=144708284 477=145620309 478=146536158 479=147455839 480=148379360 481=149306729 482=150237954 483=151173043 484=152112004 485=153054845 486=154001574 487=154952199 488=155906728 489=156865169 490=157827530 491=158793819 492=159764044 493=160738213 494=161716334 495=162698415 496=163684464 497=164674489 498=165668498 499=166666499 500=167668500 501=168674509 502=169684534 503=170698583 504=171716664 505=172738785 506=173764954 507=174795179 508=175829468 509=176867829 510=177910270 511=178956799 512=180007424

EAC対応版 VRC_AffinityChange_PS スクリプトを公開

sk7z.hatenablog.com

上記記事のEAC対応版です。
簡易的なスクリプトでMASK値等の設定やスタートアップへの登録は
手動で設定する必要があります。
※必ず7ZipかLhaplusで解凍してください。 Windows標準のエクスプローラーで解凍すると セキュリティ保護で起動しません。

github.com

※本スクリプトよりも、自動設定機能のある下記プログラムの購入を推奨します 。 ※別作者
nyaho.booth.pm

AndroidでNEXGIM QB-C01と連携できる心拍測定デバイスについて

面倒くさいので詳細は省きます AmazonのページではAndroidの場合はHuaweiのスマートウォッチで連携可能って書いてるものの Huaweiのスマートウォッチを購入したものの連携できなかったので、販売元に問い合わせたところ HuaweiスマートフォンでかつHuaweiのスマートウォッチを使用した場合のみ連携可能とのことでした。 結論としては下記のデバイスで連携可能でした。 https://www.amazon.co.jp/gp/product/B08882MGXD

Zen3でVRChatのFPSを改善する方法 続き

sk7z.hatenablog.com

上記の記事の続きです

2021/01/11 追記 @NyaHo_vrcさんがPC起動時に自動起動&VRChat起動時に
スレッド数を自動的に変更してくれるプログラムを作ってくれていました!
下記のように手動でMASK値を設定する必要もありません。 無料版もありますのでこちらを使いましょう!

nyaho.booth.pm

追記ここまで

毎回batファイルからVRChatを起動するのも面倒なので
VRChatのプロセスを監視して自動的に使用スレッド数を制限するpowershellファイルを作りました
(powershell書くの初めてで 死ぬほど雑です 直してくれる人募集します)

https://pastebin.com/ybq0czqg

上記のファイルをダウンロードして、
ファイル名をVRC_RyzenAffinityMaskChange.ps1に変更し
メモ帳等でMASKの値をCPUに適した値に設定を行い、右クリックからPowerShellで実行すると
VRChat起動時に自動的にスレッド数を制限します。
(デフォではRyzen 9 5900の値が設定されています)

起動後はVRChatの再起動などを行っても問題ありません。
Windowsを再起動した場合は再度実行してください。

VRChat起動時に

Process start
Succes AffinityChange
と表示された場合は正常です

Error AffinityChange
と表示された場合はMASKの設定を違えているので見直してください

CPU毎の設定方法は前回の記事を参考に4行目の値を変更してください
$MASK = 0xFFF

スタートアップに登録する方法は各自で検索してください。

問い合わせは@Hizuki_Yukina もしくは @sk7zまでお願いします。

Zen3でVRChatのFPSを改善する方法(Ryzen 9向け) *Zen2も上がるかも?(2022/07/28追記)

注意 この記事はGPUパワーを持て余しており、CPUがボトルネックになっている方向けの記事です。
GPU使用率が100%に張り付いている場合GPUがネックになっているため、こちら方法を行っても改善しないと思われます。
またCPUがIntelの人には一切関係ありません。
Zen3のRyzen5 5600x Ryzen7 5800xではCCD跨ぎはそもそも発生しないため、この記事は見る必要ありません。
Zen3の方向けの記事ですが、Zen2の方も改善するかも?しれません。
正確なFPSを表示するためASWを無効にしています。
(有効になっている場合はFPSが40FPSに固定され、スムージング処理がかかります)
Asynchronous Spacewarp(ASW) 2.0の紹介: Oculusの神技術がさらに進化 | VRまにあっくす!

まず最初に、Zen3でCCXの構成が6コアもしくは8コアとなり
Ryzen5 Ryzen7シリーズではCCX跨ぎによる遅延はなくなりましたが
Ryzen9では依然としてCCD跨ぎによる遅延は発生しております。
なお、Windowsタスクスケジューラーとしては極力CCDを跨がないようにはなっていますが
VRChatの場合はそうではないようです。

実際にRyzen 5900X RTX3090の環境にてVRChatでSilentClubでGPU-Zの使用率を見たところ
GPU使用率は74%程で余裕があり、CPUはまばらに負荷がかかっていました。

タスクマネージャーからVRChatのプロセスの割当を24スレッドから
CCD0である[0-11]スレッドを選択したところ
CCD跨ぎが発生しなくななったのか、FPSが80→90FPS程度に上昇することを確認しました。
またその際、GPU使用率は83%に向上しました
[タスクマネージャー>詳細>VRchat.exe>関係の設定>CPU0~11まで選択]

スレッド制限無し
https://sk7z.xyz/files/VRChat_fZacUWnXNx.jpg

CCD0のみで実行(0~11スレッドに制限)
https://sk7z.xyz/files/VRChat_WonY4APe8g.jpg

場所や人数にもよりますが、60FPSしか出せなかったところが80FPSまで出せることも度々ありました。 なお、ラジオ体操では5FPS程度しか上昇しませんでした

CPUがボトルネックになっている場合では上記の手順でFPSを10~20程度増やすことは事はできますが、
起動するたびにタスクマネージャーを開いて設定するのは面倒くさいので

2020/11/20 追記
毎回batファイルからVRChatを起動するのも面倒なので
VRChatのプロセスを監視して自動的に使用スレッド数を制限するpowershellファイルを作りました
sk7z.hatenablog.com 2022/07/28追記
EACの対応でプロセス監視からのスレッド数制限は不可となりましたが、起動時にlaunch.exeをbatファイルをから起動する方法だと制限可能です。
2022/07/31更に追記
↓こいつのプロセス監視してVRChat.exeの起動前に制限かければ、VRChat.exeのスレッド数も制限できました!
start_protected_game.exe
スクリプトを下記にて公開しています

sk7z.hatenablog.com

追記ここまで

起動に時にスレッド数を設定するbatファイルを数パターン作成しました。

cd "C:\Program Files (x86)\Steam\steamapps\common\VRChat\"
start /AFFINITY FFF vrchat.exe

cd "C:\Program Files (x86)\Steam\steamapps\common\VRChat\"
start /AFFINITY FFF launch.exe

コマンドの説明 VRChatを指定したスレッドにて起動します。

start /AFFINITY FFF vrchat.exe  
                この値FFFが重要です  

start /AFFINITY FFF launch.exe  
                この値FFFが重要です  

例:24スレッドのCPUでCCD0のスレッド(0~11)を全て使用する場合
000000000000111111111111 →2進数から16進数に変換→ FFF

Ryzen 9 5900X用
CCD0のみを使用(0~11スレッド使用)
start /AFFINITY FFF vrchat.exe
start /AFFINITY FFF launch.exe CCD1のみを使用(CCD0はほかプロセスに使われやすいのであまり使われないCCD1を使用(12~23スレッド使用)
start /AFFINITY FFF000 vrchat.exe
start /AFFINITY FFF000 launch.exe

Ryzen 9 5950X用
CCD0のみを使用(0~15スレッド使用)
start /AFFINITY FFFF vrchat.exe start /AFFINITY FFFF launch.exe CCD1のみを使用(CCD0はほかプロセスに使われやすいのであまり使われないCCD1を使用(16~31スレッド使用)
start /AFFINITY FFFF0000 vrchat.exe
start /AFFINITY FFFF0000 launch.exe

Ryzen 7 5800
Ryzen 5 5600
CCD跨ぎは発生しません、ご安心ください。

未検証ですが、Zen2の構成は下記のようになっており、CCXの最大のコア数が3もしくは4となっていますが
Ryzen 9 3950X CCD0[[CCX4コア]+[CCX4コア]] +CCD1[[CCX4コア]+[CCX4コア]]
Ryzen 9 3900X CCD0[[CCX3コア]+[CCX3コア]] +CCD1[[CCX3コア]+[CCX3コア]]
Ryzen 7 3800X CCD0[[CCX4コア]+[CCX4コア]]
Ryzen 7 3600X CCD0[[CCX3コア]+[CCX3コア]]
VRChat自体はあまりマルチスレッドに対応しておらず、3コア・4コアがあれば十分な説があるで
CCXの4コアもしくは3コアのみを使用する下記のbatファイルでもFPSが上がるかもしれません
3900X 3600X用 (6スレッドのみ設定)
start /AFFINITY 3F vrchat.exe
start /AFFINITY 3F launch.exe 3950X 3800X用(8スレッドのみ設定)
start /AFFINITY FF vrchat.exe
start /AFFINITY FF launch.exe 以上です.batファイルの作り方は自分でググってください
またPBOを有効にしていない場合は有効にしましょう。