SDK: Recap and upcoming key developments

Hello folks!

As I wrote in my introduction a couple of days ago, it’s my intention to start helping this community in any way I can. Therefore, and since I know some collaborators, I started asking what are the upcoming key developments on the SDK.

We talked a lot about how the SDK was structured over the last four years. I wanted to have a better understanding of the new basics, fundamentals and architectural decisions that will improve the overall performance of Decentraland’s platform.

After four years of learning, the team is starting to develop and improve SDK tools from another point of view, employing a whole new paradigm, to overcome a static and limiting architecture. Based on the feature parity concept, the team seeks to replicate the same functionalities and features that are currently present in SDK 6, but with different fundamentals.

This new architecture it’s founded in several principles and layers, here are some of them:

  • CRDT - the new conflict-free replicated data type protocol, it’s been ready for a while but not implemented yet, and will allow to stand and order multiple messages simultaneously in a better way, and also enabling to build over existing bases using SDK6 libraries.

  • Messaging - The protocol messages have been changed from JSON format to use protobuf instead, which makes messages more compact and serialization/deserialization faster.

  • Entity (ECS) - As many of us know, Entities are the basic unit for building everything in scenes as containers that hold components. From now on, an Entity will become just an ID so, in other words, it will become a number that is used as a reference to group different components. It won’t be no longer necessary to separately create an entity and then add it to the engine, this will all be done in a single act.

  • JavaScript ES2020 - SDK7 uses a more recent version of JavaScript, which enables new features, better performance, and few more modern tools like Map().

The impacts will be deep and wide, but we can start listing some of them to give context:

  • Overall performance enhancement - new communication technologies and messaging protocols will lead to lightweight and optimized content.

  • Multiplayer content - right now, most of the content in Decentraland is single player due to how complex it is for content creators to implement the current messaging system. SDK7 improvements will allow and encourage the development of more and better multiplayer content and experiences. Thanks to the new CRDT synchronization protocol, the SDK7 provides an easy and sturdy solution for scene state synchronization that will have a direct impact on players.

  • Rendering - this new architecture will allow you to pick and save “static scenes” in a first layer and then, in a second layer, load the logic and therefore the visuals, optimizing resources and getting better performance. This static definition is derived from the new CRDT protocol, enabling the same runtime messages to be serialized into a file to load/save the entire state of a scene.

  • UX - It will radically improve the experience for creating scenes, making development easier for content creators in different layers of complexity. For example, the syntax for building UIs has been completely renewed. Now it uses JSX (like React), which should be familiar to anyone with web development experience and a lot more robust.

  • Editor - SDK7 will allow new features in the Editor like the ability to pause a scene while it’s running, inspect the entity tree, see the components attached to each entity and their values, and being able to modify these values and resume the execution of the scene with the modified values. Also the Editor removes the need to use the CLI and NPM, getting rid of the need to interact with the terminal.

  • Formally defined protocol - with the current legacy SDK version, it 's not feasible to define specific technical documentation to start from scratch. New foundations are based on benchmarks, mathematical models like CRDT, etc. Thanks to a higher abstraction level based on multiple layers, a Decentraland Protocol can now be defined with spec documents. The main outcome of this will be the breakthrough of different paths that enable the setting up of new clients in an easier way.

*For more information and documentation, visit the following links:

SDK7 Manifesto
ECS7 Template
SDK7 feature parity with SDK6

In the next few days I’ll be sharing with you a status update over some of these specific axes, and I’m intended to do this periodically to keep you posted and get some feedback from the community.

Any comments or suggestions are welcome!

11 Likes

Thank you for the update. Looking forward to this release!

2 Likes