Today marks a major milestone in the development of Construct! In the Construct 3 r95 beta release you can now try out the all-new Construct 3 runtime.
This is an early, alpha-quality release of the C3 runtime. This means you should expect bugs, issues and missing features. Consequently it is not enabled by default - you'll have to change some settings to try it out. We've got instructions below on how to give it a spin.
The reason we are making it available in this early state is because we've always believed in "release early, release often". Our approach to building the best quality software is to get something usable in to real customer's hands as soon as possible. Then we can continue to develop it with feedback from our users, helping ensure it's complete, reliable, and does everything our users want it to. This means by the time we fully launch it to everyone, we can be confident it's a mature feature that really works. It's also exciting to share this new project with the world! We don't want to bore you with long delays, and it proves it's not vaporware when you can try it out today!
The state of the C3 runtime
The C3 runtime has been rewritten from the ground up. The scope of the project is in a similar ballpark to rewriting the whole editor for the release of Construct 3 itself. This early release is incomplete. This is intentional: rather than make you wait for several months, we're releasing something that you can try out in a limited way today. This will help us squish the bugs and fill in any holes that we may have missed ourselves, giving us a head start on improving it. If we tried to release the finished thing in one go several months down the line, it would likely be far more buggy and unreliable, and take longer to get working properly.
Here is a brief summary of what is currently missing from the C3 runtime. We fully intend to implement everything listed here. It's just going to take us a while longer to finish it all. Expect to see updates to add these in future releases.
- Most essential built-in plugins are supported, but the following are not yet available in the C3 runtime: Facebook, Game Center, Geolocation, Google Play, Instant Games, Mobile advert, Mobile IAP, Multiplayer, NW.js, Pubcenter, Twitter, User Media, Windows Store, Xbox Live, XML
- There is no support for third-party plugins or behaviors yet. We need to update the addon SDK to support the C3 runtime. We're keen to do this soon to allow third-party developers to get a head-start on porting work.
- The debugger is not yet supported with the C3 runtime. We plan to completely rewrite this for the C3 runtime too, with more features and better support for things like breakpoints on any event.
- Exporting projects is not yet supported with the C3 runtime. There is a significant amount of additional work to support this. We hope to have it working in the near future. Besides at this point it is probably not suitable to try to publish work using an early experimental version of the runtime.
- The C3 runtime supports running in a Web Worker, as discussed in a previous blog post. However no browsers currently support this feature in their stable releases. We anticipate it will be supported soon in Chrome or another browser, at which point we'll also add a setting to experiment with that, too.
- Loader layouts and the loading screen are not yet implemented.
- The C3 runtime has had relatively little testing. Expect lots of bugs and issues!
Other than that, everything else is implemented - notably, all behaviors, all system and runtime features, and most of the essential plugins such as Sprite, Audio and Tilemap, other than the plugins listed above. Additionally, Remote Preview is supported with the C3 runtime, so you can try it out on mobile too.
If you run in to bugs, please file a bug report and mention that you're using the C3 runtime. Please take care to follow all the bug report guidelines - this will help make sure we can deal with the report efficiently, and will help us finish the C3 runtime sooner rather than later. Please be patient as we work through all the issues and missing features: it's a huge project and we expect it to be several months more work before it's ready for wider release.
How to try the C3 runtime
So, if you're willing to jump in to the new C3 runtime with the above caveats, here's how to try it out!
First of all, we've added a new setting called Enable experimental features. You must enable this before you can try it out. Choose Settings from the main menu, scroll down, and enable the checkbox for experimental features.
Close the Settings dialog. Now in your project, switch to Project Properties. You can do this by clicking the name of the project in the Project Bar. Expand the Advanced section. Inside this group is a new Runtime setting. You can switch to using the C3 runtime for this project by changing this setting.
When you switch the runtime setting, Construct checks if everything in the project is supported. If not, you'll see a message saying it could not switch the runtime, with a list of reasons why. For example if your project uses a plugin that is not yet supported in the C3 runtime, it will tell you which plugin that is. You'll either need to remove it from the project to try the C3 runtime (be sure to back up your project first!) or wait until a future release adds it.
Conversely, you may see a message when switching back to the C2 runtime. If you use features that are only available in the C3 runtime, such as the new BBcode text feature, then these will prevent you switching to the C2 runtime until they're reverted. Note that providing everything is compatible, you can switch back and forth between both runtimes - making it possible to try out your project with the new runtime and switch back if you run in to trouble.
If everything is supported, it will simply change the runtime property and no message will be reported. To help you identify when you're using the C3 runtime, the preview window caption will add "(C3 runtime)", as shown below:
Note that when you're using the C2 runtime, nothing is added to the caption. So if you don't see "(C3 runtime)" in the caption, it means you're using the C2 runtime. You can always double-check which runtime is set in Project Properties, too.
Once your project is set to use the C3 runtime, new settings and features will appear in the editor. (In some cases, missing features such as unsupported plugins may disappear, until support for them is added back.) For example you can try out the significantly faster engine performance, new text formatting features, WebAssembly-powered Physics and faster pathfinding, and other architectural improvements (except for the web worker support for the time being, as noted previously).
Where we go from here
Over time, we expect to fix many bugs, ensure everything is compatible with the C2 runtime, fill in the missing features, and add support for the C3 runtime to the addon SDK. This will likely take several months more.
When we're confident that all the built-in features are supported and working reasonably well, the next step is to enable the runtime project property by default. This will leave everyone using the existing C2 runtime, but allow anyone to opt-in to using the C3 runtime without first enabling experimental features.
The next step will be to make all new projects use the C3 runtime by default. This is essentially the full release of the C3 runtime. We probably won't ever force existing projects to switch to the C3 runtime, because it is difficult to guarantee they will be supported and work identically, especially if they use third-party addons.
Since we expect many projects will continue using the C2 runtime due to compatibility issues - particularly due to the use of third-party addons that may not be ported - we will keep maintaining the C2 runtime as well. In the very long term we would prefer to ultimately deprecate the C2 runtime, since having to maintain another runtime takes up our limited engineering time. However we don't want to leave existing users out in the cold - and for the time being the C2 runtime is still the primary runtime - so we will make sure the C2 runtime is supported with maintenance and bug fixes. However once the C3 runtime is the default for new projects, we'd encourage any existing projects to port over where possible.
The age of the C2 runtime makes it particularly difficult to add new features to. Combined with the fact developing two runtimes in parallel is a huge amount of work, our plan is to focus on only adding new runtime features to the C3 runtime. This does not completely rule out new features for the C2 runtime, and new editor features are likely to be applicable to both. However a major reason for developing a whole new runtime is to unlock a new tier of features, so expect to see a range of exciting new features only available in the C3 runtime in future. There are already some today, such as the text formatting features.
The new C3 runtime is a major new feature for Construct 3. This is a very early release, and we ask for your patience whilst we work out the bugs and issues. We expect things to be unstable at this point, which is natural with an early experimental release. We hope to make significant progress towards making the C3 runtime the default for new projects by the end of this year.
As with the jump from Construct 2 to Construct 3, there will likely be some long-term compatibility issues as we move from the C2 runtime to the C3 runtime. For example some third-party addons may not be ported to the C3 runtime, which will make it difficult to switch existing projects to the C3 runtime. Unfortunately to some extent such issues are unavoidable and necessary in order to make this leap to the next generation technology that will power Construct in to the future. We're sure the benefits will ultimately outweigh any compatibility headaches in the mean time. It's also why we will keep maintaining the C2 runtime, so you can choose whichever is most suitable for your project, although ultimately we will recommend new projects stick to the C3 runtime.
There are already major new features available with the C3 runtime today, as detailed in our past blog posts. Significant performance improvements, text formatting, WebAssembly physics, faster and multi-threaded pathfinding, and profound architectural improvements are already in place. We are excited to see how much more we can build on this stronger foundation. We'll have more updates over the coming weeks and months. Keep an eye on our blog and release notes and there will be plenty more to come!