回路について
回路(Circuits)は、編集可能でネットワークなチップ(Chip)、回路ボード(Circuit Board)、ギズモ(Gizmo)、ガジェット(Gadgets)、および動的な小道具(Props)で構成されており、使用可能なカスタムルームにおいて、簡単なものから複雑なものまでプログラムを実行します。
これらのプログラムは、ルームのアニメーション化されたインタラクティブな要素、例えば、アニメーション化またはインタラクティブなスポットライト、効果音、ホロター投影、または完全なゲームを制御することができます。
これらのプログラムは、ルームのアニメーション化されたインタラクティブな要素、例えば、アニメーション化またはインタラクティブなスポットライト、効果音、ホロター投影、または完全なゲームを制御することができます。
メーカーペン(Maker Pen)を使用して回路を編集する機能は、ルームでのあなたの許可によって決まります。
デフォルトでは、作成者と共同所有者のみがカスタムルームのサーキットを編集できます。
回路のほとんどの要素は、メーカーペンとパレットの「ガジェット(Gadgets)」タブで作成されています。
例外は動的小道具で、これはパレットの「小道具(Props)」タブで利用できます。
チップ、ギズモ、オブジェクトは、メーカーペンのConfigureモードで設定できます。それらはメーカーペンのワイヤーモードで接続したり切断したりすることができます。通常はそれらのピンを接続することによってですがギズモのオブジェクト全体に接続することもできます。
ほとんどのピンについての情報(入力ピンの機能と出力ピンの現在の値)は、約2秒間ピンを(例えばワイヤモードで)メーカーペンの光線でポイントすることによって得ることができます。
デフォルトでは、作成者と共同所有者のみがカスタムルームのサーキットを編集できます。
回路のほとんどの要素は、メーカーペンとパレットの「ガジェット(Gadgets)」タブで作成されています。
例外は動的小道具で、これはパレットの「小道具(Props)」タブで利用できます。
チップ、ギズモ、オブジェクトは、メーカーペンのConfigureモードで設定できます。それらはメーカーペンのワイヤーモードで接続したり切断したりすることができます。通常はそれらのピンを接続することによってですがギズモのオブジェクト全体に接続することもできます。
ほとんどのピンについての情報(入力ピンの機能と出力ピンの現在の値)は、約2秒間ピンを(例えばワイヤモードで)メーカーペンの光線でポイントすることによって得ることができます。
回路ノード(チップ、ギズモ、その他のガジェット/小道具など)は、1秒間に約10回、信号を処理します。
システムは特定の順序でチップを評価します。つまり、別のチップの信号を生成するチップは通常、他のチップが評価される前に評価されます(評価順序がチップの接続順序に依存するサイクルの場合を除く)。したがって、サイクルがない場合、信号は、回路の一端のチップから回路の他端のチップへ、わずか1/10秒以内で移動することができます。これは「サーキットティック」と呼ばれます。
システムは特定の順序でチップを評価します。つまり、別のチップの信号を生成するチップは通常、他のチップが評価される前に評価されます(評価順序がチップの接続順序に依存するサイクルの場合を除く)。したがって、サイクルがない場合、信号は、回路の一端のチップから回路の他端のチップへ、わずか1/10秒以内で移動することができます。これは「サーキットティック」と呼ばれます。
データ型
回路ノードは互いに整数値しか交換できませんが、内部的には異なるタイプを使用する場合があります。したがって、内部値は整数との間で変換する必要があります。
整数
固有の回路値は32ビット符号付き整数です。それらは-2,147,483,648から2,147,483,647の範囲であり、小数または実数を生成することはできません。
固有の回路値は32ビット符号付き整数です。それらは-2,147,483,648から2,147,483,647の範囲であり、小数または実数を生成することはできません。
ブール値
多くの入出力は、2つのブール値、つまりfalse(0に等しい値)とtrue(0に等しくない値)のみを表すために整数値を使用します。入力の場合は、0はfalse、それ以外の値はtrueと解釈されます。出力の場合は、falseの場合は0、trueの場合は1が出力されます。
多くの入出力は、2つのブール値、つまりfalse(0に等しい値)とtrue(0に等しくない値)のみを表すために整数値を使用します。入力の場合は、0はfalse、それ以外の値はtrueと解釈されます。出力の場合は、falseの場合は0、trueの場合は1が出力されます。
浮動小数点(float)
たとえばギズモ(Gizmo)は、入力を浮動小数点に変換します。浮動小数点の値の範囲は整数の値の範囲より大きいため、任意の整数を渡して使用できます。ただし、浮動小数点の精度は、数値が0にどれだけ近いかによって異なります。精度は、-16,777,217から16,777,216の範囲外で1未満になります。つまり、16,777,216を入力して使用しても問題ありませんが、16,777,217は16,777,216に丸められたのとまったく同じ結果になります。
たとえばギズモ(Gizmo)は、入力を浮動小数点に変換します。浮動小数点の値の範囲は整数の値の範囲より大きいため、任意の整数を渡して使用できます。ただし、浮動小数点の精度は、数値が0にどれだけ近いかによって異なります。精度は、-16,777,217から16,777,216の範囲外で1未満になります。つまり、16,777,216を入力して使用しても問題ありませんが、16,777,217は16,777,216に丸められたのとまったく同じ結果になります。
ID
いくつかのチップは、入力または出力として整数IDを使用します。これらはエンティティを一意に識別する番号です。
いくつかのチップは、入力または出力として整数IDを使用します。これらはエンティティを一意に識別する番号です。
■プレイヤーID
プレイヤーがルームに参加したときにすべてのプレイヤーがIDを取得し、そのIDはプレイヤーが退場するまで有効です。
プレイヤーがルームに参加したときにすべてのプレイヤーがIDを取得し、そのIDはプレイヤーが退場するまで有効です。
あなたのプレイヤーIDは、その部屋で参加しているプレイヤーのインデックスと同じです。つまり、最初に参加したプレイヤーはID 1を取得し、2番目のプレイヤーはID 2を取得します。プレイヤーが去って再び参加した場合、彼らは完全に新しいプレイヤーIDを与えられます。プレイヤーIDは、ルームが完全に空になった後にのみ表示されます(ルームインスタンスがその間存在しなくなるため)。多くのプレイヤーが出入り(または再参加)しても、ルームに長期間居住している場合、割り当てられたプレイヤーIDの値が大きくなることに制限はありません。
回路では、-1のプレイヤーIDがすべてのプレイヤーに適用されます。これは、たとえば、全員の健康状態を設定する必要がある場合に便利です。
■チームID
各チームは1から16までの範囲で異なるIDを持ちます。
各チームは1から16までの範囲で異なるIDを持ちます。
■チームインデックス
プレイヤーがチームに参加すると、1から始めて、そのチームに現在使用されていない最も低いチームインデックスが与えられます。チームインデックスは再利用される可能性があります(これは、プレイヤーIDとは大きく異なります)。プレーヤーがチームを脱退するとき、プレーヤーのチームインデックスは新しいプレーヤーが参加してそれを受け取るまで未使用のままです。(これは、有効なチームインデックスの範囲がそのチームのプレイヤー数から常に決定できるとは限らないことを意味します。)
プレイヤーがチームに参加すると、1から始めて、そのチームに現在使用されていない最も低いチームインデックスが与えられます。チームインデックスは再利用される可能性があります(これは、プレイヤーIDとは大きく異なります)。プレーヤーがチームを脱退するとき、プレーヤーのチームインデックスは新しいプレーヤーが参加してそれを受け取るまで未使用のままです。(これは、有効なチームインデックスの範囲がそのチームのプレイヤー数から常に決定できるとは限らないことを意味します。)
■オブジェクトID
各オブジェクトには一意のオブジェクトIDがあります。これらはトリガーボリュームによって送信され、"Object Mapper"チップを使ってプレーヤーIDにマッピングすることができます。オブジェクトのIDは、部屋が保存または復元されるまで変わりません。その後、すべてのIDが新しいIDを取得します。オブジェクトトリガーの赤いピンをランダマイザーの3つのピンすべてに接続すると、ランダマイザーチップを使用してオブジェクトIDを保存できます。
各オブジェクトには一意のオブジェクトIDがあります。これらはトリガーボリュームによって送信され、"Object Mapper"チップを使ってプレーヤーIDにマッピングすることができます。オブジェクトのIDは、部屋が保存または復元されるまで変わりません。その後、すべてのIDが新しいIDを取得します。オブジェクトトリガーの赤いピンをランダマイザーの3つのピンすべてに接続すると、ランダマイザーチップを使用してオブジェクトIDを保存できます。
■カラーID
色エミッタは、ポイントライト、スポットライト、ビーコン、および舞台照明は33色の一つに対応する色IDによって特定されるパレットは、レッド(0)、オレンジ(1)、イエロー(2)、セージ(3)、ブルー(4)、コーンフラワー(5)、ティール(6)、グリーン(7)、パープル(8)、ローズ(9)、ピンク(10)、ブラウン(11)、タン(12)、ホワイト(13) 、グレー(14)、チャコール(15)、モカ(16)、キャラメル(17)、ライトグレー(18)、ブラック(19)、ガーネット(20)、トパーズ(21)、アンバー(22)、エメラルド(23)、ターコイズ(24)、ラピス(25)、アメジスト(26)、ピンクジェムストーン(27)、サーモン(28)、カンタロープメロン(29)、パイナップル(30)、シアン(31)、ラベンダー(32)。
色エミッタは、ポイントライト、スポットライト、ビーコン、および舞台照明は33色の一つに対応する色IDによって特定されるパレットは、レッド(0)、オレンジ(1)、イエロー(2)、セージ(3)、ブルー(4)、コーンフラワー(5)、ティール(6)、グリーン(7)、パープル(8)、ローズ(9)、ピンク(10)、ブラウン(11)、タン(12)、ホワイト(13) 、グレー(14)、チャコール(15)、モカ(16)、キャラメル(17)、ライトグレー(18)、ブラック(19)、ガーネット(20)、トパーズ(21)、アンバー(22)、エメラルド(23)、ターコイズ(24)、ラピス(25)、アメジスト(26)、ピンクジェムストーン(27)、サーモン(28)、カンタロープメロン(29)、パイナップル(30)、シアン(31)、ラベンダー(32)。

ネガティブカラーIDは、ポイントライト、スポットライト、およびステージライトでは0(レッド)にマッピングされます。エミッタとビーコンの場合、負のカラーIDは13(ホワイト)にマッピングされます。32より大きいカラーIDは、モジュロ 33演算によって0から32までの値にマッピングされます。つまり、33は0(レッド)、34は1(オレンジ)、35は2(イエロー)などにマッピングされます。
落とし穴
現在のバージョンの回路にはいくつかの既知の落とし穴があり、あなたがそれらを知らないと理解しづらい場合があります。
目に見えない回路
メーカーペンを使用してガジェットを表示する機能は、部屋のアクセス許可によって制御されます。したがって、特定の部屋の回路を編集する権限がない場合は、その部屋の作成者にそのような権限を与えるように依頼する必要があります。
メーカーペンを使用してガジェットを表示する機能は、部屋のアクセス許可によって制御されます。したがって、特定の部屋の回路を編集する権限がない場合は、その部屋の作成者にそのような権限を与えるように依頼する必要があります。
フリーズしたオブジェクトの接続
フリーズしたオブジェクトを配線することは現在不可能です。接続する前に、両方のオブジェクトをメーカーペンのフリーズモードでフリーズ解除する必要があります。フリーズされたオブジェクトは依然としてギズモに接続できることに注意してください。
フリーズしたオブジェクトを配線することは現在不可能です。接続する前に、両方のオブジェクトをメーカーペンのフリーズモードでフリーズ解除する必要があります。フリーズされたオブジェクトは依然としてギズモに接続できることに注意してください。
図形をギズモ(Gizmo)に接続する
メーカーペンのシェイプをギズモに接続することはできませんが、メーカーペンのオブジェクトをギズモに接続することはできます。図形をオブジェクトに変えるには、メーカーペンの"Done Editing"ボタンを押してください。
メーカーペンのシェイプをギズモに接続することはできませんが、メーカーペンのオブジェクトをギズモに接続することはできます。図形をオブジェクトに変えるには、メーカーペンの"Done Editing"ボタンを押してください。
値の範囲
回路は現在、信号として32ビット符号付き整数のみをサポートしています。それらは、-2,147,483,648から2,147,483,647の範囲であり、小数または実数を生成することはできません。
回路は現在、信号として32ビット符号付き整数のみをサポートしています。それらは、-2,147,483,648から2,147,483,647の範囲であり、小数または実数を生成することはできません。
リング評価順序
チップが他チップのための信号を生成するする場合、通常他のチップの前に評価されます。しかし、信号がチップ間の接続によって形成されるサイクル(リング)で移動する場合、これは機能しません。あるサイクルでチップを評価するには、ゲームは無限ループ評価の結果を計算する必要があります。代わりに、既に評価されたチップは再度評価されません。私たちは、ゲームがリングを評価することを選択した順番をリング評価順序(Ring Evaluation Order)と呼びます。
チップが他チップのための信号を生成するする場合、通常他のチップの前に評価されます。しかし、信号がチップ間の接続によって形成されるサイクル(リング)で移動する場合、これは機能しません。あるサイクルでチップを評価するには、ゲームは無限ループ評価の結果を計算する必要があります。代わりに、既に評価されたチップは再度評価されません。私たちは、ゲームがリングを評価することを選択した順番をリング評価順序(Ring Evaluation Order)と呼びます。
ゲームがあなたが意図したものとは異なる順序でチップを評価することを選択した場合、これは予期しない結果につながる可能性があります。たとえば、ループに2つのノードがあり、2番目のチップが1番目のチップの前に実際に評価される場合、2番目のチップが1ティック遅れで情報を受信または出力するように見えます。
ゲームはこのようにリングを解決します:それが描かれるとき接続がループを閉じるなら、その接続はLoop Closing Connection(LCC)と呼ぶ特別な接続になります。
- LCCは、ループが通常の接続で構成されている場合にのみ作成されます。
- 別の接続を削除してループを開くと、LCCは持続します。
- LCCは、チップが評価される順番を見つけることとは考えられず、ゲームは回路グラフのリングを解決することができます。
- ループのないLCCは、それが接続されているチップの評価を遅らせるか、時にはそれは完全に動作しなくなるでしょう。この振る舞いはセーブとクライアント間で一貫していますが、クローンごとに変わります。ゲームがどの動作を選択するかを決定する方法は不明ですが、それはループが他のチップに接続される順序に関連しているようです。
- チップAとBの間にLCCがあるが、AとBの間にも通常の接続がある場合、両方の接続はあたかもそれらが通常のものであるかのように動作します。
- TODO:2番目の注文がどのように定義されているのか調べてください。新しいループに複数のLCCがある場合、ゲームはどのLCCを再び遅らせるかをどのように決定しますか?
意図的にLCCを作成する1つの方法は、そうでなければ存在しないループを作成するために、頻繁に使用されないリセットピンを使用することです。実際にリセットピンへの入力であるかどうかは関係ありません。
ステートマシンは特別な場合です。ステートマシンのすべてのステートは、ステートマシン自体と同じ評価ノードにもあります。同じステートマシン内の一見無関係の遷移に接続されたステートイベントピンは、このようにリングを形成します。
オーソリティプレーヤー
回路は(とりわけ)RRサーバーではなく、最初にルームに入るプレーヤーのクライアントで評価されます。そのプレイヤーはオーソリティプレーヤーと呼ばれます。オーソリティプレーヤーが去ると、他のプレイヤーが新しいオーソリティプレーヤーになります。
回路は(とりわけ)RRサーバーではなく、最初にルームに入るプレーヤーのクライアントで評価されます。そのプレイヤーはオーソリティプレーヤーと呼ばれます。オーソリティプレーヤーが去ると、他のプレイヤーが新しいオーソリティプレーヤーになります。
オーソリティプレーヤーのクライアントは、ルームの他のプレーヤーに回路結果を公開します。もしオーソリティプレーヤー以外のプレイヤーが回路評価をすると(ゾーンやボタンをトリガーする、人を撃つなど)、これは極端な遅れ(フル秒のオーダー)を引き起こします。それに加えて、オーソリティプレーヤー機能の実装は常にバグがあり、それでもクライアント間で同期の問題を引き起こします。その結果、オーソリティプレーヤーによって観察されたゲーム状態と他の誰かによって観察された状態は一致しないことが多く、新しいオーソリティプレーヤーが選択されると世界は変わるかもしれません(例えばサンドボックスラジオは再びプレーを始めます)。
Global Chip Update Tick
変更点
変更点
- Rec Royale Alpha Update:乱数発生器チップはもう影響を受けない。その効果は、新しいプレイヤーステータスとチームチェンジチップでも確認できます。
- ピザ&ポーション更新:変更なし。
- ロコモーションアップデート:変更なし。
- Isle of Lost Skulls Update:現在この問題は乱数発生器チップにのみ影響します。
下の例はこの問題を示しています。ボタンは何にも接続されていないことに注意してください。ボタンが押されるたびに、出力は2ずつ増えます。

すべてのチップ 1つの部屋には、任意のチップが(毎秒約10回)で評価されるたびに評価されます。そうでなければ、それらは通常評価されません。結果が混乱し、直感に反する可能性があります。特に、この「怠惰な」評価に頼っている場合はそうです。例えばリングストアそれは外部入力信号を持ち、通常信号がトリガーされるまで変化しません。ただし、同じルームの無関係な回線の無関係な信号がトリガーされたときに変化します。回路を構築しているとき、または部屋の反対側で信号をトリガしているときにランダムに変化しているように見える値に遭遇した場合、これがおそらく理由です。この問題を再現する最も簡単な方法は、たとえばNotチップの出力をその入力に接続し、その出力を観察することによって、交流回路を構築することです。
現在、この問題に対する既知の回避策はありません。ただし、影響を受けないように回路を設計する以外にです。(例として、値コピーの回路の2つの変種を参照してください。最初のものは問題の影響を受けませんが、その機能を実行するためにもう1回目盛りがかかります。)Against Gravityによると、この問題はバグではなく予期される動作です。しかし、彼らはそれが混乱していることを理解しており、期待を変えることを検討しています。
グローバルアップデートの影響を受けないように回路を構築するのに役立つように、下の回路を建設中のルームに追加できます。それは絶えずチップの更新(毎秒約10)を引き起こすので、あなたは早くあなたの設計の問題に気づくでしょう。

入力信号のないチップは評価されません
入力接続のない多くのチップは評価されません。つまり、最後の評価結果を出力ピンに送信し続けます(評価されなかった場合は0)。ルームを保存またはロードするとの入力ピンに接続することを0に注意し、この最後の結果をリセット回路ボードは、回路ボードの入力ピンがどこかからの信号を受信しない限り、入力接続としてカウントされません。したがって、回路ボードの入力ピンを切り離すことは、回路ボードを覗くことなしには明らかではない回路ボード内部の問題をもたらす可能性がある。
入力接続のない多くのチップは評価されません。つまり、最後の評価結果を出力ピンに送信し続けます(評価されなかった場合は0)。ルームを保存またはロードするとの入力ピンに接続することを0に注意し、この最後の結果をリセット回路ボードは、回路ボードの入力ピンがどこかからの信号を受信しない限り、入力接続としてカウントされません。したがって、回路ボードの入力ピンを切り離すことは、回路ボードを覗くことなしには明らかではない回路ボード内部の問題をもたらす可能性がある。
回路ボードを作成するときにこの潜在的な問題を回避するために、(回路ボードの内側で)回路ボードの任意の入力に定数0を加え、回路ボードの内側で結果として生じる合計のみを使用することができる。または、チップのリセット入力ピンに0個の信号を追加して、通常は少なくとも1つの入力接続があるように入力接続を1つだけにすることができます。これにより、回路ボードの入力ピンを切断すると、回路ボード内部の値が常に0になります。
小道具(Props)からの信号は時々回路ボードによって無視されます
動的プロップの出力信号(例えば、ボタン、トリガーボリューム、ディスクゴルフのゴールなど)が直接回路ボードに接続されている場合、信号は時々無視されるかもしれません。この問題を回避するには、これらの信号をADDモードのコンビネータチップに送信してから、コンビネータチップの出力を回路基板の入力に接続します。
動的プロップの出力信号(例えば、ボタン、トリガーボリューム、ディスクゴルフのゴールなど)が直接回路ボードに接続されている場合、信号は時々無視されるかもしれません。この問題を回避するには、これらの信号をADDモードのコンビネータチップに送信してから、コンビネータチップの出力を回路基板の入力に接続します。
ギズモ(Gizmo)回転圧縮
オブジェクトとギズモの間の接続の長さが非常に長い場合(数百メートルのオーダー)、接続されているオブジェクトは、オーソリティプレーヤー以外は数メートルずれて(ギズモの中心点から放射状に)見えるかもしれません。 )
オブジェクトとギズモの間の接続の長さが非常に長い場合(数百メートルのオーダー)、接続されているオブジェクトは、オーソリティプレーヤー以外は数メートルずれて(ギズモの中心点から放射状に)見えるかもしれません。 )
これが起こるのは、オーソリティプレーヤーがオブジェクトに関する位置と回転の情報をパーフェクトではない精度で送信するためです(データは送信時に圧縮されるため)。ほとんどのオブジェクトではこれはごくわずかですが、ギズモに取り付けられたオブジェクトの位置はギズモの向きに完全に依存するため、回転の小さな誤差に非常に長い接続半径を掛けたものは位置の大きな誤差になります。同様に、アタッチされたオブジェクト自体が非常に大きい場合、その回転におけるエラーは重大に見えます。
※このページ内容は、英語版Rec Room wikiより引用