Collisions and NPCs


Is there currently any way to have NPC recordings that maintain physical properties? Right now they will play and loop based on the actions while recorder.js is playing, but if my avatar goes through them they disappear. Is there a way to make them stop and wait for the collision to be removed? If we had more than 1 person in the domain and I ran that script would it capture all of them? Or only the one being controlled by the computer in which the app was running?


Record.js only records the user who is using the record script.

It will not however maintain any physical properties, as it creates an assignment client that plays back a stored skeleton data, and voice data via script on an Entity, which bounding box is the physical attributes it has (which is by default, off).


Is there any other kind of NPC option that includes physical properties of some sort?


Short answer:

You can turn on collisions of a model Entity, but not so much on recordings. You can use that information to make an entity that follows the npc around as a hitbox.

Long Answer:

Physics are driven on rendering clients, and cannot be simulated by things in the background by the server, thus all physics actions must be done by who ever is present. Using that information, lets deduce abit more info:

Record.js creates an Assignment-client run Entity “Recording”, that is controlled by a script. These are always going to be collisionless and do not have the same gradually as Entities. Think of these of Ghosts or Echos instead of NPCs. You could technically have a modified version of this script that creates collidable mesh, but this is not ideal for NPCs as is. Youd need to modify it more to your need.

You can create Assignment-client run “Avatars”, but this is an expensive operation and hasnt been done in a while.

You can also make entities follow recordings at their exact location to cause them to have an area of presense other than visual, aka a collision box.

You can also get joint information, and have entities follow those to have more accuracy in a physics joint.

However do note that if the object in question is “playing an animation”, instead of having the joints manipulated by a script, the positions will be at what ever the script has set the joints to be at.

However you currently cannot do any of that without having someone write a script for that.