Skip to content

How do you make a clone go to another clone?

💡 Struggling with complex clone interactions? Need help with AI behavior systems? 🚀 Get Expert Help

EC

EvolutionCoder92

Posted on July 27, 2025 • Advanced

🧬 Clone Communication in Evolution Simulator

Hey everyone! I’m working on this evolution simulator project where creatures need to find and eat food. Both creatures and food are clones, and I’m having trouble making them interact properly.

Here’s what I need to achieve:

  • Creatures detect when they’re hungry
  • They search for the nearest food clone
  • Move towards and “eat” the food
  • Handle multiple creatures competing for food

I’ve been stuck on this for days! Any help with clone-to-clone communication would be amazing! 🙏

AS

AdvancedSimulator

Replied 15 minutes later • ⭐ Best Answer

Great project idea @EvolutionCoder92! Clone-to-clone interaction is definitely tricky but totally doable. Here’s a comprehensive solution for your evolution simulator:

🎯 System Architecture

The key is using shared lists to track all clone positions and implementing a distance-based search algorithm:

flowchart TD A[🚀 Game Start] --> B[Initialize Position Lists] B --> C[Create Food Clones] C --> D[Create Creature Clones] D --> E[🔄 Main Loop] E --> F{Creature Hungry?} F -->|No| G[Random Movement] F -->|Yes| H[Search for Food] H --> I[Calculate Distances] I --> J[Find Nearest Food] J --> K{Food in Range?} K -->|No| G K -->|Yes| L[Move to Food] L --> M{Reached Food?} M -->|No| E M -->|Yes| N[Eat Food & Reduce Hunger] N --> O[Remove Food Clone] O --> E G --> E style A fill:#e1f5fe style B fill:#f3e5f5 style H fill:#e8f5e8 style N fill:#fff3e0

📊 Step 1: Position Tracking System

First, create shared lists to track all clone positions. This is the foundation of clone communication:

    when flag clicked
delete all of [Food X Positions v]
delete all of [Food Y Positions v]
delete all of [Food IDs v]
set [Next Food ID v] to [1]
  

🍎 Step 2: Food Clone Behavior

Each food clone reports its position continuously:

    when I start as a clone
set [My Food ID v] to (Next Food ID)
change [Next Food ID v] by [1]
add (My Food ID) to [Food IDs v]
add (x position) to [Food X Positions v]
add (y position) to [Food Y Positions v]

forever
replace item (My Food ID) of [Food X Positions v] with (x position)
replace item (My Food ID) of [Food Y Positions v] with (y position)
end
  

🦎 Step 3: Creature AI System

Here’s the main creature behavior with hunger-driven food seeking:

    when I start as a clone
set [Hunger v] to [0]
set [Energy v] to [100]

forever
change [Hunger v] by [1]
change [Energy v] by [-0.5]

if <(Hunger) > [50]> then
// Search for nearest food
set [Closest Food ID v] to [0]
set [Smallest Distance v] to [1000]
set [Search Index v] to [1]

repeat (length of [Food IDs v])
set [Current Distance v] to ([sqrt v] of (((item (Search Index) of [Food X Positions v]) - (x position)) * ((item (Search Index) of [Food X Positions v]) - (x position))) + (((item (Search Index) of [Food Y Positions v]) - (y position)) * ((item (Search Index) of [Food Y Positions v]) - (y position))))

if <(Current Distance) < (Smallest Distance)> then
set [Smallest Distance v] to (Current Distance)
set [Closest Food ID v] to (item (Search Index) of [Food IDs v])
end

change [Search Index v] by [1]
end

// Move towards food if found
if <(Smallest Distance) < [100]> then
set [Target Index v] to [1]
repeat (length of [Food IDs v])
if <(item (Target Index) of [Food IDs v]) = (Closest Food ID)> then
glide [0.5] secs to x: (item (Target Index) of [Food X Positions v]) y: (item (Target Index) of [Food Y Positions v])
stop [this script v]
end
change [Target Index v] by [1]
end
else
// Wander randomly if no food nearby
glide [1] secs to x: (pick random [-200] to [200]) y: (pick random [-150] to [150])
end
else
// Random movement when not hungry
glide [2] secs to x: (pick random [-200] to [200]) y: (pick random [-150] to [150])
end
end
  

🍽️ Step 4: Food Consumption System

Handle eating and food removal:

    // Add this to creature clone script
when I start as a clone
forever
if <touching [Food v]?> then
set [Eaten Food ID v] to [0]

// Find which food was touched
set [Check Index v] to [1]
repeat (length of [Food IDs v])
if <(distance to x: (item (Check Index) of [Food X Positions v]) y: (item (Check Index) of [Food Y Positions v])) < [20]> then
set [Eaten Food ID v] to (item (Check Index) of [Food IDs v])

// Remove from lists
delete (Check Index) of [Food IDs v]
delete (Check Index) of [Food X Positions v]
delete (Check Index) of [Food Y Positions v]

// Broadcast to delete the food clone
broadcast (join [delete food ] (Eaten Food ID))

// Reduce hunger
change [Hunger v] by [-30]
change [Energy v] by [20]

play sound [eat v]
stop [this script v]
end
change [Check Index v] by [1]
end
end
end

// Add this to food clone script
when I receive (join [delete food ] (My Food ID))
delete this clone
  

⚡ Step 5: Performance Optimization

For better performance with many clones:

    // Limit search frequency
when I start as a clone
forever
// Only search every 30 frames (0.5 seconds)
if <((timer) mod [0.5]) < [0.1]> then
// Run food search logic here
end

// Quick movement updates every frame
if <(Hunger) > [50]> then
point towards x: (Target X) y: (Target Y)
move [2] steps
end
end
  

This system creates realistic creature behavior where they actively hunt for food when hungry and wander when satisfied. The shared lists allow all clones to “see” each other’s positions! 🎮

EC

EvolutionCoder92

Replied 45 minutes later

@AdvancedSimulator This is absolutely incredible! 🤩 The shared list approach is genius - I never thought of using lists for clone communication!

I implemented your solution and it works perfectly. My creatures are now hunting food like real animals. One question though - how can I make them avoid each other to prevent clustering?

AS

AdvancedSimulator

Replied 20 minutes later

@EvolutionCoder92 Great question! For creature avoidance, add this to your creature AI:

    // Add creature position tracking
when I start as a clone
set [My Creature ID v] to (Next Creature ID)
change [Next Creature ID v] by [1]
add (My Creature ID) to [Creature IDs v]
add (x position) to [Creature X Positions v]
add (y position) to [Creature Y Positions v]

// Avoidance behavior
define avoid other creatures
set [Avoidance X v] to [0]
set [Avoidance Y v] to [0]
set [Nearby Count v] to [0]

set [Check Index v] to [1]
repeat (length of [Creature IDs v])
if <not <(item (Check Index) of [Creature IDs v]) = (My Creature ID)>> then
set [Distance v] to ([sqrt v] of (((item (Check Index) of [Creature X Positions v]) - (x position)) * ((item (Check Index) of [Creature X Positions v]) - (x position))) + (((item (Check Index) of [Creature Y Positions v]) - (y position)) * ((item (Check Index) of [Creature Y Positions v]) - (y position))))

if <(Distance) < [50]> then
change [Nearby Count v] by [1]
change [Avoidance X v] by (0 - ((item (Check Index) of [Creature X Positions v]) - (x position)))
change [Avoidance Y v] by (0 - ((item (Check Index) of [Creature Y Positions v]) - (y position)))
end
end
change [Check Index v] by [1]
end

if <(Nearby Count) > [0]> then
change x by ((Avoidance X) / [10])
change y by ((Avoidance Y) / [10])
end
  

This creates natural flocking behavior while maintaining the food-seeking AI! 🐟

VB

Vibelf_Community

Pinned Message • Moderator

🧬 Advanced Simulation Techniques

Excellent discussion on clone interactions! For those wanting to create even more sophisticated simulations, consider implementing:

  • 🧠 Neural network-based creature AI
  • 🧬 Genetic algorithms for evolution
  • 🌍 Environmental factors and seasons
  • 🦎 Predator-prey relationships
  • 📊 Population dynamics tracking

📚 Related Advanced Topics

Ready to create the next generation of evolution simulators? Get expert guidance from our advanced programming tutors!