رفتن به محتوا

Sprite cloning problems in level editor - clones disappearing and count multiplying

این محتوا هنوز به زبان شما در دسترس نیست.

💡 Having trouble with Scratch block assembly? Don’t know how to implement code logic? 🚀 Get Help Now

LB

LevelBuilder_Sam

Posted on July 21, 2025 • Intermediate

🎮 Level Editor Clone Problems

Hello everyone! I’m working on a level editor for my game and running into serious cloning issues:

The Problems:

  • 🔄 Previous clones disappear when I create new ones
  • 📈 Clone count multiplies exponentially: 1 → 3 → 7 → 15 → 31 → 63 → 127 → 255 → 300
  • 📝 My clone list fills up with the same pattern

My Setup:

I split the cloning into two sprites:

  • Item Selector: For selecting items to clone
  • Item Clones: For creating the actual clones

Item Selector Code:

when I receive [Add Sprite]
set [Recent Sprite] to (costume [name])
go to (mouse-pointer)
show
Add (Recent Sprite)

Add Block Definition:

define Add (Sprite)
wait until <not<mouse down?>>
forever
repeat until <mouse down?>
go to (mouse-pointer)
end
set [Clone X] to (x position)
set [Clone Y] to (y position)
set [Clone Dir] to (direction)
set [Clone Size] to (size)
set [Clone Costume] to (costume [number])
broadcast [Create Clone]
repeat until <not<mouse down?>>
go to (mouse-pointer)
end
end

Item Clones Code:

when I receive [Create Clone]
show
go to x: (Clone X) y: (Clone Y)
create clone of (myself)
hide
go to [back] layer

Clone Startup:

when I start as a clone
switch costume to (Clone Costume)
set size to (Clone Size) %
point in direction (Clone Dir)
add (join (Recent Sprite) (join [|] (join (size) (join [|] (join (x position) (join [|] (join (y position) (join [|] (direction))))))))) to [Clone List]
forever
show
end

What am I doing wrong? The clones keep disappearing and the count keeps multiplying! 😫

CE

CloneExpert_Maya

Replied 45 minutes later • ⭐ Best Answer

I see the problem @LevelBuilder_Sam! This is a classic clone management issue. Here’s what’s happening and how to fix it:

🔍 Root Cause Analysis

The exponential growth pattern (1→3→7→15→31…) indicates that clones are also executing the cloning code. Each time you create a clone, it also starts listening for the “Create Clone” broadcast!

📊 Problem Flow

flowchart TD A[Original Sprite] -->|Creates Clone 1| B[Clone 1] A -->|Receives broadcast| C[Creates Clone 2] B -->|Also receives broadcast!| D[Creates Clone 3] C -->|Clone 2 created| E[Clone 2] D -->|Clone 3 created| F[Clone 3] E -->|Also receives broadcast!| G[Creates Clone 4] F -->|Also receives broadcast!| H[Creates Clone 5] style A fill:#e1f5fe style B fill:#fff3e0 style C fill:#f3e5f5 style D fill:#ffebee style E fill:#fff3e0 style F fill:#fff3e0 style G fill:#ffebee style H fill:#ffebee

✅ Solution 1: Use Clone Detection

Add a variable to distinguish between the original sprite and clones:

    when flag clicked
set [is clone v] to [false]

when I start as a clone
set [is clone v] to [true]

when I receive [Create Clone v]
if <not <(is clone) = [true]>> then
show
go to x: (Clone X) y: (Clone Y)
create clone of [myself v]
hide
go to [back v] layer
end
  

✅ Solution 2: Better Clone Management

Here’s a complete rewrite of your cloning system:

    // In Item Selector Sprite
when I receive [Add Sprite v]
set [Recent Sprite v] to (costume [name v])
set [placing mode v] to [true]
show
repeat until <not <(placing mode) = [true]>>
go to (mouse-pointer v)
if <mouse down?> then
set [Clone X v] to (x position)
set [Clone Y v] to (y position)
set [Clone Dir v] to (direction)
set [Clone Size v] to (size)
set [Clone Costume v] to (costume [number v])
broadcast [Create Clone v]
wait until <not <mouse down?>>
end
if <key [escape v] pressed?> then
set [placing mode v] to [false]
end
end
hide
  
    // In Item Clones Sprite
when flag clicked
set [is original v] to [true]
hide

when I start as a clone
set [is original v] to [false]
switch costume to (Clone Costume)
set size to (Clone Size) %
point in direction (Clone Dir)
go to x: (Clone X) y: (Clone Y)
add (join (Recent Sprite) (join [|] (join (Clone Size) (join [|] (join (Clone X) (join [|] (join (Clone Y) (join [|] (Clone Dir))))))))) to [Clone List v]
show
forever
// Clone behavior here
end

when I receive [Create Clone v]
if <(is original) = [true]> then
create clone of [myself v]
end
  

✅ Solution 3: Advanced Clone Limit

Add clone counting and limits:

    when flag clicked
set [clone count v] to [0]
set [max clones v] to [100]

when I receive [Create Clone v]
if <<(is original) = [true]> and <(clone count) < (max clones)>> then
create clone of [myself v]
change [clone count v] by [1]
end

when I start as a clone
// Clone setup code here

// To delete a clone
define delete this clone
if <(is original) = [false]> then
change [clone count v] by [-1]
delete this clone
end
  

🎯 Key Points to Remember

  • Always use clone detection - distinguish original from clones
  • Only let the original sprite create clones - prevents exponential growth
  • Implement clone limits - prevents performance issues
  • Clean up properly - delete clones when needed and update counters

This should fix both the disappearing clones and the exponential count growth! 🎉

LB

LevelBuilder_Sam

Replied 1 hour later

@CloneExpert_Maya This is incredible! 🤯

I never realized that clones were also executing the broadcast receivers. The clone detection solution worked perfectly - no more exponential growth and all my clones stay visible!

Thank you so much for the detailed explanation and multiple solutions! 🙏

GameDev_Pro

Replied 2 hours later

Great solution @CloneExpert_Maya! 👏

For anyone building level editors, here are some additional tips:

  • Use lists efficiently: Store level data in a structured format
  • Implement undo/redo: Keep a history of actions
  • Add visual feedback: Show clone outlines when placing
  • Optimize performance: Hide off-screen clones

Level editors are complex but super rewarding to build! 🎮

VB

Vibelf_Community

Pinned Message • Moderator

🚀 Master Advanced Cloning Techniques!

Excellent discussion on clone management! For those ready to build sophisticated level editors and game systems, our community offers guidance on:

  • 🏗️ Advanced level editor architectures
  • 🔄 Complex clone management systems
  • 💾 Save/load level data efficiently
  • 🎨 Professional UI/UX design patterns

📚 Related Topics

Ready to create professional-quality games and tools? Get expert guidance from our experienced tutors in the Vibelf app!