5v5
Táctico de verdad
Hoy: retroceso fijo que se aprende, precisión que depende del movimiento y penetración según el material, con dos armas. Rondas, economía y bomba llegan en F6. No se agrega contenido hasta que el núcleo cumpla sus criterios.
demo · 64 Hz · tick 0004096
En desarrollo FPS táctico 5v5 · PC · fase actual: API para IAs
Humanos e inteligencias artificiales en la misma partida, con las mismas reglas, la misma información y los mismos controles. Un shooter táctico pensado para correr en PCs viejos.
Humano: W + disparo · yaw 90,0° · pitch 0,0° · ve el tick 4091IA: A · yaw 292,0° · pitch 0,0° · ve el tick 4092
El mismo formato para personas e IAs: los bytes no dicen quién los escribió. El rol viaja en el token firmado de la conexión, y con él el servidor aplica la percepción y los límites de cada liga.
El objetivo
BotStrikes parte de una pregunta: ¿quién gana cuando humanos e IAs juegan con exactamente las mismas reglas? Para responderla hace falta un juego donde una IA sea un jugador más. Se conecta por el mismo protocolo documentado, envía las mismas teclas y movimientos de ratón que una persona y solo recibe lo que el servidor le autoriza a ver. Lo impone el servidor: no se confía en el código de nadie.
5v5
Hoy: retroceso fijo que se aprende, precisión que depende del movimiento y penetración según el material, con dos armas. Rondas, economía y bomba llegan en F6. No se agrega contenido hasta que el núcleo cumpla sus criterios.
64Hz
El servidor decide cada movimiento y cada disparo. Solo envía los jugadores con línea de visión directa, sin margen: lo que está detrás de una pared no viaja por la red. Enviar comandos más rápido no mueve ni dispara más rápido.
60FPS · UHD 630
Objetivos: 1080p a 60 FPS en una Intel UHD 630 y 200 FPS o más en una GTX 750 Ti, con motor propio en C++ y menos de 1 GB. Hoy corre solo en Linux; Windows llega en F8.
Modalidades
Todas usan el mismo servidor y el mismo comando de 14 bytes. Cambia quién está del otro lado, y cuánto se parece la mano de la IA a la de una persona.
PersonaIA
El shooter táctico de siempre, sobre un servidor que no deja información oculta para robar.
El servidor ya aplica a la IA límites de manos provisionales: ve el mundo con 150 ms de retraso y gira como máximo a 1.800 °/s. Todavía no están validados; se calibrarán con datos de jugadores reales y se publicarán por temporada.
La liga de ingeniería. Entre máquinas no hay límites de manos: puntería y reflejos libres. Lo que nunca cambia es la información: cada IA recibe solo lo que vería una persona en su pantalla.
Personas e IAs en el mismo equipo. Si hay una persona en la partida, todas las IAs juegan con los límites de manos.
Estado del proyecto · 12 sep 2026
El juego se construye por fases, y cada fase tiene criterios que verifica una máquina. Lo que no se puede medir, como la sensación al moverse o al disparar, lo aprueba una persona antes de avanzar. Todavía no hay descarga pública.
CerradaEn cursoPendiente
Movimiento (F1) y disparo local (F2) están cerrados: el fundador los probó y los aceptó para avanzar. La red (F3a) funciona: servidor autoritativo a 64 Hz, transporte cifrado, visión decidida por el servidor y colisión entre jugadores. Ahora el servidor también decide cada disparo:
F4Criterios técnicos cumplidos; falta H5, la validación de los valores de justicia por el fundador. En el servidor: roles firmados en el token, percepción de IA y modelo motor provisional. Un oráculo independiente revisó 1.000.000 de escenas sin encontrar fugas, y un bot tramposo que ataca con el protocolo crudo a un servidor real no pasa ninguna de sus 8 comprobaciones. Funcionan la biblioteca C y el SDK Python, documentados, con dos bots de referencia, y el gym de entrenamiento: diez bots juegan 30 s de partida en 0,17 s. Todavía no se publican, porque el repositorio es privado.
F5El primer sector competitivo del mapa, con gráficos de producción, medido contra los presupuestos de hardware.
10 jugadores simulados disparando de verdad durante 10 s en el campo de pruebas (281 disparos, 18 muertes), en un i7-10700, contando las cabeceras IPv6. El p99 varía entre corridas; todas las registradas quedan por debajo de 0,5 ms. En amarillo, lo que está cerca del tope. Se repetirá con el mapa definitivo.
Ocho partidas 5v5 a la vez en la misma máquina, cada una con 5 personas y 5 IAs, todas simuladas: tick p99 entre 0,116 y 0,212 ms, con un tope de 2 ms.
Reproducible: un millón de pasos de simulación dan el mismo hash, 13f4506939c2211d, en GCC, GCC con sanitizers y Clang.
Los problemas que todavía no están resueltos, y cómo planeamos resolverlos.
Requisitos de hardware · planificados
El shooter competitivo se juega en cibercafés, notebooks de oficina y PCs de hace diez años. Si el juego no corre ahí, la comparación entre personas y máquinas la gana el mejor hardware. Por eso el rendimiento es un contrato: hoy cada verificación completa exige los presupuestos de red y de servidor, y antes de F5 una caída de FPS mayor al 5 % contra la línea base también romperá la verificación.
| Perfil | Hardware de referencia | Objetivo | Evidencia hoy |
|---|---|---|---|
| Notebook de oficina (el perfil más exigente) | Intel HD 620, 2 núcleos / 4 hilos, 8 GB, disco mecánico | 1080p ≥ 60 FPS, carga ≤ 15 s | Pendiente Hardware por conseguir. |
| iGPU de escritorio | Intel UHD 630 | 1080p, frame p99 ≤ 16,6 ms | Pendiente La iGPU de la máquina de pruebas aún no está activada. |
| Dedicada vieja | GTX 750 Ti · Radeon HD 7870 2 GB | ≥ 200 FPS; en la HD 7870, media ≥ 300 y 1 % bajo ≥ 200 | Medido Campo de pruebas en la HD 7870: 5.916 FPS de media, p99 0,220 ms. Es una escena chica, no una partida 5v5. |
| Servidor | 1 núcleo de un i7-10700 por partida | Tick p99 ≤ 1 ms en un 5v5 | Medido 0,066 ms con 10 jugadores simulados disparando, campo de pruebas. |
| Conexión | Cualquier banda ancha doméstica | ≤ 32 KB/s de bajada y ≤ 8 KB/s de subida por jugador | Medido 21,4 y 7,7 KB/s en el peor caso. |
| Memoria y CPU | Equipo de 4 GB o más | RAM ≤ 1,5 GB, VRAM ≤ 384 MB, CPU ≤ 5 ms por frame en una CPU de 4 núcleos de 2015 | Pendiente Se medirá con el mapa y los gráficos de F5. |
| Instalación | Disco duro o SSD | < 1 GB en la primera versión pública | Pendiente Todavía no hay instalador. |
| Sistema | Linux hoy; Windows 10/11 en F8 | Mismos presupuestos en Windows con la UHD 630 | Pendiente No hay build de Windows todavía. |
Por qué estos números: la UHD 630 y la HD 620 son gráficos integrados comunes en equipos de oficina de 2017–2018; 200 FPS en una tarjeta de 2014 deja margen para monitores de alta frecuencia; 1 GB se descarga en conexiones lentas. Todavía no medimos cuántos cibercafés y hogares de la región tienen algo peor: si tu equipo es más viejo, queremos saberlo. Lo que no está medido dice «pendiente».
No te pedimos que creas en BotStrikes. Cada cifra marcada como medida tiene un registro con su escenario, su máquina y su fecha; el resto está marcado como objetivo o pendiente. El código todavía es privado: si quieres el registro de una cifra, pídelo y te lo enviamos con su método.
Si tienes un PC viejo, una IA o una objeción sobre la justicia entre personas y máquinas, la invitación es la misma: trae tus datos (hardware, sistema, qué mediste y cómo) y los comparamos.
Enviar evidenciaSponsors
Buscamos patrocinadores fundadores para los premios de los primeros torneos: humanos contra humanos, humanos contra IA, IA contra IA y equipos mixtos. La meta es que cada partida se pueda reproducir y auditar, y que los resultados oficiales de Humanos vs IA se jueguen en LAN.
Hoy no pedimos dinero: pedimos una carta de intención sin compromiso. Los premios se definirán con bases públicas, entidad organizadora y fechas cuando exista la plataforma de torneos (fase F7).
Hablemos de patrociniocontacto@botstrikes.com
Para quienes programan IAs
La percepción y los límites de manos ya corren en el servidor, y el SDK Python y el gym de entrenamiento ya funcionan en pruebas internas, aunque todavía no se publican. El protocolo ya está documentado.
Leer la documentación# Un UserCmd: lo único que envía un jugador, persona o IA.
cmd = struct.pack("<IHHhBBH",
sequence, # sube de a uno por tick
FORWARD | FIRE, # teclas mantenidas
yaw_units(90.0), # 65.536 unidades por vuelta
pitch_units(0.0), # 1/256 de grado
RIFLE, 0, # arma pedida, reservado
view_tick) # tick al que dibujabas a los demás
assert len(cmd) == 14