Cómo se hizo
Qué ocurre detrás de la pantalla cuando juegas una carta en Caída
Qué hacen Dart, Flutter, Flame y el servidor cuando juegas una carta, y cómo se comparten las reglas entre Android y la web.
Tocas una carta, cruza la mesa y se lleva un grupo de naipes. A simple vista es un solo movimiento. Por dentro hay varias preguntas: si te toca jugar, si esa carta sigue en tu mano, qué puedes recoger y cuántos puntos corresponden.
Caída separa esas decisiones de la animación. Esa organización permite que la misma jugada tenga el mismo resultado en Android, en el navegador y en el servidor online.
Dart guarda las reglas; Flutter construye la aplicación
El motor de Caída está escrito en Dart y puede ejecutarse sin abrir ninguna pantalla. Recibe el estado de la partida y la acción que intenta un jugador. Si la acción es válida, produce el estado siguiente y describe lo que pasó: una carta jugada, una captura, una caída o un cambio de puntuación, por ejemplo.
Flutter se ocupa de la aplicación que ves: el menú, los ajustes, los botones de la mesa, los diálogos y la navegación. También permite compilar el proyecto para Android y para la web.
La separación se entiende bien con un caso del reglamento. Una carta recién repartida puede coincidir con la última que dejó el rival en la mano anterior. Esa coincidencia permite capturar, pero el reparto ya cortó la posibilidad de hacer caída. La decisión sale del motor. El aspecto o la posición de los naipes en la pantalla no alteran la regla.
Flame mueve la mesa
Las cartas y sus movimientos se representan con Flame, un motor de juegos construido sobre Flutter. Ofrece herramientas para componentes gráficos, imágenes, entradas y animaciones, como explica su documentación oficial.
En Caída, Flame recibe la información que necesita mostrar. Las pantallas de configuración siguen en Flutter y las reglas permanecen en Dart. Una carta puede volar hacia un jugador porque ya se decidió una captura; el vuelo no decide quién se la queda.
Esta distinción también ayuda al sincronizar secuencias. Cuando una animación bloqueante debe terminar antes del siguiente paso visual, la aplicación espera su final real. Si se abandona la mesa o se sustituye la presentación, esa espera se cancela para que un movimiento antiguo no afecte a la pantalla nueva.
En una partida online hay una autoridad común
Cuando juegas por internet, el servidor comprueba las acciones con el mismo núcleo de reglas. Los dispositivos envían lo que sus jugadores quieren hacer y reciben el estado que les corresponde ver.
La comunicación durante la partida usa WebSocket, una conexión que permite intercambiar mensajes sin cargar una página nueva por cada turno. La red también distingue una acción nueva de una petición repetida: si un mensaje vuelve a llegar por un reintento, no debe jugarse la misma carta dos veces.
Cada jugador recibe su propia mano y la información pública de los demás. La semilla que determina el orden del mazo se queda en la autoridad. Conservarla permite reproducir una partida para investigar un problema, pero compartirla con los rivales revelaría cartas que todavía no deberían conocer.
Firebase y SQLite tienen trabajos concretos
Firebase Hosting sirve la web. Firebase Authentication participa en el acceso con Google, y Firebase Cloud Messaging permite enviar avisos a Android. Las reglas de la partida continúan en el motor y en el servidor de Caída.
El servidor usa SQLite para los datos persistentes que requieren las cuentas y sus servicios, como el saldo de Riales o las relaciones de amistad. Una animación de cartas no escribe una puntuación en una base de datos por su cuenta. Primero tiene que existir el hecho de juego que la justifica.
Compartir código no elimina las diferencias del navegador
La versión web utiliza el mismo juego, pero tiene adaptaciones para almacenamiento, conexión y audio. Por ejemplo, el sonido debe respetar las restricciones del navegador y activarse a partir de una interacción del usuario. Por eso puede necesitar un primer toque antes de empezar a escucharse.
La LAN tampoco está disponible en la web: organizar una sala en la red local exige capacidades que esta versión del navegador no ofrece pero sí puedes compartir una sala online con alguien que juega desde Android.
Las reglas se comprueban con pruebas automatizadas, incluidas ejecuciones de los paquetes de Dart en Chrome. Así se revisa el comportamiento en el entorno donde también van a jugar los usuarios de la web. Una actualización del efecto de caída puede cambiar el movimiento, el sonido o las chispas; los puntos siguen dependiendo de la misma jugada validada.