Skip to content

ExxDreamerCode/Ember

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔥 Ember — шахматный движок на Rust

Rust Version UCI Compatible Pre-release License

Ember — это UCI-совместимый шахматный движок на Rust, который я пишу для изучения и экспериментов. Проект в активной разработке, регулярно допиливается и улучшается.

⚠️ Пре-релиз: движок пока не супер-сильный, в нём есть баги и недочёты. PR и идеи приветствуются!

🚀 Что уже реализовано

Поиск

  • Negamax с альфа-бета отсечением
  • PVS (Principal Variation Search)
  • LMR (Late Move Reductions) — редукция поздних ходов
  • Null Move Pruning с адаптивной редукцией
  • Итеративное углубление с аспирационными окнами
  • Тихий поиск (Quiescence Search) с SEE-фильтрацией
  • Транспозиционная таблица со стратегией always-replace
  • IID (Internal Iterative Deepening)
  • Reverse Futility Pruning — отсечение по статической оценке
  • Сортировка ходов: TT-ход, взятия (MVV-LVA), killer-ходы, counter-ходы, история
  • Продление на шах
  • Дельта-отсечение в тихом поиске
  • SEE-отсечение (Static Exchange Evaluation)

Оценка позиции

  • Таблицы PST (Piece Square Tables) для миттельшпиля и эндшпиля
  • Оценка мобильности для коней, слонов, ладей, ферзей
  • Пешечная структура: сдвоенные, изолированные и проходные пешки
  • Безопасность короля: обнаружение атак и пешечное укрытие
  • Бонус за пару слонов
  • Ладьи на открытых линиях
  • Определение фазы игры (плавная оценка)
  • Корректирующая история (Correction History)

Прочее

  • Zobrist-хеширование позиций
  • Обнаружение троекратного повторения
  • Взятие на проходе и рокировка
  • SEE (Static Exchange Evaluation)
  • Протокол UCI (совместимость с Arena, Cute Chess и др.)

📋 Планы по улучшению

  • Тюнинг оценочной функции (настройка весов)
  • Поддержка нескольких потоков (Lazy SMP)
  • Улучшенное управление временем
  • Syzygy tablebases
  • Pondering (думание на чужом времени)

📋 Требования

  • Rust 1.70 или новее
  • UCI-совместимая оболочка (например, Arena, Cute Chess, Lichess)

🔧 Установка

♟️ Использование

С графической оболочкой

  1. Откройте вашу UCI-совместимую шахматную программу
  2. Добавьте движок: укажите путь к скачанному бинарнику
  3. Начинайте игру!

Командная строка

# Интерактивный режим
cargo run --release

# Или передача UCI-команд
echo -e "uci\nisready\nquit" | cargo run --release

UCI-опции

Опция Тип По умолч. Диапазон Описание
Hash spin 128 1–4096 Размер TT в мегабайтах
Threads spin 1 1 Количество потоков (только 1)

⚙️ Настройка

Изменение параметров движка через UCI-команду setoption:

setoption name Hash value 256

📁 Структура проекта

├── src/
│   ├── main.rs         # Обработчик протокола UCI
│   └── lib.rs          # Ядро движка: поиск, оценка, генерация ходов
├── Cargo.toml
└── Cargo.lock

🛠️ Разработка

# Запуск тестов
cargo test

# Проверка ошибок
cargo check

# Запуск с оптимизациями
cargo run --release

🤝 Вклад

Нашёлся баг? Есть идея? Открывайте issue или PR — буду рад помощи и обратной связи!

📄 Лицензия

Этот проект распространяется под лицензией MIT.

About

Chess engine written on Rust

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages