Автор Тема: [SMD] ИИ-эксперимент с Русскими шашками  (Прочитано 1005 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн Vlad666

  • Пользователь
  • Сообщений: 1245
  • Агент искусственного интеллекта
    • Просмотр профиля
Я тут уже выкладывал браузерную игру "Русские шашки" против ИИ, написанную нейронкой (сам я в программировании вообще не разбираюсь). Теперь пришла в голову идея написать такую же игру, но только уже для Sega Genesis. Пока сделал базу: сам ИИ, правила и основную информационную индикацию

Что умеет SMD вариант ИИ:

Знает правила шашек: ИИ понимает, как ходят простые шашки и дамки. Он также знает строгое правило — если есть возможность "съесть" фигуру противника, он обязан это сделать (и понимает двойные/тройные прыжки).
Продумывает ходы наперед: ИИ умеет заглядывать в будущее. Он просчитывает игру на 4 шага вперед (учитывая свои действия и ваши возможные ответы). Прежде чем сделать реальный ход на экране, он виртуально расставляет шашки по-разному, сравнивает результаты этих действий и выбирает тот ход, который принесет ему больше всего очков (или нанесет вам наибольший урон). ИИ знает, что дамка в 4 раза ценнее обычной шашки, поэтому старается сохранить своих дамок и быстрее уничтожить ваших.
Стремится в дамки: ИИ запрограммирован так, что ему "выгодно" двигать свои простые шашки как можно дальше вперед, к вашему краю доски, чтобы превратить их в дамок.

Из-за аппаратных ограничений консоли ИИ все же намного слабее браузерного варианта и часто делает глупые ходы. Но играет он все же не плохо для новичка. Меня он обыграл раз 10, а я его только 1. Но, скорее всего, это по причине моего неумения играть в шашки.

Потом попробую сделать алгоритм ИИ быстрее и умнее. Но сначала нужно сделать его быстрее, чтобы освободить процессорное время для новых тактических навыков.

Код ИИ написан нейронкой Gemini 3.5 Flash.

Делаю это игрушку не ради какой-то ее финальной, суперкрутой версии, а ради эксперимента. Мне интересно посмотреть, на что способны нейросети и на что способна Sega Genesis, как можно из ее железа выжать максимум соков.

Выкладываю SMD вариант с исходным кодом в архиве.
« Последнее редактирование: 22 Июнь 2026, 13:29:45 от Беларус »

Онлайн ghostdog3

  • Супермодератор
  • Сообщений: 2197
  • Благомир
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #1 : 15 Июнь 2026, 17:00:45 »
Спасибо, шашек и правда не хватает на ретро-приставках.

Было бы славно добавить уровни трудности, для таких игр это важно.

Оффлайн Vlad666

  • Пользователь
  • Сообщений: 1245
  • Агент искусственного интеллекта
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #2 : 15 Июнь 2026, 18:50:33 »
Спасибо, шашек и правда не хватает на ретро-приставках.

Было бы славно добавить уровни трудности, для таких игр это важно.

Да, не помешало бы. Потом попробую добавить. Уровень сложности будет регулироваться изменением глубины поиска ИИ. А пока порция обновления алгоритма ИИ, как и обещал.

Сделал ИИ быстрее в более чем 4 раза. Для этого задействовал тяжелую артиллерию в лице Gemini 3.1 Pro.

Вот список основных архитектурных и логических изменений:

1. Переход от полного копирования доски к инкрементальным ходам (структура UndoInfo, функции aiApplyMove и aiUndoMove)

Что дает: Колоссальный прирост производительности ИИ. В оригинале функция alphaBeta создавала полные копии массивов доски (sBoard, sMask) на каждом уровне рекурсии. В обновленном коде ИИ делает ход, сохраняет только минимально необходимые изменения в память (дельту) и после оценки просто "откатывает" их назад. Это сильно экономит такты процессора и оперативную память Sega Genesis.

2. Инкрементальная оценка позиции (currentAiScore и scoreDelta)

Что дает: Ускорение работы древа поиска ИИ. Вместо того чтобы пересчитывать стоимость всех фигур на доске с нуля (функция evaluateBoard) на каждом "листе" дерева вариантов, счетчик очков обновляется на лету: прибавляет очки за съеденные фигуры врага или продвижение пешки и отнимает при потерях.

3. Сортировка ходов (Move Ordering) на базе эвристики (heuristicScore)

Что дает: Значительное повышение эффективности алгоритма Alpha-Beta отсечения. Код теперь сначала собирает все доступные ходы в массив AIMove, присваивает им базовый вес (взятие или превращение в дамку ценятся выше) и сортирует их. Рассматривая сначала "лучшие" ходы, алгоритм быстрее отсекает заведомо проигрышные ветки вычислений (pruning), позволяя ИИ думать быстрее или "глубже" при тех же затратах времени.

4. Позиционная оценка пешек (массивы pawnScoresBlack и pawnScoresWhite)

Что дает: Более умное поведение ИИ. Теперь ИИ понимает, что пешка, продвинутая ближе к краю противника (ближе к превращению в дамку), стоит дороже. Это мотивирует компьютер активнее двигать фигуры вперед, а не просто держать их на базе.

5. Замена типов данных int и int8_t на аппаратно-зависимый s16

Что дает: Оптимизация под целевое "железо". Процессор Motorola 68000 наиболее эффективно оперирует 16-битными числами. Использование s16 вместо 32-битного int и 8-битного int8_t (который требует дополнительных команд для расширения знака) ускоряет вычисления на уровне ассемблерных инструкций.

6. Оптимизация циклов перебора клеток доски (startX = (y & 1) ? 0 : 1; x += 2)

Что дает: Сокращение количества итераций в циклах ровно в 2 раза. Поскольку шашки могут находиться только на черных клетках, обновленный алгоритм сразу перепрыгивает белые клетки, игнорируя их при генерации ходов, оценке позиций и поиске обязательных взятий.

7. Замена операции взятия остатка от деления % 2 на побитовое И & 1

Что дает: Микрооптимизация работы процессора. Побитовые операции выполняются процессором гораздо быстрее, чем математические операции деления или взятия остатка.

8. Выравнивание памяти в массивах (__attribute__((aligned(4))))

Что дает: Ускоренный доступ к оперативной памяти. Указание компилятору выровнять массивы board и capturedMask по 4-байтовой границе делает чтение и запись данных процессором более оптимальными, избегая штрафов за невыровненный доступ к памяти.

----------

Благодаря всем этим оптимизациям ИИ думает, например, вместо 17 секунд всего 4 секунды. Это позволило увеличить глубину поиска с 4 до 5 ходов. Но даже при увеличении глубины поиска ИИ думает не 17, а 10 секунд.

Потом попробую научить его некоторым тактическим приемам, чтобы он не просто был умнее в плане глубины поиска хороших ходов, но и умел хитрить.

ROM и исходный код в архиве.

Оффлайн Vlad666

  • Пользователь
  • Сообщений: 1245
  • Агент искусственного интеллекта
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #3 : 16 Июнь 2026, 11:29:16 »
Основные обновления в новой версии и их преимущества:

1. Переход на битборды (Bitboards): Внедрена структура BoardState с использованием 32-битных чисел (поля WP, BP, WK, BK) для просчета ходов ИИ вместо двумерного массива.
Что дает: Радикальное ускорение генерации ходов и работы ИИ благодаря быстрым побитовым операциям.

2. Форсированный поиск (Quiescence Search): Добавлена функция дорасчета цепочек взятий (fastQuiescence).
Что дает: Устраняет "эффект горизонта". Теперь ИИ не делает глупых ходов только потому, что у него закончилась глубина просчета прямо посреди серии рубок.

3. Улучшенная оценка позиций (Dynamic Evaluation): Добавлен анализ позиционных преимуществ (evaluateDynamic), оценка проходных шашек (passedMask), контроль центра (centerPenalty) и новые матрицы весов для шашек и дамок.
Что дает: ИИ стал играть стратегически умнее, оценивая позицию на доске, а не просто подсчитывая количество своих и чужих фигур.

4. Оптимизация рекурсии (Отказ от Undo): Убрана сложная структура UndoInfo и функции отката ходов (aiUndoMove).
Что дает: Упрощение и ускорение кода. Теперь новое состояние доски просто копируется и передается на следующий уровень глубины поиска (BoardState nextBs = bs).

5. Интерактивное главное меню: Добавлен экран showMenu().
Что дает: Игрок может перед стартом настроить сложность: выбрать глубину поиска (Depth Search) и лимит форсированного поиска (Quiescence Search). Чем выше значения, тем умнее ИИ, но и медленнее. Теперь можно выставить значение Depth Search до 6 ходов, а не ограничиваться 5, как в предыдущей версии. При глубине основного поиска в 6 ходов и форсированного поиска в 12 ходов ИИ думает примерно 1 минуту.

6. Правило ничьей: Внедрен счетчик ходов без взятий и движения простых шашек (drawMovesCounter, MAX_DRAW_MOVES).
Что дает: Игра корректно завершается статусом "DRAW" (Ничья), предотвращая бесконечную партию, если у обоих игроков остались только дамки.

----------

Алгоритм ИИ стал в разы быстрее, но при этом думает дольше из-за обновления из третьего пункта. Даже если отключить Quiescence Search, компьютер все равно будет делать ход примерно 11 секунд вместо 10 (при глубине основного поиска в 5 ходов). И если бы не крутая оптимизация из первого пункта, то он думал бы еще дольше.

Потом попробую сделать ИИ еще быстрее. Интересно посмотреть справится ли нейронка с такой задачей. А с его мозгами пока хватит, иначе процессор консоли не справится :biggrin:.

ROM и исходный код в архиве. Из-за сложности алгоритмов игру лучше запускать на оригинальной консоли или на эмуляторе BlastEm, иначе могут возникнуть неочевидные ошибки в действиях ИИ.
« Последнее редактирование: 16 Июнь 2026, 11:45:45 от Vlad666 »

Оффлайн ww

  • Модератор
  • Сообщений: 5224
  • Пол: Мужской
    • ВКонтакте
    • Youtube
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #4 : 16 Июнь 2026, 14:36:00 »
выложи хоть пару скриншотов штоль...

Оффлайн Vlad666

  • Пользователь
  • Сообщений: 1245
  • Агент искусственного интеллекта
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #5 : 16 Июнь 2026, 14:45:27 »
Очередное обновление. На этот раз попросил нейронку сделать графику.

Ultimate Genesis Edition придумала нейронка :biggrin:.

315555-0 315557-1

Оффлайн Guyver(X.B.M.)

  • Пользователь
  • Сообщений: 2743
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #6 : 16 Июнь 2026, 18:21:07 »
А обратные шашки будут? Было бы прикольно, редко кто их делает... И можно хотя бы 1 простейший звук сделать...
« Последнее редактирование: 16 Июнь 2026, 18:27:47 от Guyver(X.B.M.) »

Оффлайн Vlad666

  • Пользователь
  • Сообщений: 1245
  • Агент искусственного интеллекта
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #7 : 16 Июнь 2026, 18:57:02 »
А обратные шашки будут? Было бы прикольно, редко кто их делает... И можно хотя бы 1 простейший звук сделать...

Посмотрим. Может быть и добавлю. А на SMD, если я не ошибаюсь, нет даже обычных шашек, а уж про русский вариант и говорить не стоит.

Онлайн ghostdog3

  • Супермодератор
  • Сообщений: 2197
  • Благомир
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #8 : 16 Июнь 2026, 20:26:13 »
А на SMD, если я не ошибаюсь, нет даже обычных шашек
Что вы понимаете под обычными? Международные (поле 10*10 + немного другие правила), английские (назад не бьют; дамка ходит и бьёт во все стороны, но на одно поле), бразильские/польские (поле 8*8, по правилам международных)?

Тоже не встречал на SMD шашек, на NES видел китайские шашки (доска в форме звезды).

На этот раз попросил нейронку сделать графику.
Над дизайном и цветами бы ещё поработать.

Было бы славно добавить на шашки круги, как у Агафонова (Agafonov's Draughts Club).

315571-0

Оффлайн Vlad666

  • Пользователь
  • Сообщений: 1245
  • Агент искусственного интеллекта
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #9 : 16 Июнь 2026, 21:09:48 »
Что вы понимаете под обычными?

Я имел ввиду шашки с обычными правилами для каждого вида, а не экзотика.

Добавлено позже:
Еще одно обновление.

Что нового:

1. Возможность играть за черных.
2. Теперь два режима: классика и реверс (поддавки).
3. Улучшение эвристики ИИ: Функция fastQuiescence теперь сразу учитывает динамическую оценку позиции (evaluateDynamic), а в самой evaluateDynamic упрощен и исправлен расчет штрафов/бонусов за контроль центра в эндшпиле.

315574-0
« Последнее редактирование: 16 Июнь 2026, 22:42:13 от ghostdog3 »

Оффлайн HayaoYokogawa

  • Пользователь
  • Сообщений: 2332
  • Пол: Мужской
  • большой и толстый розовый динозавр
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #10 : 17 Июнь 2026, 13:11:53 »
Осталось еще режим игры "Чапаев" добавить и тогда будет круто.  :thumbup:

Оффлайн Vlad666

  • Пользователь
  • Сообщений: 1245
  • Агент искусственного интеллекта
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #11 : 17 Июнь 2026, 15:02:21 »
Осталось еще режим игры "Чапаев" добавить и тогда будет круто.  :thumbup:

Это что за режим такой :biggrin:?

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2941
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #12 : 17 Июнь 2026, 15:05:33 »
это бильярд-режим для шашек :)

Оффлайн Vlad666

  • Пользователь
  • Сообщений: 1245
  • Агент искусственного интеллекта
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #13 : 17 Июнь 2026, 15:07:35 »
Нейронка выдала еще одно обновление.

Что нового:

1. До этого игрок и компьютер во время множественного взятия дамкой могли при рубке первой шашки проскочить пересекающую диагональ, на которой стоит доступная для рубки вторая шашка противника. Это является нарушением правил Русских шашек. Теперь в движок добавлена строгая проверка: если на линии приземления есть возможность продолжить бой, игра просто не позволит выбрать тупиковую клетку. Фильтр внедрен на уровне базового генератора ходов, поэтому поисковые алгоритмы ИИ теперь тоже учитывают это правило и строят свои ловушки абсолютно честно.

2. Добавил анимацию движения шашек, чтобы они не перескакивали от клетки к клетке моментально.

3. И САМОЕ ГЛАВНОЕ: Gemini 3.1 Pro переписал базовую функцию поиска фигур на доске (в битбордах): полностью отказался от тяжелой математики с 32-битным умножением и длинными битовыми сдвигами в пользу простой предвычисленной таблицы (LUT) на 256 байт.

Вот так код выглядел до:

const u8 multiplyDeBruijnBitPosition[32] = {
  0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8,
  31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9
};

static inline u8 getLSB(u32 v) {
  return multiplyDeBruijnBitPosition[((u32)((v & -v) * 0x077CB531U)) >> 27];
}

Теперь он выглядит так:

// Таблица: для каждого байта (от 0 до 255) хранит индекс самого младшего установленного бита (0-7).
// Для 0 значение неважно, так как getLSB вызывается только для v != 0.
static const u8 LSB_TABLE_8BIT[256] = {
  0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0,
  4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0
};

static inline u8 getLSB(u32 v) {
  // Разбиваем 32-битное число на части и ищем первый ненулевой байт, начиная с младшего.
  // Это избавляет процессор от необходимости делать (v & -v) и умножение.
  u32 lo = v & 0xFFFF;
  if (lo) {
    if (lo & 0xFF) {
      return LSB_TABLE_8BIT[lo & 0xFF];
    } else {
      return 8 + LSB_TABLE_8BIT[lo >> 8];
    }
  } else {
    u32 hi = v >> 16;
    if (hi & 0xFF) {
      return 16 + LSB_TABLE_8BIT[hi & 0xFF];
    } else {
      return 24 + LSB_TABLE_8BIT[hi >> 8];
    }
  }
}

Я ничего не понял, но это работает настолько круто, что до обновления ИИ думал, например, 12 секунд, то теперь он думает 7 секунд на глубине основного поиска в 5 ходов и на глубине форсированного поиска в 12 ходов. А если отключить форсированный поиск, то ИИ будет думать всего 4 секунды. Я в шоке. Нейросеть продолжает меня удивлять. Потом попробую попросить нейронку ускорить ИИ еще больше. Сможет ли она что-нибудь придумать? Если да, то можно будет смело увеличивать максимальную глубину основного поиска до 7 ходов, а не до 6, как сейчас.

Кстати, интересно, можно ли с помощью нейросети так же круто оптимизировать уже существующие игры, страдающие тормозами? Если она такой сложный алгоритм может настолько круто ускорять для слабого процессора раз за разом, то почему бы ей не ускорить обычную игрушку с простейшей логикой?
« Последнее редактирование: 17 Июнь 2026, 15:44:43 от Vlad666 »

Оффлайн Dyons

  • Пользователь
  • Сообщений: 8105
  • инфернальный колдун
    • Youtube
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #14 : 17 Июнь 2026, 15:43:39 »
Кстати, интересно, можно ли с помощью нейросети так же круто оптимизировать уже существующие игры, страдающие тормозами?
Ну вперед, оптимизируй нам SotC для ПС2  :lol:

Оффлайн dusha6613

  • Пользователь
  • Сообщений: 308
  • Пол: Мужской
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #15 : 17 Июнь 2026, 16:20:57 »
почему бы ей не ускорить обычную игрушку с простейшей логикой?

Contra force.

Оффлайн Беларус

  • Модератор
  • Сообщений: 1527
    • ВКонтакте
    • Steam
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #16 : 17 Июнь 2026, 19:40:25 »
можно ли с помощью нейросети так же круто оптимизировать уже существующие игры, страдающие тормозами?
Вряд ли. Для распространённых игр типа шахмат и шашек человечество придумало кучу разных оптимизацый и все они в сети, а для других игр нет - у каждой своя уникальная ситуацыя.

Оффлайн Vlad666

  • Пользователь
  • Сообщений: 1245
  • Агент искусственного интеллекта
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #17 : 17 Июнь 2026, 19:59:16 »
Есть ли какая-нибудь тормозная игра на Genesis, которая разобрана и ее можно собрать в SGDK?

Оффлайн Werton

  • Пользователь
  • Сообщений: 1051
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #18 : 18 Июнь 2026, 01:53:24 »
Есть ли какая-нибудь тормозная игра на Genesis, которая разобрана и ее можно собрать в SGDK?
"Собрать" в sgdk ты можешь только то, что написано на sgdk, и если у тебя есть исходники. И как ты догадываешься, ни одна из лицензионных игр не написана на sgdk, да и доступных ассемблерных исходников официальных игр наверное можно по пальцам одной руки пересчитать. Если говорить о играх написаных на sgdk, то индюки тоже не спешат делиться исходниками своих игр, а те что доступны это просто мало кому нужные демки, нет никакого смысла их оптимизировать.

Оффлайн Vlad666

  • Пользователь
  • Сообщений: 1245
  • Агент искусственного интеллекта
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #19 : 18 Июнь 2026, 07:31:42 »
...нет никакого смысла их оптимизировать.

Чисто ради интереса.

Оффлайн Dyons

  • Пользователь
  • Сообщений: 8105
  • инфернальный колдун
    • Youtube
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #20 : 18 Июнь 2026, 10:26:14 »
Чисто ради интереса.
Я ж тебе предложил ради интереса вариант, дерзай  :biggrin:

Оффлайн Vlad666

  • Пользователь
  • Сообщений: 1245
  • Агент искусственного интеллекта
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #21 : 18 Июнь 2026, 11:02:43 »
1. Добавил третий режим игры 2-MOVES (Двухходовка). ИИ понимает его правила и рассчитывает ходы с учетом особенности этого режима.
2. Добавил индикацию обязательного взятия, если игрок по какой-то причине его проигнорировал, пытаясь сделать другой ход. Шашки противника мигают красным цветом.
3. Добавил индикацию допустимых ходов, если игрок пытается нарушить правило перемещения шашек. В этом случае клетки, на которые игроку разрешено сделать ход, мигают красной рамкой.
4. Работу со многими графическими элементами переложил на DMA, а так же добавил кратковременное отключение экрана во время загрузок большого количества тайлов (например, между переходом с титульного экрана на экран игры), дабы не было видно графических артефактов.

Потом добавлю, может быть, еще какие-нибудь режимы и попробую сделать ИИ быстрее или умнее. И на этом, наверное, все. А стиль переделывать не буду. Мне этот нравится. Он минималистичный. Подобные логические игры не должны быть захламлены всякими яркими деталями. Хотя, чуть-чуть подправить дизайн шашек не помешало бы.

315715-0 315717-1

Добавлено позже:
Кстати, еще добавлю сохранение выбранных параметров игры в SRAM, чтобы при перезапуске не приходилось каждый раз настраивать их заново.
« Последнее редактирование: 18 Июнь 2026, 13:11:16 от Vlad666 »

Онлайн ghostdog3

  • Супермодератор
  • Сообщений: 2197
  • Благомир
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #22 : 18 Июнь 2026, 14:45:20 »
А стиль переделывать не буду. Мне этот нравится. Он минималистичный. Подобные логические игры не должны быть захламлены всякими яркими деталями. Хотя, чуть-чуть подправить дизайн шашек не помешало бы.
Доска и интерфейс вполне хорошие, именно внешний вид шашек желательно улучшить.

Ну и было бы славно, если бы уровни трудности были более понятны рядовому пользователю.

Если будет желание, можно ещё поэкспериментировать, чтобы программа на той же доске 8*8 могла играть, скажем, в другие виды шашек, где правила немного отличаются. Те же английские, бразильские или итальянские.

Оффлайн Vlad666

  • Пользователь
  • Сообщений: 1245
  • Агент искусственного интеллекта
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #23 : 19 Июнь 2026, 09:39:26 »
Финальная версия (скорее всего).

Что нового:

- Параметры игры сохраняются в SRAM. Теперь не нужно каждый раз настраивать игру на свой привычный лад.
- Изменил дизайн шашек и изменил обозначение дамок. Смотрите скрин.
- Ускорил алгоритмы ИИ. В подробности вдаваться не буду, но скорость при DS 6 и QS 12 (максимальные значения) увеличилась примерно:

С 13 секунд до 11
С 32 до 26
С 50 до 42

Это примеры времени разных ходов разной сложности.

- Добавил звуки установки шашки, положительного и отрицательного взятия, превращения в дамку и попытки нарушить правило, а так же звуки на титульный экран и окошкам паузы и окончания игры.

315815-0

Имена параметров DEEPTH SEARCH и QUIESCENCE SEARCH менять не стал, т.к. считаю их фишкой этой игры. Создается впечатление, будто ты играешь в профессиональную версию Русских шашек. А если кто не понял суть этих параметров, то вот понятное объяснение:

Оба этих параметра настраивают "мозги" компьютерного противника (ИИ) и то, как он принимает решения.

DEPTH SEARCH (Глубина поиска)

Этот параметр определяет, на сколько ходов вперед ИИ просчитывает развитие партии.

Как это работает: ИИ перебирает все возможные варианты развития событий. Базовое значение в игре равно 5. Это значит, что компьютер мысленно разыгрывает партию на 5 шагов вперед для каждого своего возможного действия, чтобы выбрать самое выгодное.

На что влияет:
- Чем выше цифра (в меню доступно до 6), тем умнее, хитрее и опаснее будет компьютерный противник. Однако при высоких значениях процессору нужно больше времени на вычисления, поэтому компьютер будет дольше "думать" перед каждым ходом.
- Чем ниже цифра (минимум 3), тем быстрее ходит компьютер, но при этом он становится менее дальновидным и может совершать больше тактических ошибок.

QUIESCENCE SEARCH (Поиск до стабилизации / Дополнительный просчет)

Это специальный защитный механизм, который может спасти компьютер от обидных поражений во время серийных взятий (рубок).

Как это работает: Представьте, что компьютер просчитал свои 5 ходов (согласно DEPTH SEARCH) и остановился. Но что, если прямо за границей этого 5-го хода игрок подготовил ловушку и готов срубить сразу три шашки? Чтобы ИИ не был "слепым" к таким угрозам, включается QUIESCENCE SEARCH. Этот алгоритм заставляет компьютер продолжить просчет ходов сверх лимита, но рассматривает только те ходы, где происходит рубка. Компьютер будет проверять варианты до тех пор, пока ситуация на доске не станет "спокойной" (никто никого не может срубить).

На что влияет: Этот параметр позволяет задать максимальную глубину такого дополнительного поиска (базовое значение - 12).

- Если значение высокое, компьютер реже будет попадаться на длинную цепочку рубок.
- Если параметр отключить (значение 0 / OFF), ИИ станет уязвимым для многоходовых комбинаций и красивых ловушек игрока.

Данный параметр так же, как и DEEPTH SEARCH, влияет на скорость ИИ.

Также не стал добавлять дополнительные режимы игры. Пробежался по интернету и поболтал с нейронкой об этом. Существует множество дополнительных режимов, но все они - какая-то дичь. Поэтому трех имеющихся режимов будет вполне достаточно.

Можно добавить английские шашки. Но раз я назвал свою игру RUCHECKERS, то также не вижу смысла добавлять этот вариант. Может быть, потом сделаю именно английские шашки со своими дополнительными режимами. Затем обе версии можно будет объединить в сборник.
« Последнее редактирование: 19 Июнь 2026, 10:57:43 от Vlad666 »

Оффлайн Vlad666

  • Пользователь
  • Сообщений: 1245
  • Агент искусственного интеллекта
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #24 : 19 Июнь 2026, 15:07:00 »
Думал, что все, но пришлось сделать еще одно срочное обновление.

- Сделал внешнюю обводку шашек черной, чтобы шашки не сливались с фоном.
- Внес одно изменение в ИИ, чтобы он не тупил со своими дамками в режиме REVERSE. Теперь он еще умнее.

315823-0

В архиве так же отправляю исходный код движка ИИ. Если у кого появится идея создать свой вариант Русских шашек, но лень париться с ИИ или нет в этом деле достаточных знаний, то можете взять этот.

Онлайн ghostdog3

  • Супермодератор
  • Сообщений: 2197
  • Благомир
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #25 : 19 Июнь 2026, 16:42:05 »
Vlad666, спасибо! Поставил себе в очередь на поиграть.  :thumbup:

Оффлайн Vlad666

  • Пользователь
  • Сообщений: 1245
  • Агент искусственного интеллекта
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #26 : 20 Июнь 2026, 07:06:47 »
Пока делал эту игрушку, в разделе Homebrew появился Extris. Это предыдущая моя игрушка, созданная совместно с нейросетью.

Качать тут https://www.emu-land.net/consoles/genesis/roms/extris.

Если кому понравилась, но нашли баги или недочеты, пишите мне в ЛС. Постараюсь исправить, доработать и опубликовать следующую ревизию.

Сразу предупреждаю, что вариант этого Тетриса на любителя. Поэтому, если, например, не понравился стиль, то исправлять его не буду. Он таким и был задуман. Но могу, например, подправить скорость падения фигур.

Оффлайн Dyons

  • Пользователь
  • Сообщений: 8105
  • инфернальный колдун
    • Youtube
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #27 : 20 Июнь 2026, 07:18:31 »
Пока делал эту игрушку, в разделе Homebrew появился Extris. Это предыдущая моя игрушка, созданная совместно с нейросетью.

Качать тут https://www.emu-land.net/consoles/genesis/roms/extris.
По ссылке опечатка, настоящий разработчик ИИ  :P

Оффлайн Vlad666

  • Пользователь
  • Сообщений: 1245
  • Агент искусственного интеллекта
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #28 : 20 Июнь 2026, 07:22:13 »
По ссылке опечатка, настоящий разработчик ИИ  :P

Это уже не я писал. А тот, кто написал, знал, что код игры написан нейросетью. Но идея то моя и управление нейросетью мое. Сигэру Миямото своего Марио тоже создавал не в качестве программиста :biggrin:.

Оффлайн Dyons

  • Пользователь
  • Сообщений: 8105
  • инфернальный колдун
    • Youtube
    • Просмотр профиля
[SMD] ИИ-эксперимент с Русскими шашками
« Ответ #29 : 20 Июнь 2026, 07:32:55 »
Сигэру Миямото своего Марио тоже создавал не в качестве программиста .
Ну так если ты не в курсе в играх всегда перечисляют в титрах всех причастных и указывают должность  :biggrin: