Enhance your workflow
Extend your web-based content creation with powerful tools to super charge your development process.
Solar Tools SDK
Elevate your PlayCanvas development with the Solar Tools – a powerful, feature-rich toolkit for ultimate creativity!
A plug and play hardware instancing solution that can easily reduce the draw calls in any PlayCanvas project to the minimum required.
Tired of watching your frame rate drop after adding too many models to your game?
GPU instancing automatically groups all models by their mesh and material to reduce the number of draw calls rendered to the minimum.
No need to setup batch groups and assign them manually, all models will be automatically instanced on runtime.
Supports both Model and Render components with all of their properties for dynamic lighting (static lightmaps are not supported).
Changing any component property on runtime will update the instancing groups automatically, no need to regenerate batch groups!
Level of Details
Your models can now include easy to use level of details by simple tagging the entity name with a suffix “_LOD2”.
It’s that simple! The instancing script will automatically toggle on/off the corresponding level of detail against the active camera.
You can set both global LOD distance levels, and optional local, per model, levels.
Cell based Frustum Culling
Using the PlayCanvas per entity frustum culling solution can lead to massive performance drop for large number of entities.
Works great with the Painter to quickly spawn massive amounts of models without hindering performance.
Custom Update Frequency
You can set a custom update frequency per cell to reduce the overhead of updating them per frame.
This provides a significant performance boost when using large numbers of instances.
Control Rendering Per Layer
You can easily specify what each instance renders per layer giving you fine control of your rendering pipeline.
For example increase performance by rendering a lower quality model, or even a billboard for water reflections or the shadow pass.
Are you rendering a mini map? Use a different material color for your real time map generation.
It will identify any model or render component that doesn’t support instancing e.g. skinned models or UI elements and skip them.
At the same time it can work in parallel with PlayCanvas CPU batching so you can get the best of both worlds, if you require it so.
You can easily exclude any entity by using a special tag and also control with layers should be excluded completely.
Together with Editor Scripting, works in the editor, too!
Physics component system
When the instancer is consuming data directly from either the editor painter or a terrain distributor, it can directly create physics bodies without the need to create entities.
That way you can add thousands of static bodies to your game with great performance.
Hardware Occlusion Culling
Leveraging WebGL 2.0 hardware queries, a plug-and-play system is provided to easily set up your occluders and occludees for runtime occlusion culling to improve performance.
A powerful system that can work with multiple occluders (batching is supported to minimize draw calls) and occludees manages the visibility state of one or more objects.
Custom events can be fired on each occludee for use in gameplay-specific logic.
Easily add zones inside the PlayCanvas editor using regular box collision shapes.
The GPU Instancer will automatic toggle any referenced objects on/off based on the position of the active camera, to increase performance by controlling when areas of your world render.
A fast and extensible solution to get beautiful terrains rendered both in the PlayCanvas editor and on runtime.
Fully Parameterized World
Terrain generation can be fully random or you can control the seed.
That way you can generated seeded random terrains and provide limitless variations for your players.
By using the same seed you can generate the exact same random terrain on any client.
Works in a Web Worker
All terrain generation happens in a web worker so the main thread isn’t being blocked at all.
The worker will transfer only the required values to generated the terrain mesh using transferrable objects. That avoids big stalls and large memory allocation when generating terrains.
You can easily generate multiple terrains on the background even on low end mobile devices.
Level of Details
You can easily generate any number of LODs required by your application.
The Terrain Generator uses a special library to reduce the number of triangles rendered (RTIN terrain mesh generation).
All LOD variations will be generated in the web worker. They work seamlessly with the GPU Instancer on runtime.
You can feed the terrain generator a grayscale heightmap, instead of using procedural generation.
All terrain features works seamlessly with heightmap based terrains.
Advanced Noise Patterns
Three unique noise textures can be used to control various aspects of the terrains presentation, making it look natural and unique.
A noise variation texture can help break the visual pattern that seamless textures generate.
A border noise texture gives you fine control on how texture channels blend with each other.
A diffuse noise texture can provide additional detail on the final channel pixel color.
Procedural Object Distributor
A powerful object distributor that can procedurally spawn entities and objects on the terrain is provided.
Using a fast BVH raycasting solution it can accurately spawn huge number of objects on your terrain.
You can control their position by using the terrain color, height range, slope angle and even an optional valid surface (objects can spawn on top of other objects).
Using the GPU Instancer you can spawn huge numbers of models to cover your terrain like grass and rocks.
Works in the web worker, too!
An advanced 3D pathfinder and crowd navigation system.
Runtime Navmesh Generation
Agent and Crowd Navigation
A number of advanced shader effects are provided to improve your rendering quality.
Advanced Water Effect
Planar Reflections & Refraction
Day and Night Skybox
You have full control over all atmospheric scattering values to achieve the right sky for your game.
The skybox renders a cubemap that can be used for IBL (image based lighting) and provide realistic lighting to your scene.
The current time can be easily set via a property or smoothly animated.
An easy to use script that can add one or more wind channels to any material in your scene.
It can use UV (UV0 or UV1) or World based coordinates to create an animation curve for the effect.
You can add random wind gusts and control the frequency and amplitude of the effect.
An optional object interaction toggle is available that can bend the polygons on the Y direction against a list of referenced objects. Works great to simulate how vegetation is affected when players pass by.
Surface Blend Color
Add a surface color tint to any material. The surface color is being rendered to a texture so it can include any layers of your choice e.g. terrain, rocks etc.
Works great for grass and low vegetation to make it visually integrated to the terrain. But also for any other model that sits on a terrain like surface.
Supports adding any number of optional animated noise channels that can simulate effects like clouds shadows.
A surface blending option is provided that can blend only part of the model’s surface with the underlying terrain surface. Blending both color and normal is provided to make models smoothly blend with any surface.
Vegetation Player Interaction
A vertex shader based effect to make selected materials bend when an entity walks close by.
It’s super easy to enable and have control of which entities should interact with it.
Alpha Distance Fade
Smoothly fade out any material after a certain distance from the active camera.
Works great for vegetation to smoothly fade out the grid cells of the last LOD.
Brightness and Contrast
A battle tested solution to enable editor scripting for any PlayCanvas script.
Simple to use in Editor
The Editor browser extension will parse each editor enabled script when the editor loads and execute them.
Write your own tools for the PlayCanvas editor or simple view the result of your runtime scripts in editor.
Editor Script Methods
Optional script methods can be used in any editor enabled script to add editor only functionality:
Editor Facing Custom UI
You can easily add buttons or any other custom HTML to any script instance.
The Editor Painter script uses the same functionality for its Paint, Erase and Save buttons.
Update and Physics
The Editor browser extension enables automatic update of the pc.Application render loop allowing all of your editor enabled scripts to update like they do on runtime.
At the same time it enables execution of Ammo.js in the editor to easily add raycasting support and any other physics related simulation in editor.
Editor Painter (preview)
A powerful editor extension to easily paint large numbers of entities in your PlayCanvas projects.
Click and Drag Brush
The script will automatically raycast to find a valid point on top of a rigid body surface. The entity will be placed with accuracy and if required aligned to the surface normal.
Easily control the number of entities to spawn, the distance between each brush stroke and if required add randomization for rotation and scale.
Easily add variation to your brush strokes by including any number of template entities.
The brush will randomly select a template from that list on each stroke to spawn an entity from.
If you are painting large number of objects like grass, the painter script can spawn them directly in a .JSON data file to be loaded on runtime.
This way you can paint thousands of objects with a few brush strokes while the PlayCanvas editor continuous to perform smoothly.
A plug and player networking solution to easily get started with live networking in your PlayCanvas projects.
Plug and Play
Easily drag and drop the Multiplayer scripts in your scene and get networking on any Player Controller.
You can setup a simple Colyseus server using our ready to deploy template and enjoy all the merits of networking.
Spawn any number of server rooms to organize your players.
If required any client can connect to more than one rooms.
There are no hard limits at the maximum number of connected clients. Scale your server as little or as much you like!
If required by your game to add anti-cheat mechanisms and server side prediction, you can easily do so by adding your own code in the server.
Stream video to any 3D surface and to all connected players. Multiple sources supported:
– Web camera
– Screen share
– External cloud provider
3D Spatial Audio
Using the powerful Agora SDK and streaming services to get crystal clear performant voice chat between multiple players.
An ever growing library of drag and drop, physics enabled, player controllers.
Third Person Controller
A powerful third person controller that can walk, run, jump and swim with keyboard, mouse and touch input.
The controller includes animations compatible with Mixamo and Ready Player Me skeletons and can be easily extended to support any other.
Ready Player Me
The avatars are fully working with the Player Controllers. Animation, networking, input controls work out of the box.
Find out more about Ready Player Me here.
Virtual Touch Joystick
An easy to use virtual joystick that can be used for visualizing touch input.
Virtual Reality (VR)
The controller works out of the box in Virtual Reality when a VR headset is connected.
Looking around using your head and also moving using the VR joystick is fully supported.
The controller works seamlessly when entering and leaving VR mode.
PlayCanvas CPU based skinning comes with a performance hit. Our Animation LOD system enables a massive performance increase to continue using regular animated characters with no changes.
Automatically reduce the playback frame rate based on distance level of details.
Frustum culling support for disabling playback on non visible models.
Animation Curve Paths
Easily create animation paths in editor with full control over the generated curve. Preview the animation in editor and make changes on the fly. Animate any entity, even cameras and players.
Define triggers and as soon as any player steps in, it will be automatically animated on the path.
Use it to create automatic transitions between your levels, works with multiplayer scenes too!
THE WEB-FIRST GAME ENGINE
Collaboratively build stunning HTML5 games and visualizations
HTML5 Social MMO
Aritelia is a procedurally generated persistent online world where you can explore, build and play with your friends.
Aritelia is a unique web based experience featuring an enormous open world. A vast archipelago of million of unique islands which you can visit with your friends.
It uses our Solar Tools and serves as a test bed for pushing our technology ahead. Aritelia is in active development by our studio.