"use strict"; /** @type {Dictionary.} */ const settings = { cells : 40, position : "body", class_name : "xgravity", frames_per_second : 12, language : "espanol", show_fps : true, // Configuraciones de juego y pantalla canvas_quality : 100, action_key : "Space", background_mode : "procedural", // "image" | "stars" | "procedural" // Parámetros para fondo con imagen ("image") // bg_image_url : "https://images.unsplash.com/photo-1506703719100-a0f3a48c0f86?q=80&w=1600&auto=format&fit=crop", bg_image_url : "images/backgrounds/photo-1506703719100-a0f3a48c0f86.jpeg", bg_image_pan_speed_x : 5, // px por segundo (0 para totalmente estático) bg_image_pan_speed_y : 2, // Parámetros para el generador de estrellas ("stars") bg_stars_count : 140, bg_stars_size_min : 0.5, bg_stars_size_max : 2.2, bg_stars_speed_min : 0.1, bg_stars_speed_max : 0.6, bg_stars_dir_x : 0, // -1 (izq) a 1 (der) bg_stars_dir_y : 1, // -1 (arriba) a 1 (abajo) bg_stars_color : "rgba(186, 230, 253, {alpha})", // Paŕametros para fondo dinámico. bg_procedural_far_stars : { probablity : .96, size : [.2, .7], images : [ "images/game/Far-Star-1.webp", "images/game/Far-Star-2.webp", "images/game/Far-Star-3.webp" ] }, bg_procedural_nebulas : { probablity : .87, size : [3, 60], images : [ "images/game/Blue-Dust.webp", "images/game/Cold-Nebula.webp", "images/game/Dust.webp", "images/game/Grey-Asteroid-Dust.webp", "images/game/Hot-Nebula.webp", "images/game/Violet-Dust.webp", "images/game/Yellow-Dust.webp" ] }, bg_procedural_near_stars : { probablity : .21, size : [.5, 1.7], images : [ "images/game/Layer.webp", "images/game/Layer2.webp" ], }, bg_procedural_suns : { probablity : .32, timer : [2, 10], size : [10, 50], images : [ "images/game/Sun.fixed.webp", "images/game/Red-Giant.webp" ], }, bg_procedural_planets : { probablity : .17, size : [7, 30], images : [ "images/game/Ice-Giant.webp", "images/game/Gas-Giant.webp", "images/game/Exoplanet3.webp", "images/game/Exoplanet2.webp", "images/game/Exoplanet.webp" ] }, // Configuración del Dron / Nave drone_image : "images/game/Louse.webp", drone_size : 2.5, // Tamaño en celdas (ancho/alto en base al grid de 40 celdas) drone_gravity : 2.2, // Multiplicador de fuerza gravitatoria hacia el cursor drone_friction : 0.985, // Fricción / inercia en el vacío (0 = freno total, 1 = inercia infinita) // drone_max_speed : 25, // Velocidad máxima de seguridad en celdas/segundo // drone_force : 1.2, // Multiplicador de fuerza f // drone_max_speed : 28, // Límite máximo en celdas/segundo // Ajustes de física del dron drone_force : 3, // Multiplicador fx y fy drone_max_accel : 35, // Tope del acumulador ax y ay // Configuración del Escudo Activo drone_shield_drain : 25, // Consumo por segundo al mantener pulsado (0 a 100) drone_shield_recovery : 12, // Recuperación por segundo en reposo drone_shield_radius : 1.7, // Radio del escudo en celdas (alrededor del dron) // Alerta de Escudo Bajo en el Dron // drone_shield_low_threshold : 25, // Porcentaje a partir del cual salta la alarma (<= 25%) // drone_shield_alarm_interval : 0.75, // Intervalo de repetición del sonido de alarma (segundos) // drone_shield_beacon_speed : 6.0, // Velocidad de giro del girofaro (radianes/segundo) // Alarma de Escudo Bajo estilo Alien (Klaxon) drone_shield_low_threshold : 25, // Porcentaje crítico (<= 25%) // drone_shield_alarm_interval : 0.22, // Cadencia rápida de repetición (segundos entre pulsos) // drone_shield_beacon_speed : 9.5, // Girofaro acelerado al ritmo de la alarma drone_shield_alarm_interval : 0.26, // Intervalo ajustado a la longitud del pulso drone_shield_beacon_speed : 8.5, // Giro acompasado // Curvas dinámicas de Alerta de Perímetro / Salida de Zona drone_perimeter_safe_radius : 15.0, // Radio donde empieza la advertencia (celdas) drone_perimeter_critical_radius : 18.5, // Radio límite antes de perder la nave (celdas) drone_perimeter_alarm_interval_max : 0.7, // Intervalo al rozar las 15 celdas drone_perimeter_alarm_interval_min : 0.2, // Intervalo al borde del límite fatal // Gestión del Escudo del Dron drone_shield_recharge_time : 20.0, // Segundos que tarda en recargar de 0 a 100% drone_shield_kill_reward : 25.0, // Puntos de escudo recuperados al destruir un enemigo con el escudo drone_shield_drain : 25.0, // Consumo de escudo por segundo mientras está activo // Configuración de Enemigos enemy_spawn_rate : 1.6, // Frecuencia de aparición (en segundos) enemy_speed : 5.0, // Velocidad lineal en celdas por segundo enemy_size : 2.2, // Tamaño en celdas enemy_spawn_radius : 22.0, // Distancia radial de generación enemy_score_value : 100, // Puntos al destruir un enemigo con el escudo // Curva de dificultad y desbloqueo progresivo enemy_spawn_interval : 0.1, // Frecuencia con la que se tira el dado (en segundos) enemy_time_to_max_difficulty : 120, // Segundos hasta alcanzar el 100% del rango (0.11) enemy_min_threshold : 0.04, // Umbral inicial (solo estáticos al arrancar) enemy_max_threshold : 0.11, // Umbral máximo accesible // Configuración de Entrada Táctica y Sobrevuelo enemy_overflight_initial_scale : 120.0, // Escala inicial al sobrevolar desde atrás (ajústalo a tu gusto: 4.0, 6.0, 8.0...) enemy_overflight_scale_speed : 1.8, // Velocidad con la que desciende hacia el plano de juego // Duración de la retícula de triangulación táctica al aparecer cualquier enemigo (en segundos) enemy_target_lock_duration : 1.2, // Configuración de HUD de combate sobre enemigos enemy_show_health_bars : true, // Activar/desactivar barras de vida enemy_health_bar_width : 1.8, // Ancho de la barra en celdas enemy_damage_popup_duration : 0.75, // Segundos que dura el texto flotante de daño // Ajustes de sobrevuelo enemy_overflight_initial_scale : 26.5, // Escala inicial enemy_overflight_duration : 1.4, // Segundos exactos que tarda en alcanzar el plano 2D // Configuración general de sobrevuelo // Plantilla de enemigos enemies_roster : [ { id: "static_mine", // range: [0.00, 0.04], range: [0.07, 0.09], image: "images/game/Cricket-Snipper.webp", size: 2.0, mass: 5.0, // Pesada, se mueve poco al impactar health: 40, // Aguanta un toque suave o revienta si entras a toda velocidad spawn_mode: "deep_space", // Crece de 0 a 1 behavior: "static", points: 50 }, { id: "bouncer", range: [0.04, 0.07], image: "images/game/Mantis-Hull.webp", size: 2.2, mass: 2.5, // Masa media, rebota bien health: 60, spawn_mode: "perimeter", // Entra desde el exterior behavior: "bounce_screen", // Rebota en el área [-23, 23] accel: 5.5, // Potencia con la que acelera al salir del frenado turn_speed: 4.8, // Rapidez con la que vira su timón al borde points: 100 }, { id: "chaser", // range: [0.07, 0.09], range: [0.00, 0.04], image: "images/game/Scarab-Hull.webp", size: 1.8, mass: 1.8, // Ligera y ágil health: 30, // Frágil si la embistes con escudo spawn_mode: ["overflight", "deep_space", "perimeter"], behavior: "track_drone", points: 150 }, { id: "rusher", range: [0.09, 0.11], image: "images/game/Strange-Body.webp", size: 1.5, mass: 4.0, // Densidad alta: impacto como un misil health: 20, spawn_mode: "perimeter", behavior: "cross_screen", // Cruza a toda mecha points: 200 }, { id: "asteroid", range: [0.12, 0.16], // Array de imágenes aleatorias: image: [ "images/game/Grey-Asteroid-1.webp", "images/game/Grey-Asteroid-2.webp", "images/game/Grey-Asteroid-3.webp" ], size: 2.4, mass: 7.0, health: 50, spawn_mode: "perimeter", behavior: "cross_screen", mothership_damage: 25, // Daño directo base al casco points: 80 }, { id: "asteroid_thrower", range: [0.16, 0.19], image: [ "images/game/Locust-Hull.webp" ], size: 2.0, mass: 2.2, health: 45, spawn_mode: ["perimeter", "overflight"], behavior: "thrower_ai", turn_speed: 4.5, max_speed: 4.8, flee_distance: 7.5, points: 250 } ], // Configuración de Efectos de Explosión explosion_particles_range : [45, 75], // Número aleatorio de partículas [mínimo, máximo] explosion_particles_spread : 31.0, // Radio/fuerza de alcance de dispersión (celdas/s) explosion_shockwave_radius : 14.5, // Radio máximo de la onda expansiva en celdas explosion_volume : 3, // Volumen general de las explosiones (0.0 a 1.0) // Balanceo dinámico de la cúpula e inercia de cabina cockpit_drift_amount : 0.6, // Máximo desplazamiento en celdas por inercia del dron cockpit_sway_speed : 0.8, // Velocidad del balanceo pasivo de respiración // Screen Shake (Temblor de pantalla por explosiones) screen_shake_shield_intensity : 0.25, // Intensidad al destruir con escudo (en celdas) screen_shake_shield_duration : 0.15, // Duración sacudida de escudo (segundos) screen_shake_hit_intensity : 0.85, // Intensidad al recibir impacto directo (en celdas) screen_shake_hit_duration : 0.42, // Duración sacudida crítica (segundos) // Factor de desplazamiento parallax del fondo estelar background_parallax_amount : 0.25, // Intensidad del deslizamiento del fondo // ========================================== // SISTEMA DE DIFICULTAD Y MULTIPLICADORES // ========================================== current_difficulty : "average", // Valores base del motor base_enemy_spawn_interval : 0.65, // Segundos base entre chequeos de spawn base_enemy_min_threshold : 0.04, // Probabilidad inicial de spawn base_enemy_max_threshold : 0.22, // Límite asintótico de spawn base_drone_shield_max : 100.0, // Capacidad base de escudo/vida del dron base_drone_shield_drain_rate : 12.0, // Drenaje base por segundo activo base_drone_shield_kill_reward : 10.0, // Recarga base al destruir con escudo base_collision_damage_factor : 12.0, // Factor cinético base de daño // Curva de progresión temporal asintótica difficulty_ramp_half_life : 90.0, // Segundos para el 50% de la curva difficulty_ramp_power : 1.25, // Exponente de aceleración (1.0 = lineal, >1.0 = agresivo) // Catálogo de presets de dificultad (claves en inglés) difficulty_presets : { "training" : { id : "training", label_i18n : "diff_training", spawn_interval_mult : 1.4, min_threshold_mult : 0.5, max_threshold_mult : 0.6, ramp_speed_mult : 0.4, shield_capacity_mult : 1.5, shield_drain_mult : 0.6, shield_reward_mult : 2.0, drone_damage_taken_mult : 0.0, // Daño cero al dron enemy_damage_taken_mult : 2.0, mothership_damage_mult : 0.0, // ¡Inmortal! mothership_repair_mult : 3.0, drone_lives: 20, mothership_damage_mult: 0.0, }, "newbie" : { id : "newbie", label_i18n : "diff_newbie", spawn_interval_mult : 1.25, min_threshold_mult : 0.7, max_threshold_mult : 0.75, ramp_speed_mult : 0.6, shield_capacity_mult : 1.3, shield_drain_mult : 0.8, shield_reward_mult : 1.5, drone_damage_taken_mult : 0.4, enemy_damage_taken_mult : 1.4, mothership_damage_mult : 0.5, mothership_repair_mult : 1.8, drone_lives: 10, mothership_damage_mult: 0.6, }, "lazy" : { id : "lazy", label_i18n : "diff_lazy", spawn_interval_mult : 1.1, min_threshold_mult : 0.85, max_threshold_mult : 0.9, ramp_speed_mult : 0.8, shield_capacity_mult : 1.15, shield_drain_mult : 0.9, shield_reward_mult : 1.2, drone_damage_taken_mult : 0.7, enemy_damage_taken_mult : 1.2, mothership_damage_mult : 0.75, mothership_repair_mult : 1.3, drone_lives: 8, mothership_damage_mult: 0.8, }, "average" : { id : "average", label_i18n : "diff_average", spawn_interval_mult : 1.0, min_threshold_mult : 1.0, max_threshold_mult : 1.0, ramp_speed_mult : 1.0, shield_capacity_mult : 1.0, shield_drain_mult : 1.0, shield_reward_mult : 1.0, drone_damage_taken_mult : 1.0, enemy_damage_taken_mult : 1.0, mothership_damage_mult : 1.0, mothership_repair_mult : 1.0, drone_lives: 5, mothership_damage_mult: 1, }, "hard" : { id : "hard", label_i18n : "diff_hard", spawn_interval_mult : 0.85, min_threshold_mult : 1.2, max_threshold_mult : 1.25, ramp_speed_mult : 1.35, shield_capacity_mult : 0.9, shield_drain_mult : 1.2, shield_reward_mult : 0.85, drone_damage_taken_mult : 1.4, enemy_damage_taken_mult : 0.85, mothership_damage_mult : 1.35, mothership_repair_mult : 0.6, drone_lives: 3, mothership_damage_mult: 1.5, }, "berserk" : { id : "berserk", label_i18n : "diff_berserk", spawn_interval_mult : 0.7, min_threshold_mult : 1.5, max_threshold_mult : 1.5, ramp_speed_mult : 1.8, shield_capacity_mult : 0.8, shield_drain_mult : 1.4, shield_reward_mult : 0.7, drone_damage_taken_mult : 1.9, enemy_damage_taken_mult : 0.75, mothership_damage_mult : 1.8, mothership_repair_mult : 0.3, drone_lives: 2, mothership_damage_mult: 2, }, "insane" : { id : "insane", label_i18n : "diff_insane", spawn_interval_mult : 0.5, min_threshold_mult : 1.8, max_threshold_mult : 1.8, ramp_speed_mult : 2.5, shield_capacity_mult : 0.7, shield_drain_mult : 1.7, shield_reward_mult : 0.5, drone_damage_taken_mult : 2.6, enemy_damage_taken_mult : 0.6, mothership_damage_mult : 2.5, // 2 impactos = Game Over mothership_repair_mult : 0.0, // Sin autoreparación drone_lives: 1, mothership_damage_mult: 2.5, } }, ...(typeof custom_settings == "undefined" ? {} : custom_settings) };