Гомоку (пять в ряд) на Kotlin Multiplatform и движке KorGE 6 с дизайн-системой Kintsugi — васи, тушь и золотые жилы: победная линия выкладывается золотом, как трещины в керамике кинцуги.
Таргеты: JVM (desktop) · JS · WasmJS · Android · iOS.
🎮 Играть в браузере: https://ivanlutsenko.github.io/gomoku/
Требуется JDK 21.
./gradlew runJvm # desktop (основной вариант разработки)
./gradlew jsBrowserDevelopmentRun # браузер (JS)
./gradlew assembleDebug # Android APK → build/outputs/apk/debug/
./gradlew compileKotlinIosArm64 # iOS-таргет
./gradlew jvmTest # тесты- Геймплей: доска 15×15, победа от 5 камней в ряд (freestyle, overline засчитывается), отмена ходов (в том числе победного — партию можно продолжить), ничья, финальный оверлей с «Посмотреть доску».
- AI: три уровня. Легко — random-near; Средне — эвристика угроз на скользящих окнах (видит разрывные паттерны вроде
XX_XX); Сложно — та же оценка + 2-ply поиск (мой ход → лучший ответ соперника). Случайный tie-break, расчёт на фоновом потоке. - Режимы: против AI (цвет — чередование/белые/чёрные) или вдвоём за одним устройством.
- UI Kintsugi: светлая и тёмная темы, золотые жилы (Catmull-Rom + jitter, порт из дизайн-макета), «прорастание» победной жилы, анимация появления камня, камни с радиальным градиентом, DPI-резкий текст через bitmap-атласы.
- Опции: подсказки по запросу (3 на партию), подтверждение хода ghost-камнем, звук камня + вибрация (Android), фоновый эмбиент, персист настроек в JSON.
Правила — freestyle Gomoku: без запретов Renju (3×3, 4×4), ряд длиннее пяти тоже выигрывает.
src/main.kt — точка входа
src/scenes/ — экраны (Menu, Game, Settings, Help, Victory) + Nav
src/ui/ — дизайн-система Kintsugi (Theme, KinSeam, KinBoard, Stone, Widgets)
src/logic/ — правила игры, настройки, AI
src/model/ — Board, модели (Position с нотацией A1–O15)
test/ — kotlin.test + KorGE ViewsForTesting
docs/design/ — дизайн-токены и спецификации (источник истины)
- AI — эвристика + 2-ply, не полный минимакс.
- Координат A–O/1–15 на доске пока нет.
Backlog ведётся вне репозитория.