Мобильная игра "Крестики-нолики" в дополненной реальности на Unity с ECS-архитектурой.
Tic-Tac-Toe-AR - AR-версия классической игры, где поле рендерится поверх реального мира через AR Foundation.
Проект построен на LeoECS + UniLeo, чтобы разделять данные и системы и упростить расширение (новые режимы, боты, мультиплеер, доп. UI).
- Игра в двух режимах:
Игрок vs ИгрокиИгрок vs Бот. - Несколько уровней сложности бота:
Easy,Normal,Hard+Tournament. - Режим турнира со статистикой лучших результатов.
- Сохранение пользовательских данных (
PlayerPrefs): настройки, статистика, турнирные результаты. - Работа в AR на устройстве и fallback-режим для редактора (
EditorOrAR). - Навигация по UI и игровой цикл реализованы через ECS-системы.
Unity 2021.3.4f1AR Foundation 4.2.3ARCore 4.2.3(Android)ARKit 4.2.3(iOS)Leopotam.EcsUniLeo(конвертация Unity-компонентов в ECS)TextMeshPro
git clone <your-repo-url>
cd Tic-Tac-Toe-AR- Запустите
Unity Hub. - Добавьте папку проекта.
- Откройте проект в версии
2021.3.4f1. - Дождитесь импорта пакетов.
- Откройте сцену
Assets/Scenes/Menu/Menu.unity. - Нажмите
Play. - В редакторе автоматически включается не-AR-режим (см.
EditorOrAR), чтобы можно было тестировать без устройства.
File -> Build Settings -> Android -> Switch Platform.- Добавьте сцены в Build:
Assets/Scenes/Menu/Menu.unityAssets/Scenes/Game/Game.unity
- Проверьте
XR Plug-in Managementи включенныйARCore. - Соберите APK/AAB и установите на устройство с поддержкой ARCore.
File -> Build Settings -> iOS -> Switch Platform.- Убедитесь, что включен
ARKitвXR Plug-in Management. - Сделайте билд Xcode-проекта и запустите на устройстве с поддержкой ARKit.
Проект разделен на два ECS-контекста:
Menu:- инициализация UI меню;
- выбор режима игры и сложности бота;
- выбор маркера и переход в игровую сцену.
Game:- инициализация игроков и конфигурации партии;
- игровой цикл (ходы, проверка конца игры, статистика);
- обновление UI и визуальных эффектов клеток;
- работа с ботами через отдельные стратегии.
Ключевые точки входа:
Assets/Scenes/Menu/MenuEcsStartup.csAssets/Scenes/Game/GameEcsStartup.cs
Assets/
Scenes/
Menu/ # меню, выбор режима/бота/маркера, навигация
Game/ # игровая сцена, AR-объекты, поле, боты, UI, циклы игры
PlayerData.cs # сохранение статистики и настроек
Packages/
manifest.json # зависимости Unity-проектa
ProjectSettings/
ProjectVersion.txt
Сохраняются через PlayerPrefs:
- статистика против
Easy,Normal,Hard; - пользовательские настройки (музыка/звук, формат даты и времени);
- таблица результатов режима
Tournament.
Сброс доступен из меню настроек.
- Основные сцены проекта уже добавлены в
Build Settings. - Логика по системам распределена по папкам
Menu/SystemsиGame/Systems. - Для новых механик лучше добавлять:
- отдельные компоненты данных;
- отдельные ECS-системы;
- инъекцию зависимостей через существующие
*EcsStartup.
- Онлайн-мультиплеер.
- Более продвинутый ИИ (minimax/alpha-beta).
- Гибкая настройка размера поля и условий победы.
- Синхронизация профиля/статистики через облако.