Skip to main content

PlayCanvas Engine Hits 2.0.0

Β· 4 min read

Today marks a major milestone for the PlayCanvas Engine, the open-source JavaScript runtime that powers thousands of interactive graphical apps and tools on the web. We are bubbling with excitement to announce the release of version 2.0.0!

For the full details, visit our GitHub:

RELEASE NOTES

It's not every day we do a major version bump of the Engine. Let's take a walk down memory lane to see how we got here:

Back in 2018, the Engine was bumped to 1.0.0 because we adhere to semantic versioning which dictates:

If your software is being used in production, it should probably already be 1.0.0. If you have a stable API on which users have come to depend, you should be 1.0.0. If you’re worrying a lot about backward compatibility, you should probably already be 1.0.0.

With hindsight, the Engine should probably have reached 1.0.0 some years before. It had long been stable and was already being used heavily in production!

Why Bump to 2.0.0​

Semantic versioning says that you perform a major version bump when you introduce breaking changes. To say we go out of our way to avoid introducing breaking changes in an understatement. But since 1.0.0, we had done 73 minor versions along with countless patch releases. Along the way, the Engine accumulated a considerable amount of "cruft".

cruft noun INFORMAL - COMPUTING

badly designed, unnecessarily complicated, or unwanted code or software.

It was getting to the point where parts of the codebase were restricting our ability to advance the Engine's capabilities. And so, we took to the decision to do a spring clean. 🧹 Here are some highlights of what we removed:

  • WebGL 1 support. This is the big one. Today, devices that support WebGL 1 but not WebGL 2 is less than 2% and this number is only going to get smaller. And supporting WebGL 1 was making it extraordinarily difficult to construct the foundations we needed in order to support WebGPU. Cheerio, WebGL 1 - it's been fun! πŸ‘‹
  • Scripts 1.0 support. The very first ScriptComponent implementation was deprecated with the introduction of Scripts 2.0 back in 2016. So after 8 years of deprecation, it's gone! We are now focused on delivering our new ESM-based scripting system, due soon.
  • AudioSourceComponent. This component was the precursor to the Engine's SoundComponent. AudioSourceComponent has been deprecated for many years so it's time for it to go.
  • ...and several other public API symbols. What we are left with is a cleaner, tighter codebase that can power us into the future!

What if my Project Breaks​

Never fear! Today's release is more relevant to 'Engine-only' users who pull the engine from NPM. At a time of their choosing, these developers can upgrade to 2.0.0 and give it a try. The vast majority of projects will update without modification.

Editor users will gain access to Engine 2.0.0 in the coming weeks. At that point, moving to 2.0.0 will be opt in for existing projects. We plan to support the last Engine 1.x release in the Editor for at least a year after Engine 2 becomes available. This should be plenty of time for developers to migrate. New projects will automatically use 2.0.0. We will release more information about the transition for Editor users in the coming weeks.

In the meantime, we ask NPM users to try Engine 2.0.0 and give us your feedback as soon as you can. We hope you like it! Head over to the Forum, Discord or GitHub to have your say. πŸ‘‚

What's New​

The 2.0.0 release isn't just about breaking changes! We have some exciting features to announce by way of some brand new Engine examples:

Engine 2 Examples

Check 'em out:

Thanking the Open Source Community​

We could not have reached this point without the amazing open source community:

GitHub Contributors

Thank you for your incredible contributions. πŸ™