クラウドバリアブル(Cloud Variables)

From Neos Wiki
Revision as of 16:23, 20 September 2021 by Kazu (talk | contribs)
Jump to navigation Jump to search
Other languages:
English • ‎čeština • ‎日本語 • ‎한국어

クラウドバリアブルとは

クラウドバリアブルは、セッションをまたいで存続する変数です。 これらはダイナミックバリアブルと同様の性質で機能しますが、ペアレント化やワールド階層に依存する代わりに、パスとユーザー/グループの所有権に依存します。 お気に入りのゲームの設定ファイルや構成ファイルと同じように考えることができます。 クラウドバリアブルは、セッション、ワールド、さらにはNeos Dash間で同期されます。

クラウド変数は、次の2つの部分で構成されています。

  • 定義 - 設定と構成; オーナー、名前、型、権限、デフォルト値。
  • 値 - ユーザーごとの実際の値

クラウド変数の定義

クラウド変数の定義は、次の4つの部分で構成されています:

  • パス/名前 例:AwesomeGadget.VersionPartyWorld.highQualityLights
  • データ型
  • 権限
  • デフォルト値(デフォルト値は、To Stringノードの出力になります。例:、Colorで、文字列に変換すると以下のようになります。[1; 1.23; 0; 1]。)

定義は、ユーザーまたはグループに対して登録することもできます。 グループに対して定義を登録すると、次のようないくつかの利点があります。

デフォルト値

creating a definitionの際には、各コマンドの段階でデータや設定を与えます。コマンドを忘れたり、省略したりした場合のために、以下に定義の様々なプロパティのデフォルト値を示します。

  • 読み/書きのパーミッションは標準で variable_owner になります。
  • リスト・パーミッションは標準で definition_owner になります。
  • デフォルト値が指定されていない場合、Neosはこのデータタイプのデフォルト値をC#で定義されたものとして返します。

クラウドバリアブルの値(Cloud Variable Values)

各クラウドバリアブルは複数の値を持つことができ、各値は個々のNeosユーザーかグループに関連付けられています。値にはその値が含まれているだけで、定義に関する詳細はありません。 これは、オーナIDと値の2つの列を持つ表のように考えることができます。

たとえば、クラウドバリアブル定義がstringのデータ型と"好きな果物"の名前で作成された場合、その値は次のようになります:

好きな果物
Variable Owner ID
U-Frooxius Strawberry
U-Nexulan Orange
U-Shifty Pineapple
U-ProbablePrime Blueberry
U-Vegasx Blueberry
G-MyGroup Banana

最後の行は、グループに固有の値を示しています。 これは、グループに属するクラウドバリアブルでのみ可能です。 スペースを含む可変所有者ID(ユーザーIDまたはグループID)は、ハイフンで記述する必要があります。

スペースを含む可変所有者ID(ユーザーIDまたはグループID)は、ハイフンで記述する必要があります。 例:グループ"MyGroup"は"G-My-Group"になります。 ユーザーIDとグループIDは、ユーザー/グループの表示名とは完全に異なる場合があることを常に確認してください。

クラウド変数の使用

クラウド変数を使用する前に、それを作成して登録する必要があります。 これは、さまざまなタイプのコマンドの送信Neosボットに行うことです。 これらのコマンドは、クラウドバリアブル定義でNeosに登録します。 登録されたクラウド変数値は、LogiXコンポーネントを使用して、この読み取り、書き込み、操作できます。

使用上の注意/警告

  • 現在、クラウド変数は削除できません。
  • 変数定義は大量にキャッシュされ、通常、更新には数分かかります。 事前に完全に設定することをお勧めします。
  • 読み取りと書き込みはバッファリングされ、バッチ処理され、キャッシュされ、伝播するのに少し時間がかかります。
  • クラウド変数システムの現在の制限は、同じホスト/ユーザーで実行されない限り、異なるセッション間でリアルタイムに同期されないことです。 1つのヘッドレス(または自分のコンピューター)で複数のワールド/セッションをホストしている場合、クラウド変数への変更はそれらのセッション内でリアルタイムに同期されます。
  • 異なるユーザーが同じワールドをホストしている場合、あるワールドでの変更が別のワールドにすぐに反映されることはなく、更新に数分かかります。 現在の計画では、SignalRをクラウドインフラストラクチャに統合することで、このような場合に完全なリアルタイム同期を追加します。これにより、アクティブセッションやメッセージングシステムなどの他のものに対してもクラウドのスケーリングが向上しますが、作業量は大きくなります。
  • 現在の制限、権限、およびその他の側面は変更される可能性があります。
  • データ型の変更は可能ですが、すでに保存されている値は影響を受けません。

制限

クラウドバリアブルはストレージを占有しませんが、制限があります。 この制限は、変数の定義にのみ適用され、実際の値には適用されません。 構成に応じて、異なるユーザーが異なる値を持つ可能性があります。 例えば。 カラーバリアブルの場合:サムは赤、サリーは黒、トムは青です。

タイプ 制限数
ユーザー 256
グループ 8192

¹これは定義の所有者にのみ適用され、変数のユーザーには適用されません。そのため、任意の量の値を所有できます。

例:NeosUser1が定義"User.Color"を所有している場合。これにより、そのユーザーの新規で定義できる変数の数が255に減ります。ただし、権限が設定されていれば、他の誰でも自由に変数を使用できます。

使用できるデータ型

クラウドバリアブルを作成するときは、それらの有効な型を指定する必要があります。 サポートされているデータ型を以下に示しますが、一般的にはすべてのプリミティブデータ型がサポートされています。 参照は1つの定義されたワールド/セッション内でのみ機能するため、参照データ型はサポートされていません。

  • bool
    • bool2
    • bool3
    • bool4
  • string
    • string:<max_length>
    • デフォルトでは、文字列の長さは256文字です。 string:<max_length>コードを使用してより長い制限を入力すると、これを8192文字に増やすことができます。
  • float
    • float2
    • float3
    • float4
    • float2x2
    • float3x3
    • float4x4
  • floatQ - 定義にfloatqを使用する
  • doubleQ - 定義にdoubleqを使用する
  • color
  • datetime
  • timespan
  • short
    • ushort
  • int
    • int2
    • int3
    • int4
  • uint
    • uint2
    • uint3
    • uint4
  • long
    • long2
    • long3
    • long4
  • ulong
    • ulong2
    • ulong3
    • ulong4
  • byte
    • sbyte
  • double
    • double2
    • double3
    • double4
    • double2x2
    • double3x3
    • double4x4
  • decimal

列挙型(Enums)

列挙型も使用できるようになりました。正しく同期するには、クラウドバリアブルの定義を文字列(string)に設定する必要があります。 作成したら、LogiXコンポーネントを使用して、データ型を使用する列挙型に設定できます。 たとえば、CloudValueField<ShadowType>です。

より多くのデータ型が将来サポートされる予定です

権限(Permissions)

クラウド変数の権限は、次の2つの部分で構成されています。

  • アクション許可 - 許可グループが実行できるアクションのタイプ。
  • グループ/タイプ許可 - ユーザーのグループまたは分類。

次のコマンドの例として:/setUserVarPerms test.color read,write,list anyone アクションは"読み取り、書き込み、リスト"で、権限のタイプ/グループは"anyone(誰でも)"です。

アクション権限

アクション権限 説明
read 変数の値を読み取ることができるのは誰か
write 変数の値に誰が書き込むことができるか
list 変数の定義を誰が見ることができるか
all 上記のすべての権限を一度に付与します

カンマで区切って一度に複数の権限を指定することもできます。たとえば、 /setUserVarPerms test.color read,write,list anyoneは、 test.colorに読み取り、書き込み、一覧表示の権限を付与します。

権限タイプ/グループ

一般的な定義のアクセス許可

これらの権限は、ユーザーとグループが所有する定義の両方で使用できます。

権限 説明 使用できる場所 制限
anyone 誰でもこの変数を変数の読み取り/書き込み/一覧表示できます。これは、パブリックな変数を読むときにはお勧めですが、誰でも誰かの値を変更できるので、書き込みにはお勧めできません。 どこでも 'リスト'権限では使用できません。ユーザー所有の定義に対して「書き込み」権限として設定することはできません。
definition_owner_only 変数を定義したユーザー/グループのみが自分の変数の読み取り/書き込み/一覧表示できます。 アナウンス/バージョン管理システムに役立ちます。 ユーザースペース/セーフコンテキストのみ なし
definition_owner_only_unsafe 変数を定義したユーザー/グループのみが自分の変数の読み取り/書き込み/一覧表示できます。 アナウンス/バージョン管理システムに役立ちます。 どこでも なし
variable_owner 変数値を所有しているユーザーのみが、変数値の書き込み/読み取りを行うことができます。 ユーザースペース/セーフコンテキストのみ 'リスト'権限は使用できません
variable_owner_unsafe 変数値を所有しているユーザーのみが、変数値の書き込み/読み取りを行うことができます。 どこでも 'リスト'権限は使用できません

ユーザー定義の権限

これらの権限設定は、ユーザーが定義した変数でのみ使用できます。

権限 説明 使用できる場所 制限
definition_owner_only_contacts 変数値は、定義所有者のフレンドのみが書き込むことができます。 ユーザーのタグ付けシステムに役立ちます。 ユーザースペース/安全なコンテキストのみ 'list'権限は使用できません
definition_owner_only_contacts_unsafe 変数値は、定義所有者のフレンドのみが書き込むことができます。 ユーザーのタグ付けシステムに役立ちます。 どこでも 'list'権限は使用できません
variable_owner_only_contacts これにより、変数の定義者のフレンドである誰もが、値を読み/書きできるようになります(つまり、あなたのフレンドがあなたの値を読み/書きできるということです)。 ユーザースペース/安全なコンテキストのみ 'list'権限は使用できません
variable_owner_only_contacts_unsafe これにより、変数の定義者のフレンドである誰もが、値を読み書きできるようになります(つまり、あなたのフレンドがあなたの値を読み書きできるということです)。 どこでも 'list'権限は使用できません

グループ定義の権限

これらの権限は、グループとして定義した変数(グループが所有する定義)でのみ使用できます。

権限 説明 使用できる場所 制限
definition_owner 変数を定義したグループだけが、それを読み/書き/リスト表示できます ユーザースペース/安全なコンテキストのみ
definition_owner_unsafe 変数を定義したグループだけが、それを読み/書き/リスト表示できます どこでも

安全な状態

Neos内のほとんどの場合、誰でもあなたがしていることを観察したり操作したりすることができます。 これらは 安全でない(unsafe)状態です。 Neos Dashが配置されているユーザースペースなどの場所では、誰もあなたが行っていることを確認したり変更したりすることはできません。これは安全な状況です。

クラウドバリアブルのコマンド一覧

以下のコマンドのほとんどは、同様の形式を使用しています。

    • 最初の部分は次のいずれかです。
    • /get
    • /set
    • /list
    • /create
  • 次に、変数定義がUserまたはGroupのどちらに属するかを指定します
  • 次に、Var
    を、
  • 次に、各コマンドの目的に固有の最後の部分を追加します。 (<blank>, Type, Value, Perms, DefaultValue)

これらのコマンドで、引数の周りに()が表示されている場合はオプションです。 それ以外の場合は 必須です。

定義の作成

ユーザー定義

  • /createUserVar <path> - 指定されたパスで変数定義を作成します
  • /setUserVarType <path> <type> - バリアブル定義のデータ型を設定します
  • /setUserVarDefaultValue <path> <value> - 定義のデフォルト値を設定します
  • /setUserVarPerms <path> <action permission> <permission type> - 権限を設定します
  • /setUserVarValue (<user>) <path> (<target user>) <value> - 定義の個々のユーザーの値を設定します
  • /setUserVarPerms <path> <action permission> <permission type> - 定義の権限を設定します。


一度に定義を作成できるコマンドもあります:/createUserVar <path> <type> <default value> <read perms> <write perms> <list perms>

グループ定義

  • /createGroupVar <group> <path> - 指定されたパスでバリアブル定義を作成します
  • /setGroupVarType <group> <path> <type> - バリアブル定義のデータ型を設定します
  • /setGroupVarDefaultValue <group> <path> <value> - 定義のデフォルト値を設定します
  • /setGroupVarPerms <group> <path> <action permission> <permission type> - 権限を設定します

一度に定義を作成できるコマンドもあります: /createGroupVar <group> <path> <type> <default value> <read perms> <write perms> <list perms>

値を読む

LogiX / Componentsを使用した値の読み取りについては、この後のセクションを参照してください。

ユーザーで定義した変数

  • /getUserVar <path> - 変数の定義を取得します(データ型、権限、デフォルト値)
  • /getUserVarValue (<user>) <path> (<target user>) - 定義のユーザー(標準: yours)の値を取得します
  • /listUserVars (<user>) - ユーザーの変数定義を一覧表示します(標準:yours)。list権限が必要です。

グループで定義した変数

  • /getGroupVar <group> <path> - 変数の定義を取得します(データ型、権限、デフォルト値)
  • /getGroupVarValue <group> <path> (<target user>) - 定義のユーザー(標準: yours)の値を取得します
  • /listGroupVars <group> - グループの変数定義を一覧表示します。 list権限が必要です。

値の書き込み

値を設定・書き込みする際には、権限が正しく設定されていることを確認してください。

LogiX / コンポーネントを使用した値の書き込みについては、このセクションの後の方を参照してください。

ユーザーで定義した変数への値の書き込み

  • /setUserVarValue (<user>) <path> (<target user>) <value> - 定義に対して個々のユーザーの値を設定します。

グループで定義した変数への値の書き込み

  • /setGroupVarValue <group> <path> (<target user>) <value> - 定義に対して、個々のユーザーの値を設定します。

コマンドの例

ブール型のユーザ変数を作成

boolean型のUser数を作成します。この変数は、誰でも読み取り、所有者(各ユーザーが自分のコピーを作成)がユーザースペースとワールドスペースから書き込むことができます。

/createUserVar testing.enabled
/setUserVarType testing.enabled bool
/setUserVarPerms testing.enabled read anyone
/setUserVarPerms testing.enabled write variable_owner_unsafe

カラー型のユーザ変数を作成

所有者のみがユーザースペースから書き込み、どこからでも読み取ることができるcolor型のUser変数を作成します。

/createUserVar testing.myColor
/setUserVarType testing.myColor color
/setUserVarPerms testing.myColor read variable_owner_unsafe
/setUserVarPerms testing.myColor write variable_owner

ブール型のグループ変数を作成

boolean型のGroup変数を作成します。これは、所有者だけがどこからでも読み取り、書き込み、リスト表示できます。

/createGroupVar MyGroup testing.enabled
/setGroupVarType MyGroup testing.enabled bool
/setGroupVarPerms MyGroup testing.enabled read,write,list variable_owner_unsafe

クラウド変数の操作

コンポーネント

ActiveUserCloudField`1 (Component) - CloudValueFieldと同様ですが、OwnerIdをローカルユーザーで上書きします。

ActiveUserCloudValueVariable`1 (Component) - CloudValueVariableと同様ですが、OwnerIdをローカルユーザーで上書きします。

CloudValueField`1 (Component) - ターゲットフィールドを使用して値を格納しますが、それ以外はCloudValueVariableと同様です。

CloudValueVariable`1 (Component) - クラウド変数を表し、OwnerIdを手動で設定できます。

CloudValueVariableDriver`1 (Component) - 指定されたクラウド変数の値でターゲットフィールドをドライブします。 OwnerIdをローカルユーザーで上書きします。

LogiXノード

Write Cloud Variable`1 (LogiX node) - インパルス時に、指定された所有者に対して指定されたクラウド変数を書き込みます。

Read Cloud Variable`1 (LogiX node) - インパルス時に、指定された所有者の指定されたクラウド変数を読み取ります。

ヘッドレスサーバーの操作と自動起動ワールドオプション

クラウドバリアブルは、ヘッドレスセッションワールドの自動起動設定で使用できます。

  • セッションのユーザー権限を構成します。
  • ユーザーがセッションに参加できるか出来ないかを設定できます。
  • ユーザーがセッションへのアクセスを拒否される理由について、カスタム拒否メッセージを提供します。

これらのオプションは Neos内のUIでは使用できません、ゲーム外からの高度なセットアップが必要です。

権限

クラウド変数を使用して権限を設定するには、ヘッドレスconfigにroleCloudVariableパラメーターを追加します。 その値は、使用するクラウドバリアブルのフルパスである必要があります。ヘッドレスサーバーでそのセッションは、クラウドバリアブルを使用して、ユーザーが持つ権限を決定します。

これを行うときは、いくつかの点に注意する必要があります。

  1. 変数のデータ型はstringである必要があります。
  2. この変数にはdefinition_owner権限グループを使用することを強くお勧めします。 他の権限グループでは、ユーザーが自分の役割を上書きできる場合があります。
  3. 変数とユーザーに値が設定されていない場合、権限を決定するための他の方法が使用されます。

設定の例:

U-ProbablePrime.awesomeHeadless.userRoles
Variable Owner ID
U-Frooxius Admin
U-Nexulan Builder
U-Shifty Guest
U-ProbablePrime Spectator
U-Vegasx Spectator

アクセス(参加できる人)

ヘッドレスセッションへのアクセスを制御できるいくつかの変数と設定があります。

ユーザーのアクセスを許可する

ヘッドレスセッションへのアクセスを構成するには、クラウドバリアブルを使用して、allowUserCloudVariableパラメーターをワールドスタートアップ/ヘッドレスセッションconfigに追加します。 その値は、使用するクラウド変数のフルパスである必要があります。セッションはクラウド変数を使用してセッションへのアクセス設定を提供します。

このオプションは、最大ユーザー数や可視性などの通常のセッション設定を含め、他のすべての設定よりも優先されます

これを行うときは、いくつかの点に注意する必要があります。

  1. 変数のデータ型はboolである必要があります。
    1. trueに設定されている場合、ユーザーはセッションに参加できます。
    2. falseに設定されている場合、または値が存在しない場合は、アクセスを決定するための他の方法が使用されます。
  2. その値がtrueの場合、サーバーはユーザーへのアクセスを許可します。
  3. これは、ユーザーに招待(インバイト)を送信するのと同じです。
  4. ユーザーは、MaxUsers設定に関係なく参加できます。
  5. セッションがプライベートであっても、ユーザーは参加できます。 ただし、セッションへのリンクが必要になります。

セットアップの例は次の通りです:

U-ProbablePrime.awesomeHeadless.userAccess
Variable Owner ID
U-Frooxius true
U-Nexulan true
U-BadGuy false

ユーザーのアクセスを拒否する

allowUserCloudVariableと同様に、denyUserCloudVariableを使用して、ワールドスタートアップ/ヘッドレスセッションconfigでのユーザーアクセスを拒否できます。アクセスを拒否するには、代わりにdenyUserCloudVariableを使用してください。ユーザーの値がtrueの場合、ユーザーはアクセスを拒否されます。

このオプションは、最大ユーザー数や可視性などの通常のセッション設定を含め、他のすべての設定よりも優先されます

セットアップの例は次のとおりです。:

U-ProbablePrime.awesomeHeadless.userAccess
バリアブルオーナーID 説明
U-Frooxius false アクセス許可
U-Nexulan false アクセス許可
U-BadGuy true アクセス拒否

参加のコントロール

上記のオプションに加えて、requiredUserJoinCloudVariableを使用するオプションもあります。このオプションがワールドスタートアップ/ヘッドレスセッションconfigに追加されると、ユーザーに対するその値がチェックされます。 trueの場合、ユーザーは参加できます。falseの場合、参加は許可されません。

このオプションは、他のセッション設定よりも優先されないことに注意してください。 この値がtrueに設定されていても、セッションがいっぱい(最大ユーザー数に達している)の場合、ユーザーは参加できません。

セットアップの例は次のとおりです:

U-ProbablePrime.awesomeHeadless.userAccess
バリアブルオーナーID
U-Frooxius true
U-Nexulan true
U-BadGuy false

requiredUserJoinCloudVariableDenyMessageを使用して、各ユーザーのカスタム拒否メッセージを指定することもできます。:

U-ProbablePrime.awesomeHeadless.denyMessages
バリアブルオーナーID
U-Frooxius 少し休んで
U-BadGuy あなたはバンされました

このオプションは最初は混乱するかもしれませんが、可視性や最大ユーザー数などの定期的なチェックをバイパスせずに、セッションアクセスを制御するのに役立ちます。

追加資料

詳細については、次のソースを確認してください:


This article or section is a Stub. You can help the Neos Wiki by expanding it.