An update on the implementation plans:
Implementing Alternative Explorers
The World Explorer is the principal client of the Decentraland protocol, by virtue of using the entire set of features and introducing requirements that drive the development of the underlying software.
Besides being the only complete implementation available, the current Explorer has known limitations, experienced by both users (e.g. performance) and developers (e.g. complexity). Some of these problems are intrinsic to the technology on which it’s built, others are the natural result of years of iterative development and difficult choices.
We’ll build three new implementations that rely on different frameworks and utilities, and can tackle these problems from a fresh start taking new approaches while armed with the accumulated lessons and discoveries of the Foundation.
The protocol documentation will be tested and refined as these efforts progress.
Implementation Goals
Each implementation will rely on a different stack, and have its own niche and set of goals.
-
Short-term, production-ready: aiming to become the most popular among players, this implementation would prioritize enhanced performance, distribution on game and app stores, broad reach for developers, and attention to legal licensing in today’s market.
-
Educational: new developers joining the Decentraland community can greatly benefit from an implementation that prioritizes readability and organization, easy addition of new features, widely known programming languages and simple tooling. This implementation is meant for humans to read, learn and discuss improvements to the protocol.
-
Moonshot: an idealistic and forward-looking implementation, based on technologies that are currently immature but hold great promise for the future. This project would prioritize solid fundamentals, extensibility, and the use of modern open-source frameworks.
We’ll use Unity for its short-term production potential, BabylonJS for the educational variant and Bevy for the long-term bet.
See Criterions for Engine Selection and the engine comparison table for more information on the selection process.
Unity: Production-Ready
Unity is a popular game engine that offers a number of advantages:
- Performance: Unity is designed to support high-performance gaming on a variety of platforms, including mobile, desktop, and console. This can help to ensure that games built with Unity run smoothly and provide a good user experience.
- Developer community: Unity has a large and active community of developers, which makes it easy to find support and resources when working with the engine. This can be particularly useful for developers who are new to game development or to Unity itself, and widens the recruitment field.
- Distribution and licensing: Unity is supported by a wide range of game and app stores, including the Apple App Store, Google Play Store, and Steam. This means that games built with Unity can be easily distributed to a large audience on multiple platforms, and its license is per-developer seat, not taking a fraction of revenue (unlike, for example, Unreal).
- Language safety and binary security: unlike lower-level frameworks, Unity uses a garbage-collected language and avoids the bug potential and security risks that come with C++ programs.
- Long-term support: Unity has been around for a long time, is actively maintained and improved, and there’s every reason to think this will continue to be the case.
It’s also worth mentioning that Unity is the engine of choice for building VR applications for both PCVR and standalone headsets.
BabylonJS: Educational
BabylonJS is a good choice for the educational implementation for several reasons:
- Code readability: BabylonJS is written in TypeScript, which is not only popular on its own but based on JavaScript. There are more developers using JavaScript than any other programming language. TypeScript provides features such as type checking, auto-completion and a language server that IDEs can use to help navigate the code.
- Easy to get started: by leveraging TypeScript/JavaScript, it is well-suited for developers who are new to game development, Decentraland or Babylon by virtue of reducing the learning curve.
- Scaffolding of new features: Babylon provides a number of built-in tools and features that help developers try out new functionality quickly. It comes with a scene editor, a physics engine, a particle system, and other utilities to accelerate the development process and reduce the amount of time and effort required to make changes or additions.
- Free and open source: unlike some of its AAA cousins, anybody can build with Babylon without expensive subscriptions or licensing agreements.
BabylonJS is a good choice for this category, even if it’s not going to be the most performant.
Bevy: Moonshot
Bevy is built on solid fundamentals, it’s free and open source, and considers high performance a priority. Some reasons for choosing Bevy:
- Solid fundamentals: Bevy is built on the Rust programming language, which is known for its strong emphasis on safety and reliability. This means that games built with Bevy are likely to be more stable and reliable, and to perform well even under heavy load.
- High performance: Bevy is designed to support high-performance gaming, with a low-level rendering engine and concurrent execution within its ECS system, which is one of the most advanced. This, along with the choice of Rust, helps ensure that games built with Bevy are highly performant, cache-friendly and generally run smoothly.
- Can become a production build: although relatively new, it has a strong and growing community of developers, and is actively being developed and improved. It has a good chance of becoming a viable option for production-level game development in the future, even if it is not realistic right now.
We can reasonably hope that, in a number of years, the Bevy implementation can become the default one and replace the closed-source Unity engine in production builds.