PlayCanvas implemented the fantastic hardware texture compression workflow in 2016 which allowed users to build bigger and better WebGL apps, even on low memory devices like mobile phones.
JPGs and PNGs are great formats for transmission over a network because they tend to compress nicely. But once the images are downloaded and handed over to WebGL, they must decompressed to raw RGB(A) data. Using hardware compressed textures is important as decompression is performed in silicon on the GPU which avoids the need to utilize lots of memory.
This 4096 x 2048 Earth texture is a 1.81MB JPG but takes a huge 33.6MB of VRAM when uncompressed!
With hardware supported texture formats, we can retain a similar file size while massively reducing the amount of VRAM as seen below.
Now, what if you reduce file sizes as well as the VRAM usage?!
That is what Basis gives us and it is available right now to all PlayCanvas users! Compressing the same Earth texture above, produces a 521KB Basis Texture.That’s a 68% saving over the smallest file size from the hardware supported formats 💪
Basis is an open sourced, texture codec that produces a highly compressed intermediate file format (.basis) that can be converted at runtime to a format that the hardware supports in GPU hardware. This means that there is only a single (and often smaller) file that is created to support a wide range of platforms.
As shown by the numbers above, Basis offers huge savings in download times for the end user which in turn, can lead to improved user engagement and click to open metrics for your application.
Let’s check out a real world example. The Space Base Texture Compression Demo from our previous blog article achieves the following VRAM usage and download sizes (gzipped) on desktop in Chrome:
Note that VRAM usage for Basis would ordinarily be the same as with legacy compression. However, PlayCanvas compresses normal maps to YYYX format instead of XYZ for improved quality so utilization is marginally higher.
That’s a big saving of 52% (19.5 MB) in download size from updating the project to use Basis while using a similar amount of VRAM!
And all it takes is a couple of clicks in the asset inspector to get started with Basis compression!
Only need one compressed file vs many (DXT, PVR, ETC1, ETC2, etc) for every texture
Up to 2.8 times smaller files and faster download times for your users
Up to 10x faster compression times with Basis
Similar savings in VRAM usage as hardware supported formats
Same one click process to compress textures
Basis texture compression is available to everyone right now so start crunching down those textures! More information can be found in the documentation including a migration guide.
And if you’re new to PlayCanvas, why not sign up today. We can’t wait to see what you make! Let us hear your feedback in the forums!
PlayCanvas has a pretty cool (but not widely known about) feature that allows you to copy and paste entities and entity hierarchy between two instances of the Editor. This can save a lot of time, particularly when setting up new projects.
Many of you have requested the ability to do the same with assets. Well, we listened – and now you can! 🚀
So if you need to grab some assets from another project, no more need to download from Project A and then upload to Project B. Just copy and paste in seconds, directly from project to project.
This makes it super easy to share reusable code and assets with your team and the rest of the PlayCanvas community, especially in combination with the recent launch of Templates to setup preconfigured Entities.
Use the context menu or the Ctrl/Cmd + C and Ctrl/Cmd + V hotkeys to copy assets across to your projects. 💪
The PlayCanvas team is super excited to announce the Editor support of glTF GLB conversion with model and animation imports.
This gives developers an order of magnitude reduction in load times compared to the JSON format while keeping similar gzipped download size.
Using the Stanford Dragon model (2,613,679 vertices, 871,414 triangles), we can compare GLB and JSON parse times on a Macbook Pro 16 inch.
The JSON format took over 3 secs just to parse the data, a peak memory usage of ~498 MB and a gzipped package size of 28.1MB.
GLB speeds ahead taking only 0.193 secs which is 17x faster, uses a peak of ~25.2 MB of memory and a gzipped package size of 25.7MB 🚀!
That’s a huge saving in time and means applications will become snappier and more responsive to users, especially for content heavy games and product showcases.
We will be deprecating the use of JSON and the default format that model and animations files. Newly created projects will default to converting to GLB and in existing projects, this can be enabled in the projects settings:
If you would like to replace your current JSON assets with GLB, the User Manual has more information about the process to migrate over.
The conversion to GLB supports the importing of multiple animations in a single FBX which will help improve content workflows.
Remember our awesome glTF 2.0 Viewer? That is now integrated into the Editor to inspect any GLB asset from the project. Just right and select ‘Open In Viewer’!
It’s finally here! The PlayCanvas team is very excited to announce the public release of our new Templates feature! 🎉
Templates allow you to create preconfigured entities with all the values and child hierarchy as an asset reference.
This is a huge workflow boost as managing and changing objects in a scene is now easier and faster to do. New instances of the Template can be placed in the scene with the Editor. These instances have a link to the Template asset, so any changes to the asset will change the instances in the scene too.
Now we are able to change and update many scene entities via a single asset which is a welcome change from the tedious manual updating of multiple entities across multiple scenes.
Other features of the Template system also include:
Adding instances in the Scene editor (including drag and drop support of template assets to the Hierarchy panel)
Overriding properties on a per instance basis
Nested Templates which allows referencing a Template in another Template
Creating a new instances via code from an asset reference
In terms of how they can be used, we have been beta-testing the feature since early 2020 (big thanks to all those that have given us feedback and bug reports 🙏) and some of the use cases we’ve seen so far include:
Designing and creating sections of an infinite runner game
Managing UI screens and instantiating them at runtime
Different enemy types that a script can reference to randomly generate a level
As you can see, Templates give you a wide range of flexibility of workflow options to manage and modify content in your projects.
Creativity makes our world a better place. PlayCanvas unlocks creativity through collaborative, frictionless tools that enable everybody to build, share and play together.
With PlayCanvas, getting started with game development is as simple as clicking on a hyperlink. No installation, available wherever you have access to a browser and easily shareable for a real-time collaborative workspace.
Until today, some aspects of the platform have been limited or restricted. This just holds back the creativity of our community. So today, we have some incredibly exciting news. We have updated our plans to make our tools even more accessible for everyone at all levels!