Tarati es un juego de mesa estratégico creado por George Spencer-Brown, autor de Laws of Form, que aplica su cálculo de distinciones al juego. La estructura es minimalista pero las consecuencias son profundas: los jugadores mueven piezas, voltean piezas enemigas y promueven las propias a través de un tablero de 23 vértices organizados en zonas concéntricas.
Diseñado como aplicación práctica del cálculo de distinciones de Brown, Tarati encarna los principios matemáticos y filosóficos de Laws of Form — obra fundamental que explora la lógica a través del concepto de distinción.
Capturar la última pieza enemiga (Mit), dejar al oponente sin movimientos legales, o mantener ventaja material cuando la partida termina por otra condición.
El tablero tiene 23 vértices distribuidos en cuatro zonas:
- Centro absoluto: 1 vértice (A1)
- Puente: 6 vértices que conectan el centro con la circunferencia
- Circunferencia: 12 vértices que forman el anillo exterior
- Bases domésticas: 4 vértices por jugador (8 en total), un par en cada extremo
Cada jugador comienza con 4 Cobs colocados en su base doméstica.
Cob — la pieza básica. Se mueve solo hacia adelante, por aristas en dirección a la base enemiga. No puede retroceder salvo que sea promovida.
Rok — un Cob promovido. Se mueve libremente en cualquier dirección a lo largo de cualquier arista. Un Cob se convierte en Rok al entrar en cualquier vértice de la base doméstica del oponente.
Una pieza se mueve a un vértice adyacente libre. Al llegar, voltea todas las piezas enemigas directamente conectadas a ese vértice, convirtiéndolas al color del jugador activo. Los Roks conservan su estado tras ser volteados.
Un Cob está muerto cuando no tiene movimientos hacia adelante disponibles. Esto ocurre en dos casos:
- Muerte primaria: el Cob ocupa uno de los dos vértices más interiores de la base enemiga (vértices D3/D4 para blancas, D1/D2 para negras).
- Muerte por proximidad: todos los vértices adyacentes hacia adelante están ocupados por otros Cobs muertos del mismo color.
Los Roks nunca están muertos.
Cuando un jugador no tiene movimientos normales pero tiene uno o más Cobs muertos que ganarían al menos un movimiento tras su promoción, debe promover uno de esos Cobs en el lugar a Rok. Esta promoción es obligatoria y reemplaza al movimiento normal.
La partida termina cuando:
- Mit: un jugador captura todas las piezas enemigas en un solo movimiento.
- Stalemit: el jugador activo no tiene movimientos normales ni promociones forzadas disponibles. Gana el oponente.
- Triple repetición: la misma posición de tablero aparece tres veces con el mismo jugador a mover. Pierde el jugador que provocó la tercera repetición.
- Regla de 50 movimientos: si transcurren 100 semimovimientos consecutivos sin un movimiento de Cob ni ninguna promoción, el jugador activo puede reclamar tablas. Un jugador con un movimiento ganador disponible no puede reclamar.
![]() |
![]() |
|---|---|
![]() |
![]() |
Interfaz intuitiva construida con Jetpack Compose.
Requisitos:
- Android 8.0 (API 26) o superior
- 5–10 MB de espacio libre
- Pantalla táctil
Instalación:
- Descargá el APK desde el enlace anterior.
- Permitir instalación desde fuentes desconocidas si se solicita.
- Ejecutar el APK y seguir las instrucciones en pantalla.
| Componente | Librería / Versión |
|---|---|
| Lenguaje | Kotlin 2.2.21 |
| UI | Jetpack Compose 1.11.0, Material Design 3 |
| Inyección de dependencias | Koin 4.1.1 |
| Almacenamiento local | Room 2.8.3, DataStore 1.1.7 |
| Tests | JUnit 4.13.2 |
| Concurrencia | Kotlin Coroutines |
| Arquitectura | MVVM |
| IA | Minimax con poda Alpha-Beta, profundización iterativa, tabla de transposición |
core/
├── data/
│ ├── database/ # Base de datos Room y DAOs
│ └── repositories/ # Implementaciones de repositorios
├── domain/
│ ├── ai/ # Motor, evaluador, estrategia minimax
│ ├── game/ # Tablero, estado de juego, lógica de movimientos
│ ├── repository/ # Interfaces de repositorio
│ └── tutorial/ # Definición de pasos del tutorial
└── utils/
├── helpers/ # Auxiliares de fecha/hora
└── logging/ # Sistema de logging
features/
├── game/ # Pantalla de juego principal y ViewModel
├── detail/ # Pantalla de detalle de partida
├── library/ # Biblioteca de partidas guardadas
├── settings/ # Pantalla de configuración
└── splash/ # Pantalla de inicio
services/
├── ai/ # Servicio de IA y ViewModel
├── clipboard/ # Exportación de partidas por portapapeles
├── dialogs/ # Sistema de diálogos
├── localization/ # Gestión de idiomas
└── sound/ # Sistema de sonido
ui/
├── components/
│ ├── board/ # Renderizado del tablero, highlights, animaciones
│ ├── editor/ # Editor de tablero
│ ├── navigation/ # Grafo de navegación
│ ├── sidebar/ # Panel lateral
│ ├── topbar/ # Barra superior
│ ├── turnIndicator/ # Indicador de turno
│ └── tutorial/ # Componentes de UI del tutorial
└── theme/ # Sistema de diseño y temas
Más de 220 tests unitarios y previews de Compose.
- Concepto original: George Spencer-Brown — Laws of Form
- Referencia de implementación React: Adam Blvck
- Efectos de sonido: MattRuthSound
Tarati está fundamentado en Laws of Form de George Spencer-Brown, que introduce un cálculo matemáticamente completo construido íntegramente sobre el concepto de distinción.
"Enseñar el orgullo en el conocimiento es poner una barrera efectiva contra cualquier avance sobre lo que ya se conoce." — George Spencer-Brown
Este proyecto es una implementación educativa y no tiene fines comerciales. Todos los derechos del concepto original pertenecen a George Spencer-Brown.






