- Durable and personalized furniture

It was released a few months ago but hey, I guess it’s never too late to publish a project made with PlayCanvas.

This website is all-around personalized furniture. Almost every product is in 3D with a lot of things that can be configured. I believe there are several millions of possible configurations. And, it’s the same configurator for every product, so everything is loaded on the fly based on different parameters.

I’m proud of this work. Thanks to @yaustar, @Leonidas also @will and other members of this great community for your help with so many questions on this forum.


That looks amazing @Mystik, great work, many thanks for sharing it!

Very polished and professional looking! I’m also working on a product configurator, something I’ve found that really boosts performance is disabling and running on camera movements and accessory updates.

1 Like

Congrats - great work, @Mystik!

I have some feedback. Your app takes quite a long time to load. Some tips:

You don’t appear to be using GZIP content encoding (in other words, you are not serving assets GZIPed/compressed). For example, let’s load your app and look in Chrome Dev Tools with cache disabled:

I’ve selected the Network tab and I’ve sorted on file size. The two biggest files are:

  • mastercode (1.2MB)
  • playcanvas-stable.min.js (1.0MB)

If I GZIP these files, I get:

  • mastercode (88KB)
  • playcanvas-stable.min.js (287KB)

So just serving those two files GZIPed, you save your users 1.8MB of download. You should enable GZIP compression for: JSON, JS, HTML, CSS. Other file types that PlayCanvas apps often include that compress nicely are: DDS, KTX, WASM, TXT, GLSL (but I can’t see any of those in your project).

Can you optimize some of your images? For example, each of these thumbnails is 500x500 and up to 343KB(!)

You have 4 images called:

  • cuge_cmbu_txbuon_chpx1_remi.jpg (456KB)
  • cuge_cmbu_txbuon_chao1_remi.jpg (444KB)
  • cuge_cmbu_txbuon_chdi1_remi.jpg (444KB)
  • cuge_cmbu_txbuon_chop1_remi.jpg (440KB)

That’s nearly 2MB just for these. And they look very similar. Do they all need to be loaded? And if not, they can definitely be optimized.

If I filter on .js files, I see this:

55 of 164 requests are JavaScript files. Did you forget to check ‘Concatenate Scripts’ when downloading your PlayCanvas app from the Editor? You should aim to reduce the overall number of HTTP requests made by your app!

Anyway, these are just a few observations. I suspect there are lots more. For example, I recommend this page in the docs:

I hope you find this useful.