Разработка и ромхакинг > Разработка игр
[SMD] ИИ-эксперимент с Русскими шашками
<< < (2/6) > >>
Dyons:

--- Цитата: Vlad666 от 18 Июня 2026, 07:31:42 ---Чисто ради интереса.

--- Конец цитаты ---
Я ж тебе предложил ради интереса вариант, дерзай  :biggrin:
Vlad666:
1. Добавил третий режим игры 2-MOVES (Двухходовка). ИИ понимает его правила и рассчитывает ходы с учетом особенности этого режима.
2. Добавил индикацию обязательного взятия, если игрок по какой-то причине его проигнорировал, пытаясь сделать другой ход. Шашки противника мигают красным цветом.
3. Добавил индикацию допустимых ходов, если игрок пытается нарушить правило перемещения шашек. В этом случае клетки, на которые игроку разрешено сделать ход, мигают красной рамкой.
4. Работу со многими графическими элементами переложил на DMA, а так же добавил кратковременное отключение экрана во время загрузок большого количества тайлов (например, между переходом с титульного экрана на экран игры), дабы не было видно графических артефактов.

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



Добавлено позже:
Кстати, еще добавлю сохранение выбранных параметров игры в SRAM, чтобы при перезапуске не приходилось каждый раз настраивать их заново.
ghostdog3:

--- Цитата: Vlad666 от 18 Июня 2026, 11:02:43 ---А стиль переделывать не буду. Мне этот нравится. Он минималистичный. Подобные логические игры не должны быть захламлены всякими яркими деталями. Хотя, чуть-чуть подправить дизайн шашек не помешало бы.
--- Конец цитаты ---
Доска и интерфейс вполне хорошие, именно внешний вид шашек желательно улучшить.

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

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

Что нового:

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

Можно добавить английские шашки. Но раз я назвал свою игру RUCHECKERS, то также не вижу смысла добавлять этот вариант. Может быть, потом сделаю именно английские шашки со своими дополнительными режимами. Затем обе версии можно будет объединить в сборник.
Vlad666:
Думал, что все, но пришлось сделать еще одно срочное обновление.

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



В архиве так же отправляю исходный код движка ИИ. Если у кого появится идея создать свой вариант Русских шашек, но лень париться с ИИ или нет в этом деле достаточных знаний, то можете взять этот.
ghostdog3:
Vlad666, спасибо! Поставил себе в очередь на поиграть.  :thumbup:
Vlad666:
Пока делал эту игрушку, в разделе Homebrew появился Extris. Это предыдущая моя игрушка, созданная совместно с нейросетью.

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

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

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

--- Цитата: Vlad666 от 20 Июня 2026, 07:06:47 ---Пока делал эту игрушку, в разделе Homebrew появился Extris. Это предыдущая моя игрушка, созданная совместно с нейросетью.

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

--- Конец цитаты ---
По ссылке опечатка, настоящий разработчик ИИ  :P
Vlad666:

--- Цитата: Dyons от 20 Июня 2026, 07:18:31 ---По ссылке опечатка, настоящий разработчик ИИ  :P

--- Конец цитаты ---

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

--- Цитата: Vlad666 от 20 Июня 2026, 07:22:13 --- Сигэру Миямото своего Марио тоже создавал не в качестве программиста .
--- Конец цитаты ---
Ну так если ты не в курсе в играх всегда перечисляют в титрах всех причастных и указывают должность  :biggrin:
Vlad666:
Дело было вечером, делать было нечего, и я решил сделать еще одно обновление, добавив четвертый режим игры - 2-MIXED (ставропольские шашки). Как и в режиме 2-MOVES, человек и компьютер за раз делают два хода, но разница в том, что в 2-MIXED второй ход делается шашкой противника.

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

Vlad666:
Обновил код графики. Теперь, когда игрок двигает шашки, он не увидит графических артефактов в виде полосок из черных пикселей на игровой доске, появляющиеся на долю секунды.

Точно не скажу, но, похоже, графика в игре стала идеальной в плане отсутствия артефактов.

Кстати, нейронка исправила проблемы с графикой, когда она узнала, что я использую эмулятор BlastEm. Я ей о нем вообще не говорил, но она поняла это из скрина, который я ей отправил. Она тут же выдала рабочее улучшение графики, написав код так, чтобы он отлично работал на оригинальном железе или на высокоточном эмуляторе. Это лишний раз показывает, что при составлении промтов нужно учитывать все, а не просто писать: "Напиши мне это". Чем точнее промт, тем качественнее результат.
Vlad666:
Добавил второй вид шашек - Английские. Теперь на титульном экране можно выбрать между русскими и английскими правилами.

Правила Английских шашек, в отличие от Русских:

- Черные ходят первыми.
- Простые шашки бьют только вперед.
- Дамка ходит только на одну клетку во все стороны.
- Дамка не может бить, если фигура противника находится на одной линии, но не на соседней клетке.
- Если простая шашка во время множественного взятия становится дамкой, то она не может продолжать взятие.

А также добавил новое условие объявления ничьей. Изначально ничья объявлялась, только если совершается 40 полуходов подряд (20 ходов белых и черных) без движения простых шашек и без взятия фигур противника. Теперь ничья объявляется еще и при условии, если у белых и черных остается только по одной дамке, так как при таком наборе фигур ни одна из сторон не сможет победить.

Изменил заголовок на титульном экране с RUCHECKERS на CHECKERS, т.к. теперь игра универсальная, а не только русская.



Вместе с игрой в архив добавил исходный код.
cl:

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

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

--- Цитата: Vlad666 от 01 Июля 2026, 12:53:12 ---Добавил второй вид шашек - Английские
--- Конец цитаты ---
Спасибо! Это всегда интересно.
Vlad666:

--- Цитата: ghostdog3 от 01 Июля 2026, 19:53:28 ---Спасибо! Это всегда интересно.

--- Конец цитаты ---

Потом, если живы будем, добавлю еще несколько видов шашек: Бразильские, Пул (США) и Итальянские. Я бы их сразу добавил (можно прямо сейчас), но жду, когда выйдет следующая версия Gemini. Хочу именно с ее помощью сделать ИИ умнее и быстрее, который будет понимать правила всех этих видов. Вроде как вот-вот должны запустить новую нейронку. Английские шашки тоже позже хотел добавить, но решил немного оживить тему. А завтра выложу крутое обновление с двумя улучшениями алгоритма Quiescence Search, делающими ИИ умнее.

После всего этого доработаю дизайн, чтобы игрушку можно было опубликовать в Homebrew. Но это в последнюю очередь, т.к. сначала нужно сделать самое главное.

Добавлено позже:
Обновления от Gemini 3.1 Pro:

1. Минимальное значение параметра DEPTH SEARCH уменьшено до 1.
2. Параметр DEPTH SEARCH можно установить на RANDOM, при котором ИИ делает случайные ходы, но в рамках правил. Это самый легкий уровень сложности, на котором ИИ вообще не рассматривает ходы. При значении RANDOM параметр QUIESCENCE SEARCH автоматически отключается.
3. У параметра QUIESCENCE SEARCH теперь только два значения — ON и OFF. Если параметр включен, то QS работает до упора (лимит 99 ходов), что делает ИИ более сильным противником, хоть за это и придется платить дополнительной парой секунд ожидания.
4. ИИ стал умнее благодаря улучшениям алгоритма Quiescence Search:
   - Раньше алгоритм QS мог игнорировать обязательные взятия при анализе ходов и попадаться в простые ловушки. Теперь он безошибочно просчитывает форсированные многоходовые комбинации до самого конца, строго соблюдая правила всех видов шашек.
   - Раньше алгоритм QS мог при анализе ходов прерваться прямо посередине серии взятий при исчерпании лимита глубины поиска. Теперь он принудительно доводит любой начатый мультипрыжок до конца, прежде чем выносить оценку позиции. Это исключает ситуации, когда ИИ принимал неверные решения на основе "зависших" незаконченных ходов.
5. Кнопка MODE переворачивает доску, когда идет ход человека.

Обновления от Claude Fable 5 (это не шутка):

1. Исправлена симметрия оценки позиций для белых фигур. Раньше веса клеток для белых пешек брались несимметрично, что могло приводить к перекосам в стратегии игры за белых (ИИ оценивал левый и правый фланги по-разному). Теперь матрица весов корректно отзеркаливается по горизонтали, делая позиционную оценку ИИ объективной для обеих сторон.
2. Исключен учет срубленных фигур в базовом счете. В старой версии алгоритма фигуры, которые уже были побиты в рамках текущего хода (но физически еще находились на доске), ошибочно добавляли или отнимали очки из общей оценки позиции. Теперь такие фигуры корректно игнорируются при подсчете очков, что делает оценку состояния доски алгоритмом гораздо точнее.
3. ИИ научился выигрывать быстрее и сопротивляться дольше. В алгоритм минимаксного поиска (при расчете тупиковых ситуаций, когда ходов больше нет) добавлена зависимость от глубины поиска. Теперь, если ИИ видит неизбежную победу, он выберет тот путь, который приведет к ней за меньшее количество ходов. Аналогично, если ИИ видит неизбежное поражение, он перестанет сдаваться сразу и будет выбирать ходы, которые максимально оттягивают проигрыш.

И некоторые другие мелкие улучшения / исправления от Fable 5.

На этом пока все. Финальную версию сделаю, когда выйдет следующая версия Gemini.
Vlad666:
Похоже, от Google не дождешься новой нейронки, в то время как ее конкуренты выпускают свои каждый месяц.

Не мог дождаться и с помощью старой Gemini 3.1 Pro сделал очередное обновление:

1. Добавлены новые виды шашек: Пул чекерс, Бразильские и Чешские.
2. Визуально улучшены титульный экран (вид шашек зависит от параметров игры), а также окна паузы и окончания игры (вид шашек зависит от цвета игрока и цвета победителя).
3. На игровой экран добавлены стопки срубленных шашек.

И несколько других мелких улучшений.





Но финальную версию я все равно сделаю с помощью новой нейронки. Думаю, у нее лучше получится сделать ИИ умнее и быстрее благодаря более глубоким знаниям железа консоли и языка SGDK.
Werton:

--- Цитата: Vlad666 от 04 Июля 2026, 08:52:34 ---и языка SGDK
--- Конец цитаты ---
Нет такого языка, есть api фреймворка/библиотеки.

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

Дело это конечно  лично твоё , но как по мне, пора двигаться дальше и взяться за что-нибудь посерьёзнее, не супер масштабное, а что-то среднее. Например видел чела в интернете, который не умея кодить делает порт/репрограмминг Contra 3 со snes, как я понял тоже на нейронках.
Vlad666:

--- Цитата: Werton от 04 Июля 2026, 17:59:44 ---Нет такого языка, есть api фреймворка/библиотеки.

--- Конец цитаты ---

Я в этом не спец.


--- Цитата: Werton от 04 Июля 2026, 17:59:44 ---Но всё же, как по мне это барахтанье в луже. Такие простые настольные, карточные и прочие тетрисы игры, на мегадрайве мало кому интересны, а изменения с выдроченными внутренними алгоритмами в погоне за долями секунд, так вообще всем до лампочки (имхо).

--- Конец цитаты ---

Во-первых, мне интересно. Интересно чисто ради эксперимента, а не ради того, чтобы поиграть в эту игрушку. Прочти название. И немногим другим тоже интересно. Хоть и немного, но люди скачивают каждую новую версию. Уверен, финальную скачает в разы больше народу. Вон, некоторые до сих пор играют в Тетрис на NES. Казалось бы, кому он нафиг нужен?
Во-вторых, алгоритмы хоть и выдрочены, но не для железа времен Моисея.
В-третьих, не за доли секунды. Первая версия на максимальных настройках думала над, например, первым ходом 60 секунд. Последняя думает 17 секунд. И это при том, что она стала умнее.


--- Цитата: Werton от 04 Июля 2026, 17:59:44 ---Дело это конечно  лично твоё , но как по мне, пора двигаться дальше и взяться за что-нибудь посерьёзнее, не супер масштабное, а что-то среднее. Например видел чела в интернете, который не умея кодить делает порт/репрограмминг Contra 3 со snes, как я понял тоже на нейронках.

--- Конец цитаты ---

Посмотрим. Доделаю эту игрушку, сделаю другую. Но если интерес не пропадет и живы будем.

Добавлено позже:
Почему я выбрал именно логическую игру Шашки? Да потому, что писать ее алгоритм для допотопного железа, чтобы он был шустрым и имел хоть какие-то нормальные навыки игры, - дело не из легких даже для опытных программистов, как мне кажется. Мне интересно, что из этого выйдет. Мне интересно, на что способны нейросеть и консоль. Да и в конце концов, не нужно париться с графикой.
Werton:

--- Цитата: Vlad666 от 04 Июля 2026, 19:01:13 ---Хоть и немного, но люди скачивают каждую новую версию. Уверен, финальную скачает в разы больше народу.
--- Конец цитаты ---
Тенденция по количеству скачек как раз показывает, что интерес падает.


--- Цитата: Vlad666 от 04 Июля 2026, 19:01:13 ---Вон, некоторые до сих пор играют в Тетрис на NES. Казалось бы, кому он нафиг нужен?
--- Конец цитаты ---
В него играют не потому что это тетрис на нес, а потому что это была культовая версия для своего времени, в которую они там играли и задрачивали с детства, что переросло в киберспорт. В новодельный тетрис и уж тем более шашки на нес/smd никто так играть не будет и это очевидно.

Но дело конечно твоё, можно и шашки делать если нравится. А вообще, если интересно будет, в сети есть исходники несколько незаконченных хомбрю портов типа metal slug, vigilante, ещё вроде что-то было, как вариант можно их попробовать допиливать через нейронку, там код конечно "ужас-ужас", но нейронке в принципе должно быть пофиг.
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии