RecRoomの新プログラミング環境、Circuits Version2 (CV2)のまとめ
RecRoomの CircuitsV2の紹介動画を見ていて思うのは、これはScratchっていうよりかはVRChatのUdonって言った方がよさそう。順次実行の橙のexecシグナルをノードに渡して起動しないといけない。あと信号には型があってよく理解する必要がありそう。 An intro into CircuitsV2 youtu.be/J_vGEe5-rc8
2021-05-05 23:19:31RecRoomの Circuits V2の各種ソケット ・ 橙ソケットは順次実行のためのexecシグナル ・ 黄色ソケットはオブジェクト取得 ・ その他のソケットは値取得 ということをしっかり意識しないといけない。またオブジェクトも値も型が分かりずらいので動かしてみないと動くのかわかりずらい問題があるな。
2021-05-05 23:25:38そして、IF Expressionノード、実は受け取るのがbool値なので、Equalsノードも合わせて使わないといけないというところがちょっと癖がある。 pic.twitter.com/BtUxKkq0N2
2021-05-05 23:31:02ちなみに、見ている動画は、 recroom.com/howtocreate の ・An intro into CircuitsV2 ・CV2 Pushing Buttons ・CV2 Direct Control ・CV2! 5 Need To Know Setups ・How To CV2: Logscreen Chatbox ・How to Piston in V2 一応出ているリソースとしてはこれに当たる様子。
2021-05-05 23:32:16あとRecRoomのCV2でできること、Triger VolumeのV2が本当にすごい。過去検出できなかったオブジェクトの当たり判定が取得できる。さらにそのタグを検出して動作を分岐させられるのでこれで物理挙動をする複雑なゲームが大抵作れる。 pic.twitter.com/d6w2daNf1k
2021-05-05 23:39:21RecRoomのCV2のEvent Recievier、実行シグナル自体をひたすら送り続けるヤバいイベントもあったりする。Update 30Hzで秒間30回更新するようなexecシグナルを送ることができる。ゲーム内ゲームのメインループを作れるという...。すごい。 pic.twitter.com/s6jTnbeb15
2021-05-05 23:50:44RecRoomのCV2のSet Valueノードのかなりビックリするところ、なんとオブジェクトは全部参照変数になっており、ノードから受け取った変数に対して別の変数をセットすることができたりする。昔ならではのC++とかでよくある&で戻り値の値を引数に与えるアウトプットパラメーター方式という。 pic.twitter.com/srNEIf0TtA
2021-05-05 23:59:51@PolarisPenguin いえいえ、大変すばらしい部屋でした~。自分はアートの才能がまったくないので、あんな素晴らしい部屋を作れるの本当に尊敬します!
2021-05-06 00:01:06RecRoomのCV2のSet Valueノード、Instance booleanというのは参照変数であり、Set Valueノードでその値を書き換えるため、トグルスイッチの実装はこんな感じになる。Set系はオブジェクト指向プログラミング言語とは流れが逆になるので注意が必要だ。 pic.twitter.com/ql39F9HJW9
2021-05-06 00:06:59RecRoomのCV2の参照変数ノードの違い ・Instance string ・Synced string とあるが、Instanceはいわゆるローカル変数で他のユーザーには同期しない、Syncedはいわゆる同期変数で部屋にいる全員が同期する。この辺の扱いはVRChatのUdonとかと同様。
2021-05-06 00:11:05RecRoomのCV2のEvent Receiver Update 30Hzはまあ更新頻度がむちゃくちゃ高いので、もし仮に1秒に1回であればintローカル参照変数を使って、こういうReducerを作ってやる必要があるとのこと。強力だけどいろいろ癖があるな。 pic.twitter.com/zZTbasSjSr
2021-05-06 00:18:50RecRoomのCV2、プレイヤーから位置情報を取得、位置情報の3次元ベクトルデータの取得、2つの三次元ベクトルから距離数値の取得、距離数値を文字列に変換とかまで一通りノードがそろっているが、とにかく型を意識した実装が必要。 pic.twitter.com/yXgtiz8GWS
2021-05-06 00:22:48RecRoomのCircuitsV2のすごい部品の一つにLogScreenがある、実はVRChatのUdon開発をするときはlogファイルを確認しながら実装していくことになるのだけど、これをゲーム内で確認しながらデバッグできる。ちなみにVRChatは似たようなのを自作している人もいる。 pic.twitter.com/KHo6iBRzed
2021-05-06 00:29:23RecRoomのCircuitsV2の機能としてあと地味にすごいのPromptというユーザーに文字列入力を促す部品があることだったりする。これがあることで、かなりリッチなゲームが作れる。
2021-05-06 00:31:55RecRoomのCircuitsV2のTo Stringノード、どんなオブジェクトでも文字列化できるっぽいけど、To String自体の挙動はオブジェクトによりけりで、そこは変えられないっぽい。まあTo Stringできるだけでも御の字な気がする。Unity C#のToStringメソッドそのままなんじゃないかって気もする。
2021-05-06 00:33:29RecRoomのCircuitsV2のString Fromatは"{0} is {1}"のような形式。この辺はV1時代のTextの"{A} is {B}" というAピンとBピンを使う記法をそのまま踏襲してるみたい。ただ今回は勝手に文字列化されずTo Stringを挟む必要ができた様子。この辺は型が厳密化してる。 pic.twitter.com/RfQaMmr0v2
2021-05-06 00:36:21RecRoomのCircuitsV2のLogScreenはデバッグ用とということでローカル部品の様子。ただButtonとかはグローバル同期部品なので、部品ごとにそれがローカル部品なのかグローバル同期部品なのかは意識して実装する必要がありそう。なお情報はまとまってないので複数プレイヤーで実験するしかなさそう。
2021-05-06 00:40:55ちなみにローカル部品の場合は、Event Senderを使ってEventを全員にブロードキャストして無理やり同期させるみたいだけども、イベントの到着順序や信頼性に関してはどれぐらい守られるかは謎。
2021-05-06 00:41:48RecRoomの CircuitsV2の気軽なデバッグなら、とにかくパレットのSendTestEventボタンとEvent Recieverノード、あとはNotificationノードを使うのがとにかく便利そう。細かくデバッグするならLogScreenを使うのがいいかもしれない。
2021-05-06 00:46:44RecRoomのCV2のPiston、Set Piston Positionで操作するのでピストンって言うよりかはオブジェクトの位置を操作する部品って考えた方がいいかもしれない。いわゆるオブジェクトポジションコントローラーになっている。これを使うと特定のオブジェクトや人を追いかけていくものも作れそう。
2021-05-06 00:54:58でもまあ、これで思ったのはRec RoomのCircuits V2が正式リリースされたことで、まじでほぼなんでも実装できるようになった気がする。AI挙動も物理挙動も細かく作れる。これ頑張ればローマ字入力して日本語の文字を表示させるIMEも作れるなと思ったりもしたw まあそこまで頑張るかはあれだけどw
2021-05-06 01:03:32あとRecRoomのCV2のEvent Sender、Scratchでもそうなんだけども、これを使って処理をまとめておいて外部から実行できるのでいわゆるオブジェクト指向プログラミングにおけるメソッドとして関数をまとめる、みたいなことができる。つまり処理の抽象化ができるのでプログラミングがより捗る!
2021-05-06 01:16:08