Veteranos HL

Privado

Mensajes

  • RE: Banner de Hardlimit en app broadcast torneos entre elite uci chess engines

    dijo en Banner de Hardlimit en app broadcast torneos entre elite uci chess engines:

    1.png
    Ahora os subo el código completo. Para que @cobito cuando puedas y tengas tiempo en el index.html poner el banner de hardlimit. Ya he acabado de pulirlo lo más que he podido, pero como todo siempre se puede mejorar, ahora que funciona sin romperse voy a ver si lo puedo subir al cloud de hostinguer que es donde tengo la web, que me permite instalar node y subir todo el proyecto para que se ejecute en el servidor para evitar las caídas más probables en casa y que me consume recursos, que las caídad en cloud. Lo ideal es vps, pero como tengo cloud y esto no genera nada, pues si lo permite hostinguer en esta modalidad hosting pues ahí lo metemos. Pero vamos que podéis comentar y proponer cosas, para esto dejamos el hilo como centro de operaciones.

    https://ijccrl-live.ijccrl.com/ ( ahora ya se vé en tiempo real, he tenido que marear un poco al tener que usar cloudfare, tunnel etc, pero ahora ya es cuestión de que vosotros digáis donde podemos situar el banner, porque tendrá visitas aseguradas)

  • RE: Banner de Hardlimit en app broadcast torneos entre elite uci chess engines
  • RE: Banner de Hardlimit en app broadcast torneos entre elite uci chess engines

    1.png
    Ahora os subo el código completo. Para que @cobito cuando puedas y tengas tiempo en el index.html poner el banner de hardlimit. Ya he acabado de pulirlo lo más que he podido, pero como todo siempre se puede mejorar, ahora que funciona sin romperse voy a ver si lo puedo subir al cloud de hostinguer que es donde tengo la web, que me permite instalar node y subir todo el proyecto para que se ejecute en el servidor para evitar las caídas más probables en casa y que me consume recursos, que las caídad en cloud. Lo ideal es vps, pero como tengo cloud y esto no genera nada, pues si lo permite hostinguer en esta modalidad hosting pues ahí lo metemos. Pero vamos que podéis comentar y proponer cosas, para esto dejamos el hilo como centro de operaciones.

  • RE: Banner de Hardlimit en app broadcast torneos entre elite uci chess engines

    hardlimit.png )

  • RE: Banner de Hardlimit en app broadcast torneos entre elite uci chess engines

    El enlace con el sourcode ( falta pulir ui y detalles, pero ya funciona)
    https://mega.nz/file/By9nxagA#WKCU20-l_zDJkYJzFgsdMHP_IiSwpyYz-3cGFDuRVvU

  • RE: Banner de Hardlimit en app broadcast torneos entre elite uci chess engines

    @cobito Acabo de abrirlo desde mi lado, y sin problemas. De todas formas te lo subo a mega. Aprovecho para subir también el sourcode del proyecto que hemos conseguido por fih retransmisión a tiempo real.
    https://mega.nz/file/BjtQSIpa#Qgch1fBAWD3T3GfUPMVT8_BMail7b1ceD4WANXjfvxY

  • RE: Banner de Hardlimit en app broadcast torneos entre elite uci chess engines

    Os paso el enlace con mis contactos que la mayoría son todos extranjeros, menos un par de suscriptores que son de aquí ( uno de ellos vive en mi antiguo barrio en BCN). https://pixeldrain.com/u/7g3JuJrn

  • RE: Banner de Hardlimit en app broadcast torneos entre elite uci chess engines

    Ahora escribo yo, porque estoy medio ciego ya de escribir. Como podéis leer, hemos dado con la forma de hacerlo precisamente porque se lo he sugerido a GPT plus, porque con la app ( no descarto usarla si consigo o conseguimos salir del embudo, para ejecutarla desde linux en un vps, pero eso sería más adelante) no había forma. Ahora ya está resuelto, como bien ha explicado la IA. Un abrazo compañeros.

  • RE: Banner de Hardlimit en app broadcast torneos entre elite uci chess engines

    Perfecto. Vamos a endurecer el tono, hacerlo más “hardlimit”, y añadir fragmentos de código clave, sin postureo ni marketing. Esto es para gente que ha peleado con IPC, clocks y procesos en Windows/Linux.

    Te dejo un post técnico, listo para publicar, con propuesta clara del banner de hardlimit al final.


    🔧 Retransmisión de ajedrez en tiempo real – arquitectura UCI + Node.js (sin PGN, sin WinBoard)

    Buenas,

    abro este mensaje para documentar una solución técnica real encontrada hoy, después de meses de pruebas con arquitecturas que funcionaban pero no resolvían el problema de fondo.

    Lo comparto aquí porque el enfoque es interesante desde el punto de vista de arquitectura de sistemas, IPC, tiempo real y diseño limpio, independientemente de que os interese o no el ajedrez.


    🎯 El problema (definido correctamente)

    Objetivo:

    • Retransmitir partidas jugada a jugada en tiempo real
    • Motores locales (Stockfish y derivados)
    • Relojes exactos (control tipo 120+1)
    • Latencia mínima
    • Visualización estable durante horas
    • Control total del stack

    Restricciones reales:

    • ❌ PGN no es tiempo real (es un log)
    • ❌ WinBoard/XBoard es frágil bajo ejecución prolongada
    • ❌ Grabación de pantalla no es una solución técnica
    • ❌ APIs cerradas / servicios externos = caja negra

    Conclusión temprana (que tardamos en aceptar):

    El problema no se resuelve añadiendo capas, sino quitándolas.


    ❌ Por qué descartamos la app “clásica”

    Durante meses usamos:

    • cutechess-cli
    • WinBoard
    • VPS + scripts
    • parsing de PGN
    • polling periódico

    Sí, funcionaba… pero:

    • Latencia acumulada
    • Relojes inexactos
    • Estados inconsistentes
    • Complejidad innecesaria
    • Demasiados puntos de fallo

    El error no era de implementación.
    Era arquitectónico.


    ✅ Arquitectura final (la que sí funciona)

    La solución fue bajar al nivel correcto: UCI puro.

    [ Motor A ]        [ Motor B ]
         │                  │
         └────── UCI ───────┘
                   │
            Node.js (proxy UCI)
            child_process.spawn
                   │
            WebSocket (push)
                   │
              Navegador
    

    Sin PGN.
    Sin WinBoard.
    Sin polling.


    🔌 Fragmento clave 1: Lanzar motores (IPC real)

    import { spawn } from "child_process";
    
    const engine = spawn(
      "C:/engines/brainlearnjrc.exe",
      [],
      { stdio: "pipe", windowsHide: true }
    );
    
    engine.stdin.write("uci\n");
    engine.stdin.write("isready\n");
    

    Esto no es un wrapper mágico.
    Es stdin/stdout directo, como debe ser.


    ♟️ Fragmento clave 2: Loop UCI mínimo

    engine.stdout.on("data", (buf) => {
      const lines = buf.toString().split("\n");
      for (const line of lines) {
        if (line.startsWith("info ")) {
          // depth, eval, pv → streaming
        }
        if (line.startsWith("bestmove")) {
          // aplicar jugada inmediatamente
        }
      }
    });
    

    Cada bestmove es la verdad.
    No hay estados intermedios ni reinterpretaciones.


    ⏱️ Fragmento clave 3: Relojes exactos (no simulados)

    Este era el punto crítico.

    En lugar de movetime, se usa reloj real UCI:

    go wtime 120000 btime 120000 winc 1000 binc 1000
    

    En el proxy:

    thinkingStartedAt = Date.now();
    
    // cuando llega bestmove
    const elapsed = Date.now() - thinkingStartedAt;
    wTime = wTime - elapsed + increment;
    

    Resultado:

    • Relojes exactos
    • Incremento real
    • Comportamiento idéntico a un GUI serio
    • Sin drift acumulado

    🌐 Fragmento clave 4: WebSocket (push real)

    Nada de polling.

    const wss = new WebSocketServer({ server });
    
    function broadcast(obj) {
      const msg = JSON.stringify(obj);
      wss.clients.forEach(ws => ws.send(msg));
    }
    

    Eventos emitidos:

    • move
    • clock
    • info

    Latencia perceptible ≈ cero.


    🖥️ Visualización: decisiones pragmáticas

    • Piezas Unicode
    • CSS local
    • Sin CDN
    • Sin SVG
    • Sin dependencias externas

    ¿Por qué?

    Porque no se rompe.
    Esto tiene que aguantar horas/días en directo.


    📈 Resultado real

    En pocas horas:

    • Retransmisión jugada a jugada
    • Tiempo real auténtico
    • Relojes exactos
    • Eval/PV en vivo
    • Sistema estable
    • Código simple y auditable

    Lo que durante meses no cuajó con arquitecturas más “bonitas”.


    🧠 Conclusión (para ingenieros)

    • El PGN no es tiempo real
    • WinBoard no está pensado para streaming moderno
    • El nivel correcto era UCI, no por encima
    • Menos capas = más fiabilidad

    A veces la optimización real no es micro, sino conceptual.


    🧩 Propuesta: banner de HardLimit

    Dado que este proyecto se ha desbloqueado gracias a debates y mentalidad técnica como la que siempre ha habido aquí, me gustaría integrar un banner discreto de HardLimit en el visor live, por ejemplo:

    “Proyecto desarrollado y documentado por miembros veteranos de HardLimit.com

    Con enlace directo al foro/hilo.

    Si a los moderadores o a la comunidad le parece bien, encantado de hacerlo.


    Si alguien quiere:

    • revisar código
    • debatir clocks / scheduling
    • portar a Linux puro
    • o discutir escalado

    lo comentamos sin problema.

    Un saludo 👋
    y larga vida a los foros técnicos de verdad.

  • RE: Comprar o montar pc Gaming

    Coincido con @cobito en ello, es una configuración equilibrada aunque tenga una generación de CPU poco actual pero no me parece algo relevante, la serie 5000 de AMD fue tan buena que a día de hoy sigue metiendo caña. La 5060 de Nvidia es de esta generación así que tendrá acceso a lo mejorcito de esta generación y disfrutará de los juegos en 1080p a altas tasas de frames y en 1440p, podrá dar batalla con DLSS.

    El único problema que yo veo aunque, insisto, no es un problema gordo, es que cuando quieras actualizar CPU, tendrás que actualizar placa base y la RAM a DDR5. Otro handicap es que no es la mejor época para comprar componentes por el tema de la DRAM que implica un siempre un sobrecoste pero claro, nadie te garantiza que no se vaya a poner peor y un PC se necesita cuando se necesita, tampoco es fácil elegir la época correcta...

    En definitiva, buena máquina, espero que tu nieto lo disfrute muchos, muchos años.