I’ve worked with Unity a lot for at least 3 years and I’ve been using PlayCanvas for about a year and a half now, so I’d say I have a fair amount of experience using both engines.
As you said, PlayCanvas does not have all the features that Unity has, but then again you don’t necessarily need all those features in every game. PlayCanvas offers the most important features needed to make a good looking game, that will work in all devices. So let’s take it one by one:
- Entity / component system
This is very similar to the Game Object / component system in Unity where you have empty Game Objects with no functionality until you add components. One noticeable difference from Unity is the script component. In Unity all scripts are treated as different components. In PlayCanvas there is one script component that contains a bunch of scripts. Each script can expose attributes that you define in code (similar to Unity) so that you can edit them from the PlayCanvas Designer.
Other than that you can enable / disable Entities or individual components, create Entities programmatically etc.
PlayCanvas supports the most popular light types like directional, point, ambient and spot lights.
Most input devices are supported, like mouse, keyboard, game pads, touch etc.
Unity has Shuriken - PlayCanvas has simpler particle emitters like the ones used in the game Swooop and more advanced emitters are in development.
Like in Unity you can have 3D / 2D audio sources that support all the audio formats that are supported by browsers.
- Custom Shaders
If you want to write custom shaders, then in Unity you have to learn how to use ShaderLab. In PlayCanvas you write shaders in GLSL which is widely documented.
There’s a lot more features like that but let me get to the clear advantages of PlayCanvas:
Everything is stored in the cloud, your assets, your code, your projects etc. This means that they are safe from hard disk failures (I have been in game jams where a failed hard disk meant 40 hours of work went into the trash). Also it means you can access your projects and work on them from anywhere in the world and also from any device. No need to download a > 1 GB file etc…
PlayCanvas was built from the ground up with collaboration in mind. This means you can add people from all around the world to your project and work on it simultaneously (think of it like editing a document in Google Docs).
- Source Control
A thing that really bothered me while working with Unity was source control. First of all it is not clear how to structure source control with Unity so that it’s easy for everyone to collaborate, and also not push everything on the server. After 3 years I never found a satisfactory solution and instead just ‘lived’ with it.
In PlayCanvas you don’t really have to worry about that. If you want to use source control the only thing you need to have in your repository is your code. PlayCanvas has Github and Bitbucket integration so it’s very easy to set everything up.
Unity has all sorts of build targets and special cases. You have to develop with that specific build target in mind. In PlayCanvas everything is deployed to WebGL so it works on almost all devices now (iOS too since the latest update!).
In PlayCanvas when you publish something it is just a link. You can share it anywhere you want and the users who click on that link are instantly in-game. No need to download plugins, install software or anything like that. When your game is just a link, then it’s a lot easier for someone to click on it and have a look than if you have to install it on your machine. And in situations like game jams for example I always only look at games that have a web link instead of games I need to download and setup, just because I don’t want to go through all the fuss.
After Unity got so popular it became increasingly more difficult to get support when you’re having issues. There are still unanswered questions I asked in the Unity forum after years. This is natural, as you can’t keep track of everybody when there’s a gazillion questions. In PlayCanvas you get instant support from users and also from the actual developers. If you ask a question on the forums or the answers site you usually get an answer within a day.
You also get instant fixes because it is very easy for the site to be redeployed. In Unity the deployment process is naturally a lot more difficult. In PlayCanvas the fix can be deployed in hours after a question has been asked.
I hope this gives you more insight - there’s a ton of stuff I haven’t mentioned but this is already too long!