# Puppet
Puppets are the basis for most characters in Dreams. They give us procedural walking, and basic actions like jumping.
The puppet object is like a group, and so uses the same scope rules and controls. When scoped in, shows a circular purple base with a point toward the “front” of the puppet. We can tweak this base or the puppet object itself to adjust the puppet’s settings.
This object can only be created by importing one of Media Molecule’s puppets and editing it.
Normally puppets have a puppet rig: sculpts jointed together to form a skeleton the puppet object can animate. (Tg)
We can also use the Stretch tool (without editing the sculpt itself) to quickly adjust the proportions of the puppet. (Mm) (See the Character Art tutorial.) And add objects to body parts by using the auto-grouping functionality. (Mm)
The puppet is told to move in different ways by sending signals into any Puppet Interface gadget that is inside the puppet object.
You can turn a regular puppet into a first-person puppet. By making the head invisible, adjusting its controller sensor’s camera distance, and turning on the “face camera” setting. (Tg)
While a puppet is possessed and the camera view is too close to it, it will fade out and disappear so that the view is not obscured. (Tg)
# Puppet Mirror: When scoped into a puppet group, this context menu button toggles the puppet mirror feature.
When on and manipulating linked body parts, the opposite body part will be manipulated in a flipped way across the central line of the puppet’s chest object. (Tg) (Eg. moving the right hand up will move the left hand to the same height.)
# Memory: Costs 0.0326% of the things limit per object. Costs 1 of 256 of the unique stamped elements limit per kind of Mm puppet imported.
Performance: Procedural animation and collision costs on performance, and so has a limit to how many full puppets can function at once.
Procedural Animation
“Procedural” animation is animation based on rules concerning how the puppet is moving, if they are on a surface, etc.
This means that even if the puppet object is animated around the place, those same rules are in place and the animation still works.
With all procedural settings on, the puppet will be animated in the following ways:
- Idle: While on the ground and not moving, the puppet will transition to the original pose of the character.
- Walking: While moving, the puppet will animate a walk cycle. Works the same while “running”.
- Flying/Jumping: While not on the ground, the puppet will have poses and animations dependent on if it is moving up, down, or not moving.
- Looking: Turning the head and torso to look towards the imp and tags within the scene.
These procedural animations can be further finessed by the tweak menu settings on the puppet object. And by using a Puppet Interface to animate the poses to animate from, and the tweak menu settings.
# Mm Blank Puppets
There are different kinds of puppet Media Molecule has created that we can import from the gadgets menu. (Mm) For each of them, the sculpts used for the limbs on their left side are live clones of the limbs on their right side, and flipped.
This makes it easy to edit the body part sculpts and create a whole new character, without having to edit both sides.
These can all be built from scratch with the tools and a puppet object.
Blank Puppet (Basic)
Tan colour body parts (like wood or clay).
Has a running pose, and audio-surface sensitive sound effects for jumping, landing, and footsteps.
Left stick or Secondary Gyro to walk and run. Use Cross to jump. Controller gyro to lean/twist. Use Circle to de-possess.
Respawns the puppet when it has no health, or when it has fallen out of the scene.
Blank Puppet (Deluxe)
Also has an idle pose, and jump poses for ascent, peak, and descent.
When its Level Complete tag is detected, triggers a victory pose and a camera shot that blocks controls and the imp.
While possessed, “Follow me,” “Look at me,” and “Possessed puppet” tags are powered.
Unless possessed, auto jump is on and follow is on.
Blank Sliding Platforming Puppet
A small Chibi-style character. Settings are adjusted for a tighter platforming experience. A “Sliding Behaviour” chip has been added allowing the puppet to slide on its back down slopes that are steep enough.
Click here to View on Indreams.me.
# Quick Edit
At the bottom of the Overall Movement, Upper Body Movement, and Lower Body Movement tabs is a “Quick Edit” menu. The state corresponding to whichever is lit up will be previewed, making it easy to adjust things as you see its effect.
If a keyframe is powered by the corresponding output from the Puppet Interface, you will start recording into the keyframe created first.
While time is running, previews the state in motion while not moving the puppet. (Tg)
The menu is a Selector with the following options:
# Flipping Issues
When a puppet has been flipped, it can then respawn at an odd angle before righting itself. To fix this, unflip the puppet. (Tg) Instead, clone and flip the limbs. Scope into the torso group and flip everything inside it, things like that.
# Overall Movement Tab
# Walk Speed, Run Speed
For movement under its own power (not falling, sliding, or being shoved by physics forces), the higher of the two settings is key. I'll refer to this as the “Max Speed.”
The puppet is told to move by signals going into the Puppet Interface gadget’s Walk input, from a range of 0 - 1. When that signal is at 1, the puppet will accelerate to max speed. At a lower percentage signal, the puppet will accelerate/decelerate to that percentage of max speed. (Tg)
# Turn Speed
How fast the puppet turns whenever it tries to turn.
At 0, the rotation of the puppet is not controlled in any way.
Because of this, if a puppet was rotating when suddenly control was cut and the rotation speed set to 0, the puppet may continue to rotate. To slow the rotation in these cases, use a Rotator with 0 speed and high damping to slow the puppet's rotation.
# 2D Movement
When on, normal puppet controls can only move the character left and right parallel to the X axis of the scene.
Note that pushing up or down on the stick to walk is still possible, but the up/down component of the direction is ignored. Because of this, when the player pushes the stick not perfectly right or left, the puppet will move slower in that direction. To snap it to full speed left or right, logic may be used to construct a fake stick direction. (Tg)
The plane of movement allowed for the puppet is the Z plane at whatever depth the puppet was the moment this setting was turned on.
Works similarly to a setup using a follower, which can be used for any object—not just puppets. (Tg)
# Face Camera While Idle
When on, the puppet will turn towards the camera while possessed and idle.
# Face Camera Direction
When on, the puppet will turn away from the camera while possessed to face the same direction the camera is facing.
# Acceleration, Deceleration
How quickly the puppet increases its speed. And how quickly the puppet reduces its speed either to slow down, or change direction.
# Jump Height
The height of a full jump.
A jump is triggered by a signal being sent into a Puppet Interface gadget’s Jump input.
Note that if gravity is set to 0%, the puppet will be unable to jump.
The jump and double-jump could be made completely custom by implementing it using a mover, and the animations will work just as normal. (Tg)
# Min Jump Height
The minimum height relative to the Jump Height setting. As the jump signal continues, the puppet will keep getting higher to a maximum of Jump Height.
For example, Cross button is wired to tell the puppet to jump using a puppet interface. If the player taps Cross button for as short a time as they can, the puppet will reach the “minimum jump height.” If the player holds Cross button until the puppet reaches the top of their jump, the puppet will reach “jump height.”
# Double Jump Height
When at 0, has no effect.
When at a positive distance, how high the puppet will double-jump in the air, if it has not already double-jumped since it left the ground.
When the puppet stands or runs on the ground, this will be reset and it is able to double-jump again.
There is no way of resetting this through logic. Logic can be created to make your own double jump for a more custom mechanic. (Tg)
# Gravity
How much effect the global gravity of the scene will have on the puppet.
Commonly set to > 100% for a more tight, arcadey feel.
# Air Control
How much the puppet’s direction can be controlled while in the air through a Puppet Interface gadget’s Walk input.
For example, if set to 0%, while the puppet is in the air any input by the player will not affect the puppet’s trajectory.
If the player tries to steer the puppet and it is moving faster than its run speed, it will slow down. If that is undesired, we can turn up the run speed while it’s meant to be moving fasterin the air, turn down the deceleration setting. Or we can block the input going into the puppet interface’s “Walk”.
# Walkable Slope
The puppet will slide off of ground that is steeper than this value.
# Sliding Friction
When the puppet is sliding down a slope it cannot walk up, how fast the puppet will slide down it. Or, how “slippery” the slope appears to be.
# Camera Follow When Sliding
When on, the camera will follow the puppet as it slides down an incline. It will also not be considered to have fallen out of the scene, while sliding.
When off, the camera will not follow the puppet vertically when sliding.
# Lower Body Movement Tab
# Slideyness
While accelerating, the legs’ procedural animation will act as though it is moving at some percentage of full speed. So if it takes a while to get going and the puppet has high slideyness, it will appear as though it is running on the spot. (Tg)
# Skateyness
Reduces the effect of the legs’ procedural animation. (Tg)
# Match Floor Angle
While supported by a sculpt, how much will the puppet’s pelvis tilt (and therefore the rest of the puppet in most circumstances) to match the angle of the sculpt’s surface. High means the puppet will appear perfectly perpendicular to the surface. Low means the puppet will attempt to stay upright. (Tg)
# Lean Into Strength
How much the puppet will lean into a turn. Low means it will stay upright. High means it will lean hard into any change in acceleration. (Tg)
# Feet Separation
How far apart the feet will be when walking or running. Low means the puppet will walk one foot directly in front of the other. (Tg)
# Bicycle Feet
How much the feet move in a circular motion while walking, as if pedalling a bicycle. (Tg)
# Stompyness
How high the feet get at the extremes of each stride. (Tg)
# T-Rex Tread
When on, the feet will move up slowly, and quickly slam down to the ground. (Tg)
When off, the feet will move up quickly and slowly sink to the ground.
# Strideyness
How large each stride is. Low strideyness means the puppet will take tiny steps. (Tg)
# Min. Stride Time
The minimum time each stride takes. Ensures the steps don’t get too short and quick for a larger, heavier, slower character. (Tg)
Also useful to ensure the puppet doesn’t step too quickly while strafing left or right. (Tg)
# Centre of Gravity
Moves the hips’ at-rest position up or down. (Tg)
# Bounciness
How much the pelvis is moved down when a foot hits the ground. Negative will move the pelvis up when the foot hits the ground. (Tg)
# Upper Body Tab
# Motion Sensor Movement
How much the lean input of the puppet interface affects the lean of the puppet. (Tg)
# Lean Lag
How far the head can tilt from Motion Sensor Movement (which comes from the Lean input), before the rest of the body begins to tilt with it. (Tg)
# Sassyness
How much the shoulders and hips rotate in opposite directions to each other while walking. (Tg)
# Sway
How much the puppet leans side to side from the hips as steps are taken. (Tg)
Better with higher foot separation or a wider pose for the feet.
# Lumberingness
How much the shoulders lean side to side as steps are taken. (Tg)
# Stiffness
How much the spine (specifically, joint between the belly and chest) ignores procedural animation—affecting animations that turn the head and the spine and body follows. (Tg)
# Arm Vigour
How much the arms rotate forward from the hands while walking. (Tg)
# Arm Flail
How much the arms rotate at the shoulders while walking. (Tg)
# Springiness
How floppy the joints are. Similar to joint springinessbut does not affect the joint settings themselves. (Tg)
# Breathyness
How much the puppet is affected by the breathing rhythm of approximately 3.8 seconds (from starting to breathe in, to breathing out completely and starting a new cycle). (Tg)
# Anticipate Turn
How quickly the head turns faster than the body, when the puppet turns. (Tg)
# Body Structure Tab
If a part is not associated, it will appear faded.
If a part is associated or it cannot lead back through other properly linked parts to the pelvis it will not be affected by the procedural animations and the button will appear greyed out.
At least one heel must be correctly set up for the arms to procedurally animate.
Unless a body part is set as a body part, it will simply respond physically in an uncontrolled way and “ragdoll.” However, these buttons and associations cannot change during play. Therefore, to have a character “ragdoll,” another ragdolling object must replace it. (Tg)
# Behaviour Tab
# Auto Jump
When on and moving across the ground towards a hole that the puppet can jump over at its current speed and jump height setting, it will jump.
# Auto Look
If there is no tag target found for the Look At setting, the head will look towards the imp while the imp is close enough and in front of the head. (Tg)
# Follow, Inner Radius, Outer Radius
When on, the puppet will move towards the closest powered Tag with the correct name within range until it is within the minimum distance. (Tg) (Tg)
The tag is not considered “detected” while being targeted by this setting.
To make a puppet flee from a tag instead of follow it, Follower and Rocket Rotator gadgets can be used instead. (Tg)
While on, the radius settings are also active:
A Tag must be inner < tag distance < outer to be targeted by the follow behaviour.
# Turn Towards, Outer Radius
When on, the puppet will turn to face the closest powered tag with the correct name within range. The “front” of the puppet is denoted by the point of the purple base within the puppet group.
Overrides the received Turn to Face direction.
When on, uses the radius setting:
A Tag must be tag distance < outer radius to be targeted by the Turn Towards behaviour.
# Look At, Outer Radius
When on and Auto Look is on, the puppet’s head will turn to look at the closest powered tag with the correct name within range. (Tg)
When on, uses the radius setting:
The maximum distance a tag can be from the puppet to be targeted.
# Procedural Animation
When on, allows procedural animation to work. (Tg)
# Procedural Walk
When on, walking and running will be animated automatically, and Procedural Jump can work. (Tg)
# Procedural Jump
When on, jumping will be animated automatically. (Tg)
# Physical Properties Tab
A puppet has a special “pill” shape for the collision of a puppet used not for colliding with the ground but with other objects. To preview this shape, hover over any of the collision shape settings.
# Collision Shape: Vertical Position
How far up from the ground (purple base) the pill shape begins.
# Collision Shape: Height
How tall the pill shape is from end to end. As the width is a radius measured from the centre, the pill has a minimum height relative to the set width.
# Collision Shape: Width
The radius of the collision pill shape.
The shape of the bottom and top are half-circles with this same radius.
# Collision Labels Tab
# Labels & Ownership tab
# Volume & Channel
# Puppet Interface
Sends commands and receives data from the puppet group the gadget is inside.
Memory: Costs 0.0061% of the things limit per gadget.
# Inputs Tab
# Walk
Tells the puppet to move in a direction on the X-Z plane (not up and down). The signal's magnitude (distance from 0) is also used.
The target speed of the movement is the signal magnitude × puppet max speed. (Tg)
# Turn to Face
Tells the puppet a particular direction to face. (Tg)
Good for quickly making twin-stick controls. (Tg)
# Lean
Tells the puppet to rotate its head to a certain angle.
Commonly, the Controller Sensor gadget’s Motion Sensor setting is wired into this, allowing the player to tilt the controller to have their puppet look around expressively.
The signal is multiplied by the Motion Sensor Strength.
To turn this feature off entirely, remove the wire going into this setting.
# Go Forwards, Go Backwards
Tells the puppet to move in the direction it is facing or move backward away from the direction it is facing. The speed the puppet will actually move is dictated by its walk and run settings.
# Jump
Tells the puppet to jump.
# Outputs Page 1
# Jumped
Sends a pulse when the puppet jumps from on the ground because of an input into a puppet interface’s “jump”. The fat wire represents a collision with the surface the puppet left when jumping.
# Double Jumped
Sends a pulse when the puppet jumps again after jumping from the ground, if the settings allow a double-jump.
# Landing Impact
Sends a pulse when the puppet’s feet land onto a collidable surface.
Fall damage can be implemented using this. (Tg)
# Predicted Landing Impact
The force the puppet is predicted to land with. Useful for triggering effects in preparation for a hard landing.
# Fell Out of Scene
Sends a signal if the puppet has nothing below it within the scene’s maximum fall height that it can collide with.
# Distance from Ground
Sends the distance of the nearest object the puppet can collide with below the puppet, as a percentage of the containing Puppet’s Jump Height.
# Idle Strength
The puppet is considered “idle” while not moving, trying to move, or in the air.
Transitions to 1 while idle over roughly half a second. Transitions to 0 while not idle.
# Walking Strength, Running Strength
Walking Strength sends the percentage of the puppet’s walking speed the puppet is moving at, minus the running strength.
This means as you go faster you’ll approach 1 as the speed nears the walking speed. But if the puppet has a running speed greater than the walking speed, it will go back down to zero as it approaches the running speed.
Running Strength sends the percentage of the puppet’s running speed the puppet is moving at.
If the run is enabled, the puppet transitions between the base settings to running-keyframed settings based on the magnitude of the puppet interface’s walk input between 0.95 and 1.
These settings control the speed of the puppet based on the magnitude of the “walk” input on a corresponding puppet interface (I will refer to this as the “magnitude”). By default, that input is connected to the left stick on the controller that is possessing the puppet.
So if you push the left stick all the way to the outer edge on the controller, the magnitude is 1. If you let it stay in the centre, it is 0.
While moving, the maximum speed of the puppet is whichever is greater out of the walk and run speeds. This speed is modulated by the magnitude.
For example, at 0.97 magnitude it moves at 0.97 of its run speed. And at 0.5 magnitude it moves at half of the run speed. If the run speed is 10 m/s and the magnitude is at 0.5, the puppet will move at half of 10 m/s, which is 5 m/s.
While moving slower or equal to the set walk speed, the walk settings will be in effect. From above walk speed to the run speed, the settings will transition to the run settings. If the run speed is equal to or less than walk speed, the running settings will not come into effect.
For example, say the walk speed is 5 m/s, and the run speed is 15 m/s. The setting for “arm flail” is set to 0 for walking, and 100% for running. While the speed of the puppet is 10 m/s—halfway between its walk and run speeds—the arm flail will be at 50%—halfway between the walking arm flail and the running arm flail.
Note that in reality, this is most likely based on the magnitude value, and uses the ratio between walk and run speeds to figure out the transition. The explanation is still accurate, as the puppet speed and walk magnitude values are strongly linked.
The puppet interface’s walk/running strength outputs are also strongly linked to how this works internally.
# On Ground
Sends 1 if the puppet is standing on a collidable object. Sends 0 if the puppet’s feet are in the air. Sends something in between while walking.
# Left Heel Strike, Right Heel Strike, Foot Impact
Sends a signal for how close the puppet’s left heel, right heel, or both is to a surface the puppet can collide with.
# Outputs Page 2
# Velocity
The speed the puppet is moving, using the “local space” orientation.
# Acceleration, Deceleration
The acceleration and deceleration of the puppet.
# Lean Speed
The velocity of the puppet’s lean.
# Upper Body Movement
The velocity of the puppet’s upper body movement.
# Lower Body Movement
The velocity of the puppet’s lower body movement.
# Foot Scrape Amount
When the puppet has skateyness, sends a signal representing how much the feet are sliding across the surface.
# Jump Ascent, Jump Peak, Jump Descent
Sends values while the puppet is not on the ground, based on its upward velocity.
- Ascent: While it has positive velocity (moving up), sends 1. As the velocity decreases, sends a lower value.
- Peak: The closer the velocity is to 0, the closer the sent value is to 1.
- Descent: While it has negative velocity (moving down), sends 1. As the velocity increases to 0, sends a lower value.
# Sliding
Sends a signal while the puppet is sliding on a slope that is steeper than it can walk on.