**Effects**: Anaglyph, cross-eyed and parallax barrier. **Scenes**: add and remove objects at run-time; fog **Cameras**: perspective and orthographic; controllers: trackball, FPS, path and more **Animation**: armatures, forward kinematics, inverse kinematics, morph and keyframe **Lights**: ambient, direction, point and spot lights; shadows: cast and receive **Materials**: Lambert, Phong, Standard, smooth shading, textures, PBR and more **Shaders**: access to full OpenGL Shading Language (GLSL) capabilities: lens flare, depth pass and extensive post-processing library **Objects**: meshes, particles, sprites, lines, ribbons, bones and more - all with Level of detail **Geometry**: plane, cube, sphere, torus, 3D text and more; modifiers: lathe, extrude and tube **Data loaders**: binary, image, JSON and scene **Utilities**: full set of time and 3D math functions including frustum, matrix, quaternion, UVs and more **Export and import**: utilities to create Three.js-compatible JSON files from within: Blender, openCTM, FBX, Max, and OBJ **Support**: API documentation, public forum **Examples**: Over 150 files of coding examples plus fonts, models, textures, sounds and other support files
Ranked in these QuestionsQuestion Ranking
Pro Powerful assets pipeline
Assets and content delivery is very different on a web platform comparing to native. So PlayCanvas challenges best practices to allow developers decide how their content is delivered and in what form.
Async Assets download allows developers to load content as the app goes, instead of asking to download all assets in advance risking users to simply navigate away while staring at loading screens.
Formats for 3D models and textures support covers all the popular tools. And the workflow is as simple as dragging and dropping your files right into the Assets Panel. The cloud will do the rest of the hard work optimizing and converting your files into runtime-friendly and compressed data.
Pro Rendering engine runs on the browser
Has an advanced WebGL renderer that runs in the browser.
Pro Real-time collaborative online editor tool
PlayCanvas has an online editor that lets you build scenes and work with other people in your team in real-time. This is all done through the web browser without having to install any additional software.
Pro Avoids having to download lots of textures for lightmaps
Lightmaps are an efficient way to deliver lighting to your scenes for a long time. But they come with the cost of large textures. PlayCanvas offers a unique solution for a web platform, it renders lightmaps when an app is loading in runtime.
This is faster than downloading MBs of textures. And it's much more convenient: simply switch your light sources to bake, and static models to be lightmapped, and the engine will do the rest.
Pro Friendly and active community
PlayCanvas has Feed as homepage for registered users, listing Dev Logs of other developers. This allows to socialize with other developers like yourself in a twitter-like environment.
More to that, there is also an active forum, where developers help each other to solve their challenges.
Developers of PlayCanvas itself are always looking forward to chat and help the community with any problems that may arise.
Pro Integrated physics engine
PlayCanvas lets users integrate physics in their game rather easily, using the powerful Bullet Physics Engine (ammo.js). Should also be noted that the physics engine is delivered as an optional library, so by default being disabled it does not add any extra download size to your apps.
Pro Open source
PlayCanvas is fully open source and is under active development.
Pro Has a free tier
Engine is free for projects under 200MB and with no more than 2 people on a team. The free tier has no engine restrictions.
Tools are totally free too. There are no special limiting features behind any paywalls, and free users have all the features as paid users.
There are no royalties associated with publishing your apps and games - you've made them, you own them.
It is free to publish to playcanvas.com as well, just by one click in Editor.
Pro Small app size
The engine itself weighs just under 150Kb, and it's always challenged to stay small. There is no extra weight that has to be carried with your app, just your assets and scripts in a runtime-friendly compressed form.
This allows users to engage with your content in matter of seconds, and even just under a second on a good connection.
Pro Has hot code reloading
Real-time link between your launched app and the editor allows the developer to preview and play with their scene without needing to refresh the game after every change in the code to see the updated result.
Pro Cross-platform support
PlayCanvas lets you build games that run in mobile, desktop browsers, and native mobile apps. PlayCanvas can even make games that can run inside mobile social media and instant messenger clients like Twitter and WhatsApp.
Pro Feature rich
Effects: Anaglyph, cross-eyed and parallax barrier.
Scenes: add and remove objects at run-time; fog
Cameras: perspective and orthographic; controllers: trackball, FPS, path and more
Animation: armatures, forward kinematics, inverse kinematics, morph and keyframe
Lights: ambient, direction, point and spot lights; shadows: cast and receive
Materials: Lambert, Phong, Standard, smooth shading, textures, PBR and more
Shaders: access to full OpenGL Shading Language (GLSL) capabilities: lens flare, depth pass and extensive post-processing library
Objects: meshes, particles, sprites, lines, ribbons, bones and more - all with Level of detail
Geometry: plane, cube, sphere, torus, 3D text and more; modifiers: lathe, extrude and tube
Data loaders: binary, image, JSON and scene
Utilities: full set of time and 3D math functions including frustum, matrix, quaternion, UVs and more
Export and import: utilities to create Three.js-compatible JSON files from within: Blender, openCTM, FBX, Max, and OBJ
Support: API documentation, public forum
Examples: Over 150 files of coding examples plus fonts, models, textures, sounds and other support files
Pro Helpful and friendly community
Thanks to the recently introduced forum, it is easy to find a community of helpful developers.
Pro Fallback canvas rendering
Three.js offers a canvas renderer as a fallback when WebGL is not available.
Pro Support for most industry standard file formats
Three.js has importers for most of the industry standard files format (obj, mtl, fbx, 3ds, gltf, collada, babylon, playcanvas, stl, vrml, draco and many more), making it easy to author assets in your favourite modelling software and import them for use them in three.js.
Pro Support for physically based rendering
With the introduction of the new MeshStandardMaterial, three.js support physically based rendering (PBR) out of the box allowing for real life quality material and lighting.
Pro Support for special effects and postprocessing
Three.js support many special effects and post-processing filters including particles, lensflare, sprites, real time reflection and refraction and even area based lighting.
Pro Hundreds of officially maintained plugins, extensions, control systems, importers, exporters and special effects
The core of the three.js system is kept to a minimum to reduce file size, however there are also hundreds of extensions maintained in the offical repo on github, along with many free textures, fonts and models. You can find them all here.
Pro Actively developed
Three.js has great project health, with activity on Github daily for bug fixes and new features.
Con Private projects are only available for premium users
The free tier does not support any private projects. Instead, all the code and assets will be hosted openly. While not a problem for open source games and for developers who intend to make an open source game, it can be a deal-breaker for teams who want to keep their code and assets private.
Con No collision offset
Con Not many tutorials
Con Poor garbage collection
Memory is quite slow to free up with Three.js, causing issues with the performance of the project.
Note: A lot of work on garbage collection has been done in the last couple of releases, so this may no longer be an issue.
Con Lack of versioning system means that the API changes frequently
Three.js releases a new revision about once a month, and the API can change at any time. This means that a lot of third party help found online is out of date.
Con Weak visual tools
Three.js has its own editor but it has been weakly developed. It does not support a lot of engine features.