def METHOD_NAME(self, mode=None):
    boids_settings = dict(
        use_flight = False,
        use_land = True,
        use_climb = True,
        land_speed_max = U(0.5, 2),
        land_acc_max = U(0.7, 1),
        land_personal_space = 0.05,
        land_jump_speed = U(0, 0.05),
        bank = 0,
        pitch = 0,
        rule_fuzzy = U(0.6, 0.9)
    )
    if mode is None:
        mode = np.random.choice(['queues', 'goal_swarm', 'random_swarm'])
        logger.debug(f'Randomly chose ant_swarm_settings {mode=}')
    if mode == 'queues':
        boids_settings['rules'] = [
            dict(type='FOLLOW_LEADER', use_line=True, queue_count=100, distance=0.0),
        ]
    elif mode == 'goal_swarm':
        boids_settings['rules'] = [
            dict(type='SEPARATE'),
            dict(type='GOAL', use_predict=True),
            dict(type='FLOCK')
        ]
    elif mode == 'random_swarm':
        boids_settings['rules'] = [
            dict(type='SEPARATE'),
            dict(type='AVERAGE_SPEED'),
            dict(type='FLOCK')
        ]
    else:
        raise ValueError(f'Unrecognized {mode=}')
    return dict(      
        particle_size=U(0.02, 0.1),
        size_random=U(0.3, 0.7),
        use_rotation_instance=True,
        lifetime=bpy.context.scene.frame_end - bpy.context.scene.frame_start,
        warmup_frames=1, emit_duration=0, # all particles appear immediately
        emit_from='VOLUME',
        mass = 2,
        use_multiply_size_mass=True,
        boids_settings=boids_settings
    )