نسخهٔ تغییرناپذیر پلاگین

Multiplayer 0.3.0-alpha.12

Binary, AOI-aware transform replication for 150 participants in each exact Environment and Zone partition.

راهنمای نصب برای عامل هوشمندmanifest.jsonsettings.schema.jsonopenapi.jsontypes.d.ts

اعتماد و موارد اعلام‌شده

کلاس اجرا
trusted_library آداپتر فرانت‌اند در قلمرو JavaScript محیط میزبان اجرا می‌شود و محیط ایزوله یا sandbox نیست.
مجوزهای پلتفرم
identity:read profile:read settings:read plugin-grant:request
سازگاری
قراردادها ^0.1.0-alpha.1 · SDK ^0.1.0-alpha.1
مجوز نرم‌افزار
MIT

آداپترهای فرانت‌اند

نیازمندی‌های مرورگر

نیازمندی‌ای اعلام نشده است.

دسترسی شبکه

Short-lived Plugin Grant verification and realtime player-state relay.

شیوهٔ استفاده از داده

داده‌های جمع‌آوری‌شده
pairwise plugin actor، authoritative display profile، environment، scope membership، ephemeral movement and animation state، connection diagnostics
داده‌های اشتراکی
هیچ‌کدام
نگه‌داری
Movement and membership are memory-only. Abrupt disconnects retain a resumable replica for at most 10 seconds; explicit leave removes it immediately. Security audit events follow platform policy.
سیاست حریم خصوصی
مشاهدهٔ سیاست

مجوزهای کوتاه‌عمر بک‌اند

اسنپ‌شات انتشار

{
  "contractVersion": "0.1.0-alpha.1",
  "pluginId": "plg_multiplayer",
  "publisher": {
    "id": "pub_fcb267e3-08ca-4755-9fe0-ceb6142544cd",
    "handle": "al-amr-technical"
  },
  "slug": "multiplayer",
  "name": "Multiplayer",
  "version": "0.3.0-alpha.12",
  "shortDescription": "Binary, AOI-aware transform replication for 150 participants in each exact Environment and Zone partition.",
  "category": "communication",
  "kind": "full_stack",
  "runtimeClass": "trusted_library",
  "frontendAdapters": [
    {
      "id": "browser",
      "runtime": "vanilla",
      "exportPath": "./browser",
      "exports": [
        "createMultiplayerSession",
        "bindLocalReplicaSource",
        "createRemoteReplicaSource",
        "createMultiplayerActorDirectory",
        "createReplicaBuffer",
        "sampleReplicaBuffer",
        "multiplayerPluginManifest",
        "MULTIPLAYER_BACKEND_COMPONENT_ID",
        "MULTIPLAYER_PLUGIN_ID",
        "MULTIPLAYER_PLUGIN_VERSION",
        "MULTIPLAYER_REVIEWED_MAX_MESSAGE_BYTES",
        "MULTIPLAYER_REVIEWED_MAX_PARTICIPANTS",
        "MULTIPLAYER_REVIEWED_MESSAGES_PER_MINUTE",
        "MultiplayerContextSchema",
        "MultiplayerMemberSchema",
        "MultiplayerScopeSchema",
        "decodeClientStateFrame",
        "decodeServerStateBatch",
        "encodeClientStateFrame",
        "encodePreparedServerStateBatch",
        "encodeServerStateBatch",
        "isNewerMultiplayerSequence",
        "prepareMultiplayerStateRecord",
        "MultiplayerClientControlMessageSchema",
        "MultiplayerServerControlMessageSchema",
        "ReplicaMovementModeSchema",
        "ReplicaStateSchema",
        "resetReplicaBuffer",
        "pushReplicaState",
        "createRemoteReplicaSample"
      ],
      "capabilities": [
        "multiplayer:presence",
        "multiplayer:transform",
        "multiplayer:profile",
        "multiplayer:scoped-actor-key"
      ],
      "peerDependencies": {},
      "semanticPorts": {
        "provides": [
          {
            "id": "remote-replicas",
            "interfaceId": "spatial.remote-replica-source",
            "version": "2.0.0",
            "exportName": "createRemoteReplicaSource",
            "description": "Provides allocation-free sampled remote transforms with movement mode, freshness, source, tier, dormancy, age, and separate directory subscriptions.",
            "lifecycle": "scope",
            "cardinality": "one",
            "actorCorrelation": "actor_key",
            "protocolArtifactId": "remote-replica-schema"
          },
          {
            "id": "scoped-actors",
            "interfaceId": "presence.scoped-actor-directory",
            "version": "1.0.0",
            "exportName": "createMultiplayerActorDirectory",
            "description": "Provides the current scope's remote actor descriptors using only the Registry-issued pseudonymous actorKey.",
            "lifecycle": "scope",
            "cardinality": "one",
            "actorCorrelation": "actor_key",
            "protocolArtifactId": "scoped-actor-schema"
          }
        ],
        "requires": [
          {
            "id": "local-replica",
            "interfaceId": "spatial.local-replica-source",
            "versionRange": "^2.0.0",
            "bindingName": "localReplicaSource",
            "description": "Samples the Environment-selected local transform and explicit grounded/flying mode at a fixed network cadence.",
            "lifecycle": "scope",
            "cardinality": "one",
            "optional": true,
            "actorCorrelation": "none",
            "protocolArtifactId": "local-replica-schema"
          }
        ]
      }
    },
    {
      "id": "react",
      "runtime": "react",
      "exportPath": "./react",
      "exports": [
        "MultiplayerProvider",
        "MultiplayerDiagnosticsHud",
        "useMultiplayerDiagnostics",
        "useRemoteReplicaIds",
        "useMultiplayerConnectionState"
      ],
      "capabilities": [
        "multiplayer:directory-ui",
        "multiplayer:diagnostics-ui"
      ],
      "peerDependencies": {
        "react": ">=18"
      }
    }
  ],
  "backendComponents": [
    {
      "id": "realtime",
      "name": "Multiplayer realtime relay",
      "protocol": "websocket",
      "protocolArtifactId": "multiplayer-data-plane",
      "capabilities": [
        "room:membership",
        "state:relay",
        "interest:scope"
      ],
      "grantScopes": [
        "multiplayer:join"
      ],
      "contextSchema": {
        "type": "object",
        "properties": {
          "scope": {
            "type": "string",
            "minLength": 1,
            "maxLength": 96,
            "pattern": "^[A-Za-z0-9][A-Za-z0-9:_-]{0,95}$"
          }
        },
        "required": [
          "scope"
        ],
        "additionalProperties": false
      },
      "scopeAdmission": {
        "grantScope": "multiplayer.scope-admission@1.0.0",
        "purpose": "multiplayer_admission",
        "endpointPath": "/v1/multiplayer/scope-admission"
      },
      "limits": {
        "maxConcurrentSessions": 1,
        "maxParticipantsPerContext": 150,
        "maxMessageBytes": 32768,
        "requestsPerMinute": 2400
      }
    }
  ],
  "protocolArtifacts": [
    {
      "id": "multiplayer-data-plane",
      "kind": "asyncapi",
      "specificationVersion": "3.0.0",
      "path": "./protocol/multiplayer.asyncapi.json",
      "digest": "sha256:447e034bc4726147e4e91b75727bb50834bec8bfe06c03fbf3c2667dd599bdf7",
      "mediaType": "application/vnd.aai.asyncapi+json"
    },
    {
      "id": "local-replica-schema",
      "kind": "json_schema",
      "specificationVersion": "2020-12",
      "path": "./protocol/local-replica.schema.json",
      "digest": "sha256:bbdac5411de7f5070ff8a8035f6a590abf5d22ed3e89b9a3fbbb9a2673e7ef7d",
      "mediaType": "application/schema+json"
    },
    {
      "id": "remote-replica-schema",
      "kind": "json_schema",
      "specificationVersion": "2020-12",
      "path": "./protocol/remote-replica.schema.json",
      "digest": "sha256:246e750e4f9b8a6dda070a55d0770bfd43fadc3ea482ac3c5d6ee846afe1fc7a",
      "mediaType": "application/schema+json"
    },
    {
      "id": "scoped-actor-schema",
      "kind": "json_schema",
      "specificationVersion": "2020-12",
      "path": "./protocol/scoped-actor.schema.json",
      "digest": "sha256:8288651dd66792239bbb3136918026eecf8ea5e74b50a0aa441e5be5553d16ba",
      "mediaType": "application/schema+json"
    }
  ],
  "settings": {
    "schemaVersion": "1.0.0",
    "type": "object",
    "properties": {
      "scopeAdmission": {
        "title": "Scope admission",
        "x-al-amr-scopes": [
          "plugin_default",
          "environment"
        ],
        "type": "string",
        "default": "public",
        "enum": [
          "public",
          "environment_backend"
        ],
        "maxLength": 4096
      }
    },
    "additionalProperties": false
  },
  "platformPermissions": [
    "identity:read",
    "profile:read",
    "settings:read",
    "plugin-grant:request"
  ],
  "browserRequirements": [],
  "networkAccess": {
    "origins": [
      "https://multiplayer.al-amr.com"
    ],
    "reason": "Short-lived Plugin Grant verification and realtime player-state relay."
  },
  "dataHandling": {
    "collected": [
      "pairwise plugin actor",
      "authoritative display profile",
      "environment",
      "scope membership",
      "ephemeral movement and animation state",
      "connection diagnostics"
    ],
    "shared": [],
    "retention": "Movement and membership are memory-only. Abrupt disconnects retain a resumable replica for at most 10 seconds; explicit leave removes it immediately. Security audit events follow platform policy.",
    "privacyPolicyUrl": "https://developer.al-amr.com/legal/privacy"
  },
  "compat": {
    "contracts": "^0.1.0-alpha.1",
    "sdk": "^0.1.0-alpha.1"
  },
  "documentation": {
    "canonicalUrl": "https://developer.al-amr.com/plugins/al-amr/multiplayer",
    "integrationUrl": "https://developer.al-amr.com/plugins/al-amr/multiplayer/integration.md",
    "repositoryUrl": "https://github.com/al-amr/al-amr/tree/main/plugins/multiplayer",
    "license": "MIT"
  }
}
Multiplayer 0.3.0-alpha.12 · الامر