Desarrollo de videojuegosDesarrollo WebDestacado

Bannermarch

Juego de estrategia medieval persistente en el navegador sobre hacer crecer una Casa mediante feudos, alianzas, mercados y guerras.

ReactTypeScriptCloudflare WorkersDurable ObjectsSQLiteWebSockets
Un caballero solitario contempla un asentamiento junto al río, una caravana, soldados en marcha y una fortaleza lejana bajo nubes de tormenta.

Construí Bannermarch como un juego de estrategia persistente pensado para el navegador, donde el jugador empieza como un caballero sin tierras y hace crecer una Casa con varios feudos. El mundo sigue avanzando mientras el navegador está cerrado. Los jugadores gestionan la producción, construyen edificios, reclutan infantería, trasladan recursos y ejércitos, saquean Casas rivales, forman alianzas, comercian mediante mercados con transporte y siguen cada resultado en la Crónica. React y TypeScript ejecutan el cliente, mientras Cloudflare Workers, Durable Objects respaldados por SQLite y WebSockets mantienen la simulación autoritativa y persistente.

El problema

Un juego de estrategia persistente tiene que mantener en marcha las economías, los viajes y los conflictos durante ausencias largas sin confiar en el navegador ni ejecutar un único bucle global costoso. Las acciones multijugador también deben resolverse con el estado actual, incluso cuando dos Casas actúan casi al mismo tiempo.

El enfoque

El cliente en React se encarga de la presentación y envía comandos a un Cloudflare Worker autoritativo. Durable Objects respaldados por SQLite controlan cada Casa y los sistemas compartidos del mundo. El estado basado en el tiempo se resuelve de forma diferida cuando vuelve un jugador, mientras las alarmas procesan los eventos que no pueden esperar al próximo inicio de sesión. Sesiones de batalla dedicadas por WebSocket transmiten estados validados para el combate cooperativo en tiempo real.

Decisiones destacadas

  • Autoridad del servidor para la economía, las campañas, los mercados y el combate. El cliente nunca decide resultados que afecten a otro jugador.
  • Evaluación diferida de recursos en lugar de un tick global. Cada lectura o acción resuelve primero el tiempo transcurrido, con límites de almacenamiento y un máximo de acumulación de 72 horas.
  • Durable Objects específicos por dominio para Casas, Crónicas, regiones, alianzas, diplomacia, mercados, territorios, guerras, correspondencia y cuentas.
  • Acciones idempotentes y transacciones SQLite para que los reintentos no dupliquen construcciones, envíos, reclutamiento ni recompensas.
  • Las sesiones de batalla por WebSocket mantienen la respuesta del campo mientras el Durable Object sigue siendo la fuente de verdad.
  • Inicio de sesión con contraseña y Google, recuperación de un solo uso, sesiones HttpOnly, verificaciones de Turnstile y correos localizados del Heraldo dentro de la misma plataforma Worker.

Estado

Alpha jugable disponible en play.bannermarch.com y en desarrollo activo. La versión actual incluye economías con varios feudos, saqueos contra NPC y jugadores, alianzas, tratados, mercados con transporte, guerras territoriales, ocupaciones, correspondencia y batallas cooperativas en tiempo real.

¿Quieres un trabajo similar para tu equipo?

Ingeniería sénior para productos de IA, cloud y web, desde la arquitectura hasta la entrega en producción.