Skip to content

Fixing clone spawning issues and 300 clone limit problems

💡 Struggling with clone management and game performance issues? Need help debugging your Scratch projects? 🚀 Get Debug Help

CM

CloneManager_Pro

Posted on January 25, 2024 • Beginner

🔄 Clones not spawning after certain point

Hey everyone! I’m working on a simple collection game where you collect shapes, but I’m running into a weird issue. After playing for a while, the shapes just stop spawning completely! 😕

I know about the 300 clone limit in Scratch, but my clones should be deleting themselves when collected, so I don’t think that’s the problem. Here’s what’s happening:

  • Game starts fine, shapes spawn normally
  • After collecting maybe 50-100 shapes, new ones stop appearing
  • No error messages, just… nothing spawns
  • Player can still move around normally

Has anyone encountered this before? What could be causing the spawning to just stop? 🤔

CD

Clone_Detective

Replied 1 hour later • ⭐ Best Answer

@CloneManager_Pro I bet I know exactly what’s happening! This is a super common issue. Let me explain the clone limit problem and how to fix it:

🔍 Understanding the 300 Clone Limit

Scratch has a hard limit of 300 clones total. The issue isn’t just with your collectible shapes - it’s likely other clones that aren’t being deleted properly!

flowchart TD A[🎮 Game Starts] --> B[Create Shape Clones] B --> C[Create Effect Clones] C --> D[Create Trail Clones] D --> E{Player Collects Shape} E -->|Yes| F[Delete Shape Clone ✅] E -->|No| G[Shape Stays Active] F --> H{Effect/Trail Deleted?} H -->|No| I[❌ Hidden Clones Accumulate] H -->|Yes| J[✅ Proper Cleanup] I --> K[Clone Limit Reached: 300] K --> L[🚫 No New Clones Can Spawn] G --> M[Continue Game Loop] J --> M M --> N{More Shapes Needed?} N -->|Yes| B style I fill:#ffebee style K fill:#ffcdd2 style L fill:#f44336,color:#fff style J fill:#e8f5e8

🕵️ Common Hidden Clone Culprits

1. Player Afterimage/Trail Effects:

    // BAD - Afterimages never delete
when I receive [create afterimage v]
create clone of [Player Trail v]

when I start as a clone
set [ghost v] effect to (50)
repeat (10)
change [ghost v] effect by (5)
end
// Missing: delete this clone
  

2. Particle Effects:

    // BAD - Particles accumulate
when I receive [explosion v]
repeat (20)
create clone of [Particle v]
end

when I start as a clone
repeat (30)
move (5) steps
change [ghost v] effect by (3)
end
// Missing: delete this clone
  

3. Broadcast Issues:

    // BAD - All clones receive broadcast
when I receive [cleanup v]
if <touching [Player v]?> then
delete this clone
end
// Problem: Non-touching clones stay!
  

✅ Proper Clone Management Solutions

1. Always Delete Clones When Done:

    // GOOD - Proper afterimage cleanup
when I start as a clone
set [ghost v] effect to (50)
repeat (10)
change [ghost v] effect by (5)
wait (0.1) seconds
end
delete this clone // Essential!
  

2. Use Specific Conditions for Deletion:

    // GOOD - Targeted cleanup
when I receive [cleanup shapes v]
if <(sprite type) = [collectible]> then
if <<touching [Player v]?> or <(y position) < [-180]>> then
delete this clone
end
end
  

3. Implement Clone Counter for Debugging:

    // Add to main sprite
when green flag clicked
set [active clones v] to [0]

when I receive [clone created v]
change [active clones v] by (1)

when I receive [clone deleted v]
change [active clones v] by (-1)

// In each clone:
when I start as a clone
broadcast [clone created v]

when I receive [delete me v]
broadcast [clone deleted v]
delete this clone
  

4. Emergency Clone Cleanup System:

    // Add this to prevent clone limit issues
define emergency cleanup
if <(active clones) > [250]> then
broadcast [emergency cleanup v]
wait (0.5) seconds
end

when I receive [emergency cleanup v]
// Delete oldest/furthest clones first
if <(distance to [Player v]) > [300]> then
delete this clone
end
  

5. Efficient Spawning with Limit Check:

    define spawn collectible
if <(active clones) < [280]> then
create clone of [Collectible v]
else
// Wait or cleanup before spawning
emergency cleanup
wait (0.1) seconds
if <(active clones) < [280]> then
create clone of [Collectible v]
end
end
  

🔧 Quick Debugging Steps

1. Add a clone counter display to see current clone count

2. Check all sprites that create clones, not just collectibles

3. Look for missing “delete this clone” blocks

4. Test broadcasts - make sure only intended clones respond

    // Debug display
when green flag clicked
forever
go to x: (-200) y: (150)
say (join [Clones: ] (active clones))
end
  

The most common cause is afterimage/trail clones that set their ghost effect to 100 but never delete themselves. They become invisible but still count toward the 300 limit! 👻

PE

Performance_Expert

Replied 30 minutes later

@Clone_Detective Excellent analysis! I’d add that broadcast efficiency is crucial too:

    // INEFFICIENT - All clones check every broadcast
when I receive [recycle v]
if <touching [edge v]?> then
delete this clone
end

// EFFICIENT - Use specific broadcasts
when I receive [recycle collectibles v]
if <(sprite type) = [collectible]> then
if <touching [edge v]?> then
delete this clone
end
end
  

This prevents unnecessary processing and makes debugging much easier! 🚀

CM

CloneManager_Pro

Replied 1 hour later

@Clone_Detective @Performance_Expert You guys are lifesavers! 🙌

It was exactly the afterimage clones! I had player trail effects that were setting ghost to 100 but never deleting. Added the “delete this clone” block and now everything works perfectly!

The clone counter was super helpful for debugging too. Went from 300+ stuck clones down to just the active ones. Game runs so much smoother now! 🎮✨

VB

Vibelf_Community

Pinned Message • Moderator

🔧 Master Scratch Debugging & Optimization

Great problem-solving on clone management! Ready to tackle more advanced debugging and optimization challenges? Our experts can help you with:

  • 🐛 Advanced debugging techniques
  • ⚡ Performance optimization strategies
  • 🔄 Efficient game loop design
  • 📊 Memory management best practices

📚 Related Debugging Topics

Ready to become a Scratch debugging expert? Get personalized guidance from our development specialists!