Eng:Cloning

Cloning is a feature that allows a sprite to create a clone, or semi-duplicate, of itself, while the project is running. This can be useful in tower defense games, for example, for a wave of objects. Clones of a sprite will be the same as the original, or parent sprite, but as a separate instance. Clones inherit the parent's scripts, costumes, sounds, and properties, but can then be modified. There is a limit of 300 clones per project to prevent excessive lagging or crashes, but 301 can be made.

Cloning Blocks
In Scratch 2.0, there are three blocks related to cloning. All can be found in the Control palette.

Create Clone of
create clone of [myself v]

This block will clone the sprite it runs in. Its version in the Scratch Day 2011 prealpha had no dropdown insert to select a sprite.

create clone // category=control

It is also possible to clone other clones recursively.

When I Start as a Clone
when I start as a clone

This Hat Block activates when a clone is created. It only runs in the newly created clone, not previous clones or the parent.

Delete This Clone
delete this clone

This Cap Block will delete the clone it runs in.

Duplicating Sprites
Not to be confused with cloning, sprites can be duplicated by two methods:


 * 1) Right click on a sprite in the sprites area or stage, and select "duplicate".
 * 2) Select the duplicate tool (looks like a stamp) above the stage area and to the left of the presentation buttons. Then click on the sprite you want to be duplicated.

This will make the new sprite appear in the new sprites area with all of the same costumes, scripts, and sounds.

Variable Usage
Variables for all sprites will be the same for each clone, but variables for this sprite only will be different for each clone.

Cloning in Scratch Mods
There are two different types of cloning implemented in different Scratch modifications. They are commonly referred to as "Panther-style cloning", and "BYOB-style cloning".

In Panther-style cloning, a clone inherits its parent's properties, but is only a clone of it, not a new sprite. Other sprites can sense the clones, using the Touching ? block, with the parent as its argument. The code for Panther-style cloning was actually implemented in Scratch 1.4, hinting that it was a planned feature, but wasn't added. Scratch 2.0 uses this style of cloning.

In BYOB-style cloning, a clone is a new sprite in the sprite list, with editable data all of its own. Clones are created with an Operators block "(clone)", which clones a sprite and reports a reference to it, which can then be used to control it.