{"id":2594,"date":"2026-04-04T20:37:27","date_gmt":"2026-04-04T20:37:27","guid":{"rendered":"https:\/\/academiaalpha.online\/?p=2594"},"modified":"2026-04-29T00:08:00","modified_gmt":"2026-04-29T00:08:00","slug":"alpharun","status":"publish","type":"post","link":"https:\/\/academiaalpha.online\/en\/alpharun\/","title":{"rendered":"Alpha Run: Run, jump, survive"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"2594\" class=\"elementor elementor-2594\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-7d293de elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"7d293de\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-60cf189\" data-id=\"60cf189\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-dce4ded elementor-widget elementor-widget-heading\" data-id=\"dce4ded\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Alpha Run<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-77c1106 elementor-widget elementor-widget-text-editor\" data-id=\"77c1106\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><img decoding=\"async\" class=\"emoji lazyload\" role=\"img\" draggable=\"false\" data-src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/1f525.svg\" alt=\"\ud83d\udd25\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" \/> \u00bfPuedes superar 1000 puntos? | <img decoding=\"async\" class=\"emoji lazyload\" role=\"img\" draggable=\"false\" data-src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/1f3c6.svg\" alt=\"\ud83c\udfc6\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" \/> R\u00e9cord actual: 1023 | <img decoding=\"async\" class=\"emoji lazyload\" role=\"img\" draggable=\"false\" data-src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/svg\/1f447.svg\" alt=\"\ud83d\udc47\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" \/> Juega y demuestra que eres mejor<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f8658c1 elementor-widget elementor-widget-html\" data-id=\"f8658c1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"alpha-run-game\">\n  <div class=\"ar-wrap\">\n    <div class=\"ar-hud\">\n      <div class=\"ar-pill\" id=\"scoreText\">Puntaje: 0<\/div>\n      <div class=\"ar-pill\" id=\"bestText\">R\u00e9cord: 1023<\/div>\n      <div class=\"ar-pill\" id=\"stateText\">Estado: esperando<\/div>\n      <div class=\"ar-pill\" id=\"speedText\">Velocidad: 1.00x<\/div>\n    <\/div>\n\n    <div class=\"ar-game-shell\" id=\"gameShell\">\n      <canvas id=\"game\"><\/canvas>\n\n      <div class=\"ar-screen\" id=\"startScreen\">\n        <div class=\"ar-panel\">\n          <img decoding=\"async\" class=\"ar-panel-logo lazyload\" data-src=\"https:\/\/academiaalpha.online\/wp-content\/uploads\/alpharun\/assets\/interface\/logo.png\" alt=\"Alpha Run Logo\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 300px; --smush-placeholder-aspect-ratio: 300\/87;\">\n          \n          <p>Corre, salta, usa doble salto y sobrevive lo m\u00e1ximo posible.<\/p>\n          <p>Obst\u00e1culos aleatorios, plataformas, parallax infinito y r\u00e9cord.<\/p>\n          <button class=\"ar-btn\" id=\"startBtn\">EMPEZAR<\/button>\n        <\/div>\n      <\/div>\n\n      <button class=\"ar-btn\" id=\"restartBtn\">REINICIAR<\/button>\n    <\/div>\n  <\/div>\n<\/div>\n\n<style>\n  #alpha-run-game,\n  #alpha-run-game * {\n    box-sizing: border-box;\n  }\n\n  #alpha-run-game {\n    width: 100%;\n    background: transparent;\n    font-family: Arial, Helvetica, sans-serif;\n    color: #fff;\n  }\n\n  #alpha-run-game .ar-wrap {\n    max-width: 1100px;\n    margin: 0 auto;\n    padding: 0;\n  }\n\n  #alpha-run-game .ar-hud {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 12px;\n    margin: 0 0 16px;\n  }\n\n  #alpha-run-game .ar-pill {\n    background: rgba(255,255,255,0.08);\n    border: 1px solid rgba(255,255,255,0.12);\n    padding: 10px 14px;\n    border-radius: 999px;\n    font-weight: 700;\n  }\n\n  #alpha-run-game .ar-game-shell {\n    position: relative;\n    width: 100%;\n    max-width: 1000px;\n    margin: 0 auto;\n    aspect-ratio: 2 \/ 1;\n    overflow: hidden;\n  }\n\n  #alpha-run-game canvas {\n    width: 100%;\n    height: 100%;\n    display: block;\n    border: 2px solid rgba(255,255,255,0.12);\n    background: #0a0d24;\n    touch-action: manipulation;\n  }\n\n  #alpha-run-game .ar-screen {\n    position: absolute;\n    inset: 0;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    background: rgba(4, 6, 18, 0.78);\n    backdrop-filter: blur(4px);\n    z-index: 20;\n  }\n\n  #alpha-run-game .hidden {\n    display: none !important;\n  }\n\n  #alpha-run-game .ar-panel {\n    width: min(90%, 560px);\n    background: linear-gradient(180deg, rgba(18,22,52,.96), rgba(8,10,28,.96));\n    border: 1px solid rgba(255,255,255,.12);\n    border-radius: 22px;\n    padding: 26px;\n    text-align: center;\n    box-shadow: 0 20px 60px rgba(0,0,0,.45);\n  }\n\n  #alpha-run-game .ar-panel-logo {\n    max-width: 250px;\n    width: 70%;\n    margin: 0 auto 16px;\n    display: block;\n  }\n\n  #alpha-run-game .ar-panel h2 {\n    margin: 0 0 10px;\n    font-size: clamp(28px, 4vw, 50px);\n    color: #fff;\n  }\n\n  #alpha-run-game .ar-panel p {\n    margin: 0 0 18px;\n    line-height: 1.45;\n    opacity: 0.95;\n    color: #fff;\n  }\n\n  #alpha-run-game .ar-btn {\n    border: none;\n    border-radius: 999px;\n    padding: 14px 24px;\n    font-size: 16px;\n    font-weight: 800;\n    color: #fff;\n    cursor: pointer;\n    background: linear-gradient(90deg, #28c7ff, #8750ff);\n    box-shadow: 0 0 18px rgba(40,199,255,.35);\n  }\n\n  #alpha-run-game #restartBtn {\n    position: absolute;\n    left: 50%;\n    bottom: 15%;\n    transform: translateX(-50%);\n    z-index: 30;\n    display: none;\n  }\n\n  #alpha-run-game #restartBtn.show {\n    display: block;\n  }\n\n  @media (max-width: 768px) {\n    #alpha-run-game .ar-game-shell {\n      max-width: 430px;\n      aspect-ratio: 9 \/ 16;\n    }\n\n    #alpha-run-game .ar-hud {\n      gap: 8px;\n    }\n\n    #alpha-run-game .ar-pill {\n      font-size: 12px;\n      padding: 8px 10px;\n    }\n\n    #alpha-run-game .ar-panel {\n      padding: 20px;\n    }\n\n    #alpha-run-game .ar-panel-logo {\n      max-width: 210px;\n    }\n  }\n<\/style>\n\n<script>\n(() => {\n  const ASSET_BASE = \"https:\/\/academiaalpha.online\/wp-content\/uploads\/alpharun\/assets\";\n\n  function asset(path) {\n    return ASSET_BASE + path;\n  }\n\n  const canvas = document.getElementById(\"game\");\n  const ctx = canvas.getContext(\"2d\");\n\n  const scoreText = document.getElementById(\"scoreText\");\n  const bestText = document.getElementById(\"bestText\");\n  const stateText = document.getElementById(\"stateText\");\n  const speedText = document.getElementById(\"speedText\");\n  const startScreen = document.getElementById(\"startScreen\");\n  const startBtn = document.getElementById(\"startBtn\");\n  const restartBtn = document.getElementById(\"restartBtn\");\n\n  let GAME_WIDTH = 1000;\n  let GAME_HEIGHT = 500;\n  let GROUND_Y = 380;\n  let FLOOR_DRAW_Y = 372;\n  let FLOOR_HEIGHT = 128;\n  let SKY_HEIGHT = 500;\n\n  let PLAYER_WIDTH = 150;\n  let PLAYER_HEIGHT = 150;\n  let PLAYER_X = 140;\n\n  let PLATFORM_HEIGHT_BASE = 22;\n\n  let currentScaleX = 1;\n  let currentScaleY = 1;\n  let currentDpr = 1;\n  let isMobileMode = false;\n\n  const BASE_SPEED = 5.8;\n  const MAX_SPEED = 13.8;\n  const SPEED_RAMP = 0.0022;\n  const GRAVITY = 0.90;\n  const JUMP_FORCE = -15.6;\n  const DEATH_BOUNCE_X = -6;\n  const DEATH_BOUNCE_Y = -8;\n\n  let score = 0;\n  let bestScore = 1023;\n  let gameOver = false;\n  let gameStarted = false;\n  let speed = BASE_SPEED;\n  let worldSpeed = 0;\n  let spawnTimer = 0;\n  let nextSpawnIn = 110;\n\n  let skyOffset = 0;\n  let buildingOffset = 0;\n  let floorOffset = 0;\n\n  const obstacles = [];\n  const platforms = [];\n  const particles = [];\n\n  let audioCtx = null;\n  let musicAudio = null;\n  let musicStarted = false;\n\n  function applyResponsiveMode() {\n    const mobileNow = window.innerWidth <= 768;\n\n    if (mobileNow) {\n      GAME_WIDTH = 560;\n      GAME_HEIGHT = 900;\n      GROUND_Y = 720;\n      FLOOR_DRAW_Y = 710;\n      FLOOR_HEIGHT = 190;\n      SKY_HEIGHT = 900;\n      PLAYER_WIDTH = 180;\n      PLAYER_HEIGHT = 180;\n      PLAYER_X = 70;\n      PLATFORM_HEIGHT_BASE = 26;\n    } else {\n      GAME_WIDTH = 1000;\n      GAME_HEIGHT = 500;\n      GROUND_Y = 380;\n      FLOOR_DRAW_Y = 372;\n      FLOOR_HEIGHT = 128;\n      SKY_HEIGHT = 500;\n      PLAYER_WIDTH = 150;\n      PLAYER_HEIGHT = 150;\n      PLAYER_X = 140;\n      PLATFORM_HEIGHT_BASE = 22;\n    }\n\n    if (mobileNow !== isMobileMode) {\n      isMobileMode = mobileNow;\n      if (gameStarted) resetGame();\n    }\n  }\n\n  function resizeCanvas() {\n    applyResponsiveMode();\n\n    const rect = canvas.getBoundingClientRect();\n    currentDpr = Math.max(1, Math.min(2, window.devicePixelRatio || 1));\n\n    canvas.width = Math.round(rect.width * currentDpr);\n    canvas.height = Math.round(rect.height * currentDpr);\n\n    currentScaleX = rect.width \/ GAME_WIDTH;\n    currentScaleY = rect.height \/ GAME_HEIGHT;\n  }\n\n  function loadSequence(prefix, start, end) {\n    const arr = [];\n    for (let i = start; i <= end; i++) {\n      const img = new Image();\n      const n = String(i).padStart(2, \"0\");\n      img.src = asset(`${prefix}${n}.png`);\n      arr.push(img);\n    }\n    return arr;\n  }\n\n  function loadImage(path) {\n    const img = new Image();\n    img.src = asset(path);\n    return img;\n  }\n\n  const assets = {\n    logo: loadImage(\"\/interface\/logo.png\"),\n\n    playerRun: loadSequence(\"\/players\/run\/run_\", 0, 11),\n    playerJump: loadSequence(\"\/players\/jump\/jump_\", 0, 11),\n    playerDeath: loadSequence(\"\/players\/death\/death_\", 0, 11),\n\n    mine: loadSequence(\"\/obstacles\/mine\/mine_\", 0, 23),\n    cuts: loadSequence(\"\/obstacles\/cuts\/cuts_\", 0, 11),\n    misil: loadSequence(\"\/obstacles\/misil\/misil_\", 0, 11),\n\n    sky: loadImage(\"\/bg\/sky\/sky.png\"),\n    buildings: loadImage(\"\/bg\/buildings\/buildings.png\"),\n    floor: loadImage(\"\/bg\/floor\/floor.png\"),\n    platform: loadImage(\"\/bg\/platform\/plataforma.png\")\n  };\n\n  const player = {\n    x: PLAYER_X,\n    y: GROUND_Y - PLAYER_HEIGHT,\n    width: PLAYER_WIDTH,\n    height: PLAYER_HEIGHT,\n    hitWidth: 70,\n    hitHeight: 150,\n    vy: 0,\n    vx: 0,\n    onGround: true,\n    state: \"idle\",\n    currentFrame: 0,\n    frameTimer: 0,\n    visible: true,\n    deathFinished: false,\n    jumps: 0,\n    maxJumps: 2\n  };\n\n  function initAudio() {\n    if (!audioCtx) {\n      const AC = window.AudioContext || window.webkitAudioContext;\n      if (AC) audioCtx = new AC();\n    }\n\n    if (!musicAudio) {\n      musicAudio = new Audio(asset(\"\/bg\/music\/music.mp3\"));\n      musicAudio.loop = false;\n      musicAudio.volume = 0.35;\n\n      musicAudio.addEventListener(\"ended\", () => {\n        if (gameStarted && !gameOver) {\n          musicAudio.currentTime = 0;\n          musicAudio.play().catch(() => {});\n        }\n      });\n    }\n  }\n\n  function resumeAudio() {\n    initAudio();\n\n    if (audioCtx && audioCtx.state === \"suspended\") {\n      audioCtx.resume();\n    }\n\n    if (musicAudio && !musicStarted) {\n      musicAudio.currentTime = 0;\n      musicAudio.play().then(() => {\n        musicStarted = true;\n      }).catch(() => {});\n    }\n  }\n\n  function restartMusic() {\n    initAudio();\n    if (!musicAudio) return;\n\n    musicStarted = false;\n    musicAudio.pause();\n    musicAudio.currentTime = 0;\n\n    if (gameStarted) {\n      musicAudio.play().then(() => {\n        musicStarted = true;\n      }).catch(() => {});\n    }\n  }\n\n  function playJumpSound() {\n    if (!audioCtx) return;\n\n    const now = audioCtx.currentTime;\n    const osc = audioCtx.createOscillator();\n    const gain = audioCtx.createGain();\n    const filter = audioCtx.createBiquadFilter();\n\n    osc.type = \"square\";\n    osc.frequency.setValueAtTime(540, now);\n    osc.frequency.exponentialRampToValueAtTime(860, now + 0.09);\n\n    filter.type = \"lowpass\";\n    filter.frequency.value = 1800;\n\n    gain.gain.setValueAtTime(0.0001, now);\n    gain.gain.exponentialRampToValueAtTime(0.08, now + 0.01);\n    gain.gain.exponentialRampToValueAtTime(0.0001, now + 0.12);\n\n    osc.connect(filter);\n    filter.connect(gain);\n    gain.connect(audioCtx.destination);\n\n    osc.start(now);\n    osc.stop(now + 0.14);\n  }\n\n  function resetGame() {\n    score = 0;\n    gameOver = false;\n    speed = BASE_SPEED;\n    worldSpeed = BASE_SPEED;\n    spawnTimer = 0;\n    nextSpawnIn = 78 + Math.floor(Math.random() * 32);\n\n    skyOffset = 0;\n    buildingOffset = 0;\n    floorOffset = 0;\n\n    obstacles.length = 0;\n    platforms.length = 0;\n    particles.length = 0;\n\n    player.width = PLAYER_WIDTH;\n    player.height = PLAYER_HEIGHT;\n    player.x = PLAYER_X;\n    player.y = GROUND_Y - player.height;\n    player.vy = 0;\n    player.vx = 0;\n    player.onGround = true;\n    player.state = \"run\";\n    player.currentFrame = 0;\n    player.frameTimer = 0;\n    player.visible = true;\n    player.deathFinished = false;\n    player.jumps = 0;\n    player.hitWidth = isMobileMode ? 84 : 70;\n    player.hitHeight = isMobileMode ? 170 : 150;\n\n    restartBtn.classList.remove(\"show\");\n    seedInitialPlatforms();\n    updateHUD();\n    restartMusic();\n  }\n\n  function seedInitialPlatforms() {\n    if (isMobileMode) {\n      platforms.push(\n        { x: 250, y: GROUND_Y - 80, width: 140, height: PLATFORM_HEIGHT_BASE },\n        { x: 390, y: GROUND_Y - 150, width: 140, height: PLATFORM_HEIGHT_BASE },\n        { x: 530, y: GROUND_Y - 220, width: 140, height: PLATFORM_HEIGHT_BASE }\n      );\n    } else {\n      platforms.push(\n        { x: 420, y: GROUND_Y - 60, width: 150, height: PLATFORM_HEIGHT_BASE },\n        { x: 590, y: GROUND_Y - 115, width: 150, height: PLATFORM_HEIGHT_BASE },\n        { x: 760, y: GROUND_Y - 170, width: 150, height: PLATFORM_HEIGHT_BASE }\n      );\n    }\n  }\n\n  function startGame() {\n    gameStarted = true;\n    startScreen.classList.add(\"hidden\");\n    resumeAudio();\n    resetGame();\n  }\n\n  function updateHUD() {\n    scoreText.textContent = `Puntaje: ${Math.floor(score)}`;\n    bestText.textContent = `R\u00e9cord: ${bestScore}`;\n    stateText.textContent =\n      \"Estado: \" +\n      (player.state === \"run\"\n        ? \"corriendo\"\n        : player.state === \"jump\"\n        ? \"saltando\"\n        : player.state === \"death\"\n        ? \"muerto\"\n        : \"esperando\");\n    speedText.textContent = `Velocidad: ${(worldSpeed \/ BASE_SPEED).toFixed(2)}x`;\n  }\n\n  function jump() {\n    if (!gameStarted || gameOver) return;\n    if (player.jumps >= player.maxJumps) return;\n\n    resumeAudio();\n    playJumpSound();\n\n    player.vy = JUMP_FORCE;\n    player.onGround = false;\n    player.state = \"jump\";\n    player.currentFrame = 0;\n    player.frameTimer = 0;\n    player.jumps++;\n\n    spawnJumpParticles();\n    updateHUD();\n  }\n\n  function spawnRunParticles() {\n    for (let i = 0; i < 2; i++) {\n      particles.push({\n        x: player.x + 30 + Math.random() * 24,\n        y: player.y + player.height - 10 + Math.random() * 4,\n        vx: -1.8 - Math.random() * 1.5,\n        vy: -0.8 - Math.random() * 0.6,\n        life: 16 + Math.random() * 10,\n        maxLife: 26,\n        size: 2 + Math.random() * 3,\n        color: Math.random() > 0.5 ? \"#7a46ff\" : \"#17306f\"\n      });\n    }\n  }\n\n  function spawnJumpParticles() {\n    for (let i = 0; i < 10; i++) {\n      particles.push({\n        x: player.x + 34 + Math.random() * 38,\n        y: player.y + player.height - 20,\n        vx: -2.5 - Math.random() * 2.2,\n        vy: -1.8 - Math.random() * 2.4,\n        life: 20 + Math.random() * 10,\n        maxLife: 30,\n        size: 3 + Math.random() * 4,\n        color: Math.random() > 0.5 ? \"#8e5cff\" : \"#1c347c\"\n      });\n    }\n  }\n\n  function updateParticles() {\n    for (let i = particles.length - 1; i >= 0; i--) {\n      const p = particles[i];\n      p.x += p.vx;\n      p.y += p.vy;\n      p.vy += 0.08;\n      p.life--;\n\n      if (p.life <= 0) {\n        particles.splice(i, 1);\n      }\n    }\n  }\n\n  function drawParticles() {\n    for (const p of particles) {\n      ctx.save();\n      ctx.globalAlpha = Math.max(0, p.life \/ p.maxLife);\n      ctx.fillStyle = p.color;\n      ctx.fillRect(p.x, p.y, p.size, p.size);\n      ctx.restore();\n    }\n    ctx.globalAlpha = 1;\n  }\n\n  function getPlayerHitbox() {\n    return {\n      x: player.x + (player.width - player.hitWidth) \/ 2,\n      y: player.y + (player.height - player.hitHeight),\n      width: player.hitWidth,\n      height: player.hitHeight\n    };\n  }\n\n  function rectsCollide(a, b) {\n    return (\n      a.x < b.x + b.width &&\n      a.x + a.width > b.x &&\n      a.y < b.y + b.height &&\n      a.y + a.height > b.y\n    );\n  }\n\n  function hasNearbyObstacle(x, minDistance = 190) {\n    return obstacles.some(o => Math.abs(o.x - x) < minDistance);\n  }\n\n  function spawnPlatformGroup() {\n    const startX = GAME_WIDTH + 60;\n    const newPlatforms = [];\n\n    if (isMobileMode) {\n      newPlatforms.push(\n        { x: startX, y: GROUND_Y - 70, width: 130, height: PLATFORM_HEIGHT_BASE },\n        { x: startX + 150, y: GROUND_Y - 140, width: 130, height: PLATFORM_HEIGHT_BASE },\n        { x: startX + 300, y: GROUND_Y - 210, width: 130, height: PLATFORM_HEIGHT_BASE }\n      );\n    } else {\n      newPlatforms.push(\n        { x: startX, y: GROUND_Y - 70, width: 130, height: PLATFORM_HEIGHT_BASE },\n        { x: startX + 165, y: GROUND_Y - 130, width: 130, height: PLATFORM_HEIGHT_BASE },\n        { x: startX + 330, y: GROUND_Y - 90, width: 130, height: PLATFORM_HEIGHT_BASE },\n        { x: startX + 495, y: GROUND_Y - 170, width: 130, height: PLATFORM_HEIGHT_BASE }\n      );\n    }\n\n    platforms.push(...newPlatforms);\n    return newPlatforms;\n  }\n\n  function createMine(x, y) {\n    obstacles.push({\n      type: \"mine\",\n      x,\n      y,\n      width: isMobileMode ? 86 : 80,\n      height: isMobileMode ? 86 : 80,\n      hitbox: { x: 10, y: 10, width: 60, height: 60 },\n      frames: assets.mine,\n      currentFrame: 0,\n      frameTimer: 0,\n      frameInterval: 5\n    });\n  }\n\n  function createCuts(x) {\n    const h = isMobileMode ? 150 : 135;\n    const w = isMobileMode ? 205 : 195;\n    const baseY = GROUND_Y - h;\n\n    obstacles.push({\n      type: \"cuts\",\n      x,\n      baseY,\n      y: baseY,\n      width: w,\n      height: h,\n      hitbox: isMobileMode\n        ? { x: 52, y: 22, width: 100, height: 118 }\n        : { x: 48, y: 18, width: 95, height: 108 },\n      frames: assets.cuts,\n      currentFrame: 0,\n      frameTimer: 0,\n      frameInterval: 5,\n      bobPhase: Math.random() * Math.PI * 2,\n      bobSpeed: 0.08 + Math.random() * 0.03,\n      bobAmount: 8 + Math.random() * 5\n    });\n  }\n\n  function createMissile(x) {\n    const missileHeights = isMobileMode\n      ? [GROUND_Y - 230, GROUND_Y - 130]\n      : [GROUND_Y - 176, GROUND_Y - 108];\n\n    const missileY = missileHeights[Math.floor(Math.random() * missileHeights.length)];\n\n    obstacles.push({\n      type: \"misil\",\n      x,\n      y: missileY,\n      width: 120,\n      height: 29,\n      hitbox: { x: 10, y: 8, width: 96, height: 13 },\n      frames: assets.misil,\n      currentFrame: 0,\n      frameTimer: 0,\n      frameInterval: 4,\n      speedX: 2.2 + Math.random() * 1.4\n    });\n  }\n\n  function spawnObstacleOnPlatform(platformsCreated) {\n    if (!platformsCreated || platformsCreated.length === 0) return false;\n    if (Math.random() > 0.45) return false;\n\n    const p = platformsCreated[Math.floor(Math.random() * platformsCreated.length)];\n    const mineSize = isMobileMode ? 86 : 80;\n\n    const x = p.x + p.width \/ 2 - mineSize \/ 2;\n    const y = p.y - mineSize;\n\n    if (hasNearbyObstacle(x, 170)) return false;\n\n    createMine(x, y);\n    return true;\n  }\n\n  function spawnObstacle() {\n    let platformsCreated = [];\n\n    if (Math.random() < 0.50) {\n      platformsCreated = spawnPlatformGroup();\n    }\n\n    if (spawnObstacleOnPlatform(platformsCreated)) return;\n\n    const groundX = GAME_WIDTH + 40;\n\n    if (hasNearbyObstacle(groundX, 180)) return;\n\n    const typeRoll = Math.random();\n\n    if (typeRoll < 0.38) {\n      createMine(groundX, GROUND_Y - (isMobileMode ? 86 : 80));\n    } else if (typeRoll < 0.72) {\n      createCuts(groundX);\n    } else {\n      createMissile(groundX);\n    }\n  }\n\n  function updatePlayer() {\n    if (player.state !== \"death\") {\n      player.vy += GRAVITY;\n      player.y += player.vy;\n\n      let landedOnPlatform = false;\n\n      for (const p of platforms) {\n        const playerBottom = player.y + player.height;\n        const prevBottom = playerBottom - player.vy;\n\n        if (\n          player.x + player.width > p.x &&\n          player.x < p.x + p.width &&\n          prevBottom <= p.y &&\n          playerBottom >= p.y &&\n          player.vy >= 0\n        ) {\n          player.y = p.y - player.height;\n          player.vy = 0;\n          player.onGround = true;\n          player.jumps = 0;\n          player.state = \"run\";\n          landedOnPlatform = true;\n        }\n      }\n\n      const floorY = GROUND_Y - player.height;\n\n      if (!landedOnPlatform && player.y >= floorY) {\n        player.y = floorY;\n        player.vy = 0;\n\n        if (!player.onGround) {\n          player.onGround = true;\n          player.jumps = 0;\n          player.state = \"run\";\n          player.currentFrame = 0;\n          player.frameTimer = 0;\n        }\n      }\n\n      if (!landedOnPlatform && player.y < floorY) {\n        player.onGround = false;\n      }\n    } else {\n      player.vy += GRAVITY * 0.55;\n      player.y += player.vy;\n      player.x += player.vx;\n      player.vx *= 0.96;\n\n      const floorY = GROUND_Y - player.height;\n      if (player.y >= floorY) {\n        player.y = floorY;\n        player.vy = 0;\n      }\n    }\n\n    player.frameTimer++;\n\n    if (player.state === \"run\") {\n      if (player.frameTimer >= 4) {\n        player.frameTimer = 0;\n        player.currentFrame = (player.currentFrame + 1) % assets.playerRun.length;\n      }\n    } else if (player.state === \"jump\") {\n      if (player.frameTimer >= 4) {\n        player.frameTimer = 0;\n        if (player.currentFrame < assets.playerJump.length - 1) {\n          player.currentFrame++;\n        }\n      }\n    } else if (player.state === \"death\") {\n      if (player.frameTimer >= 4) {\n        player.frameTimer = 0;\n        if (player.currentFrame < assets.playerDeath.length - 1) {\n          player.currentFrame++;\n        } else {\n          player.deathFinished = true;\n          restartBtn.classList.add(\"show\");\n        }\n      }\n    }\n  }\n\n  function updateParallax() {\n    if (gameOver) {\n      worldSpeed *= 0.92;\n      if (worldSpeed < 0.05) worldSpeed = 0;\n    } else {\n      worldSpeed = speed;\n    }\n\n    skyOffset -= worldSpeed * 0.15;\n    buildingOffset -= worldSpeed * 0.35;\n    floorOffset -= worldSpeed * 1.0;\n\n    if (skyOffset <= -1024) skyOffset = 0;\n    if (buildingOffset <= -1024) buildingOffset = 0;\n    if (floorOffset <= -1024) floorOffset = 0;\n  }\n\n  function updateObstacles() {\n    if (!gameOver) {\n      spawnTimer++;\n      if (spawnTimer >= nextSpawnIn) {\n        spawnTimer = 0;\n        spawnObstacle();\n        nextSpawnIn = Math.max(54, 88 + Math.floor(Math.random() * 32) - Math.floor(speed * 1.35));\n      }\n    }\n\n    for (let i = obstacles.length - 1; i >= 0; i--) {\n      const o = obstacles[i];\n\n      if (o.type === \"misil\") {\n        o.x -= (worldSpeed + o.speedX);\n      } else {\n        o.x -= worldSpeed;\n      }\n\n      if (o.type === \"cuts\") {\n        o.bobPhase += o.bobSpeed;\n        o.y = o.baseY + Math.sin(o.bobPhase) * o.bobAmount;\n      }\n\n      o.frameTimer++;\n      if (o.frameTimer >= o.frameInterval) {\n        o.frameTimer = 0;\n        o.currentFrame = (o.currentFrame + 1) % o.frames.length;\n      }\n\n      if (o.x + o.width < -60) {\n        obstacles.splice(i, 1);\n      }\n    }\n\n    for (let i = platforms.length - 1; i >= 0; i--) {\n      const p = platforms[i];\n      p.x -= worldSpeed;\n\n      if (p.x + p.width < -60) {\n        platforms.splice(i, 1);\n      }\n    }\n  }\n\n  function checkCollisions() {\n    if (gameOver || !gameStarted) return;\n\n    const p = getPlayerHitbox();\n\n    for (const o of obstacles) {\n      const hb = {\n        x: o.x + o.hitbox.x,\n        y: o.y + o.hitbox.y,\n        width: o.hitbox.width,\n        height: o.hitbox.height\n      };\n\n      if (rectsCollide(p, hb)) {\n        gameOver = true;\n        player.state = \"death\";\n        player.currentFrame = 0;\n        player.frameTimer = 0;\n        player.vx = DEATH_BOUNCE_X;\n        player.vy = DEATH_BOUNCE_Y;\n        updateHUD();\n        break;\n      }\n    }\n  }\n\n  function update() {\n    if (!gameStarted) {\n      updateHUD();\n      return;\n    }\n\n    if (!gameOver) {\n      score += 0.16;\n      if (score > bestScore) bestScore = Math.floor(score);\n      if (speed < MAX_SPEED) speed += SPEED_RAMP;\n    }\n\n    if (!gameOver && player.state === \"run\" && Math.random() < 0.55) {\n      spawnRunParticles();\n    }\n\n    updateParallax();\n    updatePlayer();\n    updateObstacles();\n    updateParticles();\n    checkCollisions();\n    updateHUD();\n  }\n\n  function drawLoopedImage(img, offsetX, y, width, height) {\n    if (!img.complete || img.naturalWidth === 0) return;\n    ctx.drawImage(img, offsetX, y, width, height);\n    ctx.drawImage(img, offsetX + width, y, width, height);\n  }\n\n  function drawBackgroundBase() {\n    ctx.clearRect(0, 0, GAME_WIDTH, GAME_HEIGHT);\n    drawLoopedImage(assets.sky, skyOffset, 0, 1024, SKY_HEIGHT);\n    drawLoopedImage(assets.buildings, buildingOffset, 0, 1024, SKY_HEIGHT);\n  }\n\n  function drawFloor() {\n    drawLoopedImage(assets.floor, floorOffset, FLOOR_DRAW_Y, 1024, FLOOR_HEIGHT);\n\n    ctx.strokeStyle = \"rgba(255,255,255,0.25)\";\n    ctx.lineWidth = 2;\n    ctx.beginPath();\n    ctx.moveTo(0, GROUND_Y);\n    ctx.lineTo(GAME_WIDTH, GROUND_Y);\n    ctx.stroke();\n  }\n\n  function drawPlatforms() {\n    for (const p of platforms) {\n      if (assets.platform.complete && assets.platform.naturalWidth > 0) {\n        ctx.drawImage(assets.platform, p.x, p.y, p.width, p.height);\n      } else {\n        ctx.fillStyle = \"#6c3cff\";\n        ctx.fillRect(p.x, p.y, p.width, p.height);\n      }\n    }\n  }\n\n  function drawLogoInGame() {\n    if (!gameStarted) return;\n    if (!assets.logo.complete || assets.logo.naturalWidth === 0) return;\n\n    const logoW = isMobileMode ? 130 : 150;\n    const logoH = logoW * (assets.logo.naturalHeight \/ assets.logo.naturalWidth);\n\n    ctx.save();\n    ctx.globalAlpha = 0.88;\n    ctx.drawImage(assets.logo, 18, 16, logoW, logoH);\n    ctx.restore();\n  }\n\n  function drawPlayer() {\n    if (!player.visible) return;\n\n    let frameImage = null;\n    if (player.state === \"run\") frameImage = assets.playerRun[player.currentFrame];\n    if (player.state === \"jump\") frameImage = assets.playerJump[player.currentFrame];\n    if (player.state === \"death\") frameImage = assets.playerDeath[player.currentFrame];\n\n    if (frameImage && frameImage.complete && frameImage.naturalWidth > 0) {\n      ctx.drawImage(frameImage, player.x, player.y, player.width, player.height);\n    } else {\n      ctx.fillStyle = \"#ff00aa\";\n      ctx.fillRect(player.x, player.y, player.width, player.height);\n    }\n  }\n\n  function drawScissorsBehindFloor() {\n    for (const o of obstacles) {\n      if (o.type !== \"cuts\") continue;\n      const frame = o.frames[o.currentFrame];\n\n      if (frame && frame.complete && frame.naturalWidth > 0) {\n        ctx.drawImage(frame, o.x, o.y, o.width, o.height);\n      }\n    }\n  }\n\n  function drawFrontObstacles() {\n    for (const o of obstacles) {\n      if (o.type === \"cuts\") continue;\n      const frame = o.frames[o.currentFrame];\n\n      if (frame && frame.complete && frame.naturalWidth > 0) {\n        ctx.drawImage(frame, o.x, o.y, o.width, o.height);\n      }\n    }\n  }\n\n  function drawScoreTop() {\n    if (!gameStarted) return;\n\n    ctx.save();\n\n    const text = Math.floor(score).toString();\n    ctx.font = isMobileMode ? \"bold 24px Arial\" : \"bold 28px Arial\";\n    const textWidth = ctx.measureText(text).width;\n\n    const paddingX = 18;\n    const boxWidth = textWidth + paddingX * 2;\n    const boxHeight = isMobileMode ? 40 : 44;\n    const boxX = GAME_WIDTH \/ 2 - boxWidth \/ 2;\n    const boxY = 18;\n    const r = 18;\n\n    ctx.fillStyle = \"rgba(8, 10, 28, 0.55)\";\n    ctx.strokeStyle = \"rgba(255,255,255,0.16)\";\n    ctx.lineWidth = 2;\n\n    ctx.beginPath();\n    ctx.moveTo(boxX + r, boxY);\n    ctx.lineTo(boxX + boxWidth - r, boxY);\n    ctx.quadraticCurveTo(boxX + boxWidth, boxY, boxX + boxWidth, boxY + r);\n    ctx.lineTo(boxX + boxWidth, boxY + boxHeight - r);\n    ctx.quadraticCurveTo(boxX + boxWidth, boxY + boxHeight, boxX + boxWidth - r, boxY + boxHeight);\n    ctx.lineTo(boxX + r, boxY + boxHeight);\n    ctx.quadraticCurveTo(boxX, boxY + boxHeight, boxX, boxY + boxHeight - r);\n    ctx.lineTo(boxX, boxY + r);\n    ctx.quadraticCurveTo(boxX, boxY, boxX + r, boxY);\n    ctx.closePath();\n    ctx.fill();\n    ctx.stroke();\n\n    ctx.fillStyle = \"#ffffff\";\n    ctx.textAlign = \"center\";\n    ctx.textBaseline = \"middle\";\n    ctx.font = isMobileMode ? \"bold 24px Arial\" : \"bold 28px Arial\";\n    ctx.fillText(text, GAME_WIDTH \/ 2, boxY + boxHeight \/ 2 + 1);\n\n    ctx.font = isMobileMode ? \"bold 14px Arial\" : \"bold 16px Arial\";\n    ctx.fillStyle = \"#b9b9d6\";\n    ctx.fillText(\"BEST: \" + bestScore, GAME_WIDTH \/ 2, boxY + boxHeight + 18);\n\n    ctx.restore();\n  }\n\n  function drawGameOver() {\n    if (!gameOver) return;\n    if (!player.deathFinished) return;\n\n    const centerY = isMobileMode ? 300 : 170;\n\n    ctx.fillStyle = \"rgba(0,0,0,0.58)\";\n    ctx.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT);\n\n    ctx.fillStyle = \"#ffffff\";\n    ctx.textAlign = \"center\";\n    ctx.font = isMobileMode ? \"bold 42px Arial\" : \"bold 52px Arial\";\n    ctx.fillText(\"GAME OVER\", GAME_WIDTH \/ 2, centerY);\n\n    ctx.font = isMobileMode ? \"22px Arial\" : \"24px Arial\";\n    ctx.fillText(`Puntaje: ${Math.floor(score)}`, GAME_WIDTH \/ 2, centerY + 45);\n    ctx.fillText(`R\u00e9cord: ${bestScore}`, GAME_WIDTH \/ 2, centerY + 78);\n\n    ctx.font = isMobileMode ? \"18px Arial\" : \"21px Arial\";\n    ctx.fillStyle = \"#d8d8ff\";\n    ctx.fillText(\"Sube tu puntaje a Instagram\", GAME_WIDTH \/ 2, centerY + 120);\n    ctx.fillText(\"y etiqueta a @academiaalpha.online\", GAME_WIDTH \/ 2, centerY + 150);\n  }\n\n  function render() {\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\n    ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n    ctx.setTransform(currentDpr * currentScaleX, 0, 0, currentDpr * currentScaleY, 0, 0);\n\n    drawBackgroundBase();\n    drawPlatforms();\n    drawScissorsBehindFloor();\n    drawFloor();\n    drawParticles();\n    drawFrontObstacles();\n    drawPlayer();\n    drawLogoInGame();\n    drawScoreTop();\n    drawGameOver();\n  }\n\n  function gameLoop() {\n    update();\n    render();\n    requestAnimationFrame(gameLoop);\n  }\n\n  function handleJump() {\n    if (!gameStarted) return;\n    jump();\n  }\n\n  window.addEventListener(\"keydown\", (e) => {\n    if (e.code === \"Space\" || e.code === \"ArrowUp\") {\n      e.preventDefault();\n      handleJump();\n    }\n\n    if (e.key.toLowerCase() === \"r\") {\n      if (gameStarted) resetGame();\n    }\n  });\n\n  canvas.addEventListener(\"pointerdown\", () => {\n    if (!gameOver) handleJump();\n  });\n\n  startBtn.addEventListener(\"click\", startGame);\n  restartBtn.addEventListener(\"click\", resetGame);\n  window.addEventListener(\"resize\", resizeCanvas);\n\n  resizeCanvas();\n  updateHUD();\n  requestAnimationFrame(gameLoop);\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Alpha Run Can you beat 1000 points? | Current Record: 1023 | Play and prove you're better Score: 0 Record: 1023 Status: waiting Speed: 1.00x Run, jump, double jump, and survive as long as possible. Random obstacles, platforms, infinite parallax, and a record. START RESTART<\/p>","protected":false},"author":1,"featured_media":2783,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2594","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Alpha Run: Corre, salta, sobrevive\u200b - Academia Alpha Online<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/academiaalpha.online\/en\/alpharun\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Alpha Run: Corre, salta, sobrevive\u200b - Academia Alpha Online\" \/>\n<meta property=\"og:description\" content=\"Alpha Run \u00bfPuedes superar 1000 puntos? | R\u00e9cord actual: 1023 | Juega y demuestra que eres mejor Puntaje: 0 R\u00e9cord: 1023 Estado: esperando Velocidad: 1.00x Corre, salta, usa doble salto y sobrevive lo m\u00e1ximo posible. Obst\u00e1culos aleatorios, plataformas, parallax infinito y r\u00e9cord. EMPEZAR REINICIAR\" \/>\n<meta property=\"og:url\" content=\"https:\/\/academiaalpha.online\/en\/alpharun\/\" \/>\n<meta property=\"og:site_name\" content=\"Academia Alpha Online\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-04T20:37:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-29T00:08:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/academiaalpha.online\/wp-content\/uploads\/2026\/04\/alpharun.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1536\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/academiaalpha.online\\\/alpharun\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/academiaalpha.online\\\/alpharun\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/academiaalpha.online\\\/#\\\/schema\\\/person\\\/82b832df81e678fceba01f42cfaa6d0d\"},\"headline\":\"Alpha Run: Corre, salta, sobrevive\u200b\",\"datePublished\":\"2026-04-04T20:37:27+00:00\",\"dateModified\":\"2026-04-29T00:08:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/academiaalpha.online\\\/alpharun\\\/\"},\"wordCount\":48,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/academiaalpha.online\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/academiaalpha.online\\\/alpharun\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/academiaalpha.online\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/alpharun.png\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/academiaalpha.online\\\/alpharun\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/academiaalpha.online\\\/alpharun\\\/\",\"url\":\"https:\\\/\\\/academiaalpha.online\\\/alpharun\\\/\",\"name\":\"Alpha Run: Corre, salta, sobrevive\u200b - Academia Alpha Online\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/academiaalpha.online\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/academiaalpha.online\\\/alpharun\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/academiaalpha.online\\\/alpharun\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/academiaalpha.online\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/alpharun.png\",\"datePublished\":\"2026-04-04T20:37:27+00:00\",\"dateModified\":\"2026-04-29T00:08:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/academiaalpha.online\\\/alpharun\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/academiaalpha.online\\\/alpharun\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/academiaalpha.online\\\/alpharun\\\/#primaryimage\",\"url\":\"https:\\\/\\\/academiaalpha.online\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/alpharun.png\",\"contentUrl\":\"https:\\\/\\\/academiaalpha.online\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/alpharun.png\",\"width\":1536,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/academiaalpha.online\\\/alpharun\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/academiaalpha.online\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Alpha Run: Corre, salta, sobrevive\u200b\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/academiaalpha.online\\\/#website\",\"url\":\"https:\\\/\\\/academiaalpha.online\\\/\",\"name\":\"Academia Alpha Online\",\"description\":\"Transformamos ideas en proyectos visuales impactantes, ense\u00f1ando dise\u00f1o, edici\u00f3n y motion graphics para emprendedores y creativos. \ud83d\ude80\",\"publisher\":{\"@id\":\"https:\\\/\\\/academiaalpha.online\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/academiaalpha.online\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/academiaalpha.online\\\/#organization\",\"name\":\"Academia Alpha Online\",\"url\":\"https:\\\/\\\/academiaalpha.online\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/academiaalpha.online\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/academiaalpha.online\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/logoalpha.svg\",\"contentUrl\":\"https:\\\/\\\/academiaalpha.online\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/logoalpha.svg\",\"width\":500,\"height\":500,\"caption\":\"Academia Alpha Online\"},\"image\":{\"@id\":\"https:\\\/\\\/academiaalpha.online\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/academiaalpha.online\\\/#\\\/schema\\\/person\\\/82b832df81e678fceba01f42cfaa6d0d\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dab230842810b3fa811a603c86af02ea0d4ef41d4e5dd6ec172e1a0370e30f85?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dab230842810b3fa811a603c86af02ea0d4ef41d4e5dd6ec172e1a0370e30f85?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/dab230842810b3fa811a603c86af02ea0d4ef41d4e5dd6ec172e1a0370e30f85?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"https:\\\/\\\/academiaalpha.online\"],\"url\":\"https:\\\/\\\/academiaalpha.online\\\/en\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Alpha Run: Run, Jump, Survive - Alpha Academy Online","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/academiaalpha.online\/en\/alpharun\/","og_locale":"en_US","og_type":"article","og_title":"Alpha Run: Corre, salta, sobrevive\u200b - Academia Alpha Online","og_description":"Alpha Run \u00bfPuedes superar 1000 puntos? | R\u00e9cord actual: 1023 | Juega y demuestra que eres mejor Puntaje: 0 R\u00e9cord: 1023 Estado: esperando Velocidad: 1.00x Corre, salta, usa doble salto y sobrevive lo m\u00e1ximo posible. Obst\u00e1culos aleatorios, plataformas, parallax infinito y r\u00e9cord. EMPEZAR REINICIAR","og_url":"https:\/\/academiaalpha.online\/en\/alpharun\/","og_site_name":"Academia Alpha Online","article_published_time":"2026-04-04T20:37:27+00:00","article_modified_time":"2026-04-29T00:08:00+00:00","og_image":[{"width":1536,"height":1024,"url":"https:\/\/academiaalpha.online\/wp-content\/uploads\/2026\/04\/alpharun.png","type":"image\/png"}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/academiaalpha.online\/alpharun\/#article","isPartOf":{"@id":"https:\/\/academiaalpha.online\/alpharun\/"},"author":{"name":"admin","@id":"https:\/\/academiaalpha.online\/#\/schema\/person\/82b832df81e678fceba01f42cfaa6d0d"},"headline":"Alpha Run: Corre, salta, sobrevive\u200b","datePublished":"2026-04-04T20:37:27+00:00","dateModified":"2026-04-29T00:08:00+00:00","mainEntityOfPage":{"@id":"https:\/\/academiaalpha.online\/alpharun\/"},"wordCount":48,"commentCount":0,"publisher":{"@id":"https:\/\/academiaalpha.online\/#organization"},"image":{"@id":"https:\/\/academiaalpha.online\/alpharun\/#primaryimage"},"thumbnailUrl":"https:\/\/academiaalpha.online\/wp-content\/uploads\/2026\/04\/alpharun.png","inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/academiaalpha.online\/alpharun\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/academiaalpha.online\/alpharun\/","url":"https:\/\/academiaalpha.online\/alpharun\/","name":"Alpha Run: Run, Jump, Survive - Alpha Academy Online","isPartOf":{"@id":"https:\/\/academiaalpha.online\/#website"},"primaryImageOfPage":{"@id":"https:\/\/academiaalpha.online\/alpharun\/#primaryimage"},"image":{"@id":"https:\/\/academiaalpha.online\/alpharun\/#primaryimage"},"thumbnailUrl":"https:\/\/academiaalpha.online\/wp-content\/uploads\/2026\/04\/alpharun.png","datePublished":"2026-04-04T20:37:27+00:00","dateModified":"2026-04-29T00:08:00+00:00","breadcrumb":{"@id":"https:\/\/academiaalpha.online\/alpharun\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/academiaalpha.online\/alpharun\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/academiaalpha.online\/alpharun\/#primaryimage","url":"https:\/\/academiaalpha.online\/wp-content\/uploads\/2026\/04\/alpharun.png","contentUrl":"https:\/\/academiaalpha.online\/wp-content\/uploads\/2026\/04\/alpharun.png","width":1536,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/academiaalpha.online\/alpharun\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/academiaalpha.online\/"},{"@type":"ListItem","position":2,"name":"Alpha Run: Corre, salta, sobrevive\u200b"}]},{"@type":"WebSite","@id":"https:\/\/academiaalpha.online\/#website","url":"https:\/\/academiaalpha.online\/","name":"Academia Alpha Online","description":"We transform ideas into impactful visual projects by teaching design, editing, and motion graphics for entrepreneurs and creatives. \ud83d\ude80","publisher":{"@id":"https:\/\/academiaalpha.online\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/academiaalpha.online\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/academiaalpha.online\/#organization","name":"Academia Alpha Online","url":"https:\/\/academiaalpha.online\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/academiaalpha.online\/#\/schema\/logo\/image\/","url":"https:\/\/academiaalpha.online\/wp-content\/uploads\/2026\/04\/logoalpha.svg","contentUrl":"https:\/\/academiaalpha.online\/wp-content\/uploads\/2026\/04\/logoalpha.svg","width":500,"height":500,"caption":"Academia Alpha Online"},"image":{"@id":"https:\/\/academiaalpha.online\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/academiaalpha.online\/#\/schema\/person\/82b832df81e678fceba01f42cfaa6d0d","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/dab230842810b3fa811a603c86af02ea0d4ef41d4e5dd6ec172e1a0370e30f85?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/dab230842810b3fa811a603c86af02ea0d4ef41d4e5dd6ec172e1a0370e30f85?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dab230842810b3fa811a603c86af02ea0d4ef41d4e5dd6ec172e1a0370e30f85?s=96&d=mm&r=g","caption":"admin"},"sameAs":["https:\/\/academiaalpha.online"],"url":"https:\/\/academiaalpha.online\/en\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/academiaalpha.online\/en\/wp-json\/wp\/v2\/posts\/2594","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/academiaalpha.online\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/academiaalpha.online\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/academiaalpha.online\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/academiaalpha.online\/en\/wp-json\/wp\/v2\/comments?post=2594"}],"version-history":[{"count":67,"href":"https:\/\/academiaalpha.online\/en\/wp-json\/wp\/v2\/posts\/2594\/revisions"}],"predecessor-version":[{"id":2802,"href":"https:\/\/academiaalpha.online\/en\/wp-json\/wp\/v2\/posts\/2594\/revisions\/2802"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/academiaalpha.online\/en\/wp-json\/wp\/v2\/media\/2783"}],"wp:attachment":[{"href":"https:\/\/academiaalpha.online\/en\/wp-json\/wp\/v2\/media?parent=2594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/academiaalpha.online\/en\/wp-json\/wp\/v2\/categories?post=2594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/academiaalpha.online\/en\/wp-json\/wp\/v2\/tags?post=2594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}