Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SDK7 feature parity with SDK6 #369

Closed
nearnshaw opened this issue Jul 5, 2022 · 1 comment
Closed

SDK7 feature parity with SDK6 #369

nearnshaw opened this issue Jul 5, 2022 · 1 comment

Comments

@nearnshaw
Copy link
Member

nearnshaw commented Jul 5, 2022

Full Feature parity checklist

These are all the features currently available in SDK 6, that we should support on SDK7

Definitions

Base components

Special components

Entities

Observables

player connected observable (other players) player disconnected observable (other players)

  • Feature parity: Temporary keep onPlayerDisconnectedObservable and onPlayerConnectedObservable (ECS6)

player entered scene observable (any player) ### player left scene observable (any player)

  • Feature parity: Temporary keep onEnterSceneObservable and onLeaveSceneObservable (ECS6)

player changes camera mode observable (current player)

  • Feature parity:
    • Component of the CameraEntity

player plays animation observable (current player)

  • Feature parity: onPlayerExpressionObservable (ECS6)

Current player clicks on another player observable (includes userId, & ray data)

  • Feature parity: onPlayerClickedObservable (ECS6)

player locks/unlocks cursor observable (current player)

  • Feature parity:
    • RootEntity.PointerLocked component present

player goes idle/returns from idle observable (current player)

  • Feature parity:
    • Component of the CameraEntity

player changes profile observable (any player) (includes name, wearables list, etc)

  • Feature parity: onProfileChanged (ECS6)

scene finished loading observable

  • Feature parity: onSceneReadyObservable (ECS6)

videoTexture changed state observable (playing/paused/etc)

  • Feature parity: onVideoEvent (ECS6)

player changes realm or island observable

  • Feature parity: onRealmChangedObservable (ECS6)

use message bus

Data: player, scene, environment, and others

get a full list of connected players

  • Feature parity: import getConnectedPlayers() from '~system/Players' from kernel-api-rpc

get a full list of players currently in the scene

  • Feature parity: import getPlayersInScene() from '~system/Players' from kernel-api-rpc

player position / feetPosition / worldPosition & rotation in eurler & quaternion

  • Feature parity: PlayerEntity.Transform

player data: name, id, publicKey, hasConnectedWeb3, avatar (wearables, bodyshape, skin color, snapshots, etc), version

  • Feature parity: import { getPlayerData } from '~system/Players' from kernel-api-rpc

same data for any nearby player by ID (from renderer)

  • Feature parity: import { getPlayerData } from '~system/Players' // with { userId } as param from kernel-api-rpc

same data for any player by ID (from catalysts) (use fetch)

  • Ok

get decentraland time

  • Feature parity: import { getDecentralandTime } from '~system/EnvironmentAPI' from kernel-api-rpc

get player realm, server URL, server name

  • Feature parity: import { getCurrentRealm } from '~system/EnvironmentAPI' from kernel-api-rpc

get player platform (desktop / browser)

  • Feature parity: import { getPlatform } from '~system/EnvironmentAPI' from kernel-api-rpc

get active portable experience

  • Feature parity: import { getPortableExperiencesLoaded } from '~system/PortableExperiences' from kernel-api-rpc

get player's current camera mode

  • Feature parity CameraEntity.CameraMode component

Scene data:

  • Fetch full metadata, including parcels, spawnpoints, title, tags, etc
    • Feature parity: import { getParcel } from '~system/ParcelIdentity' from kernel-api-rpc

Events

All these events were found in the repositories js-sdk-toolchain@6.x.x, unity-renderer, kernel and posix.
The ones used by the ECS6 are the actually that need to have a fallback for the feature parity.

Used by ECS6 (js-sdk-toolchain branch 6.x.x)

Ticked means it's tracked.

  • positionChanged:
    • PlayerEntity.Transform.position
  • rotationChanged :
    • PlayerEntity.Transform.position
  • cameraModeChanged
    • CameraEntity.CameraMode
  • onEnterScene: See point Observables 3)
  • onLeaveScene: See point Observables 4)
  • idleStateChanged: See point Observables 10)
  • sceneStart: See point Observables 11)
  • playerExpression: See point Observables 6)
  • videoEvent: See point Observables 12)
  • onPointerLock: See point Observables 8)
  • playerConnected: See point Observables 1)
  • playerDisconnected: See point Observables 2)
  • profileChanged: See point Observables 10)
  • onRealmChanged: See point Observables 13)
  • playerClicked: See point Observables 7)
  • comms
  • uuidEvent
  • raycastResponse
  • actionButtonEvent
  • pointerUp
  • pointerDown

Other functionalities:

  • movePlayerTo() - inside scene
    Definition: Teleport is now handled viaTransform.getMutable(PlayerEntity).position #356
  • teleportTo() - to other scenes (keep it as it is✅)
  • openExternalLink() (keep it as it is✅)
  • fetch() (keep it as it is✅)
  • signedFetch() (keep it as it is✅)
  • websockets events, socket.onmessage (keep it as it is✅)
  • EventConstructor() events.fireEvent() / events.addListener()
    remove events entirely?
  • Global button events

Helpers:

UI Support #424

  • UiText
  • UiImages

Docs

@menduz menduz pinned this issue Jul 6, 2022
@nearnshaw nearnshaw changed the title Full feature parity with SDK6 Feature parity with SDK6 Sep 9, 2022
@nearnshaw nearnshaw changed the title Feature parity with SDK6 SDK7 feature parity with SDK6 Sep 9, 2022
@gonpombo8
Copy link

pending features are tracked here #442

@menduz menduz unpinned this issue Jan 23, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants