Форум программистов, компьютерный форум, киберфорум
Бета-тестирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3037 / 1054
Регистрация: 01.06.2021
Сообщений: 11,567

3D Шахматы

03.08.2025, 22:08. Показов 9296. Ответов 154
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создал за несколько дней шахматную оболочку для движка Stockfish 17.1. Кому не лень, предлагаю тестировать, задавать вопросы или просто прикалываться

Ссылка на игру: https://royalxxx.itch.io/chess-3d

Размер архива: 47 МБ (размер игры: 199 МБ)



Почему создал?
Не нашел ни одной нормальной трехмерной игры, которая работала бы с движком.
Есть 3д шахматы с очень красивой графикой, но с корявыми движками и без движковых настроек. Например, как Chess Titans из винды, Chess Ultra или программы ChessBase - там вообще на трехмерной доске не играбельно.
И наоборот, есть хорошие 2д оболочки для работы с uci движками, но без красивого 3д вида.
К тому же, давно не публиковал игру в https://royalxxx.itch.io/, хочу добавить туда эту игру.

Как установить:

Разархивировать исполняемый файл в любое место, желательно в отдельную папку, поскольку после первого запуска в папке, где будет лежать данный файл, создадутся два других файла:
engine_path.cfg - в этом файле можно указать путь к шахматному движку. Но не обязательно это делать, если движок Stockfish 17.1 будет лежать рядом с игрой. Но если на компе уже есть данный движок (допустим, вы используете для другой шахматной оболочки), то можно будет указать в этом файле путь к вашему движку и не понадобится дублировать движок.
settings.cfg - это файл настроек. Не для редактирования, поэтому я его зашифровал. Если удалить данный файл, то игра вернется к дефолтным настройкам.

Таким образом, нужно разархивировать игру в отдельную папку, бросить в эту папку движок Stockfish 17.1, скачанный из официального сайта, и запустить игру.

Почему Stockfish 17.1?
Это сильнейший движок в мире.

Почему я не распространяю движок в комплекте с игрой?
Stockfish 17.1 доступен бесплатно на официальном сайте https://stockfishchess.org/download/. Причем, там доступны разные версии под разные инструкции процессора. Чтобы не распространять вместе с игрой все движки (64-bit, POPCNT, AVX2, BMI2, AVX-512, VNNI-256, VNNI-512) - а каждый весит до 80 МБ, я решил, что лучше будет, если каждый сам скачает то, что подходит его устройству. Например, я использую BMI2-версию, поскольку она быстрее версий 64-bit, POPCNT и AVX2, а вот AVX-512 и другие мой проц не поддерживает. Версия 64-bit самая медленная, но поддерживается всеми 64-битными процами, POPCNT тоже будет поддерживаться многими, даже устройствами 15-летней давности. AVX2 это версия, для современных процессоров и дефолтная для скачивания на сайте стокфиша. Если ваш процессор поддерживает BMI2, как у меня, то ставьте эту версию, она быстрее AVX2. Ну а если у вас поддерживает и AVX-512, то ставьте последнюю.

Stockfish 17.1
Игра работает только с Stockfish 17.1. С другими движками или с другими версиями Stockfish (например, 16) игра не будет работать.

Вкладка игры:
- можно играть с движком или с другим человеком. Если включен переключатель движка, после хода игрока, движок сделает ход.
- кнопка Engine Move (или клавиша G) заставляет движку сделать ход, независимо от состояния переключателя движка
- кнопка Hint (клавиша H) выводит подсказку
- Flip View (клавиша F) поворачивает доску
- Reset View (клавиша R) восстанавливает положение камеры. Кстати, камера поворачивается нажатой правой кнопкой мыши.
- New Game (клавиша N)
- Copy FEN копирует в буфер обмена FEN текущей позиции

Вкладка Engine:
Тут настраивается сам движок. Внимание: если вы что-то поменяли, для применения настроек нужно обязательно нажать на кнопку Set Options.
На этой вкладке можно настроить:
Threads - количество потоков процессора . Вы не можете выставить больше, чем количество процессоров на вашем устройстве. Даже на одном потоке движок очень силен. Если прям хочется получить максимальные Nps, то выставляйте максимум. С другой стороны, если все процессоры будут работать на вычислениях, то возможно не хватит ресурсов для игры.
Depth Limit - максимальная глубина ходов (а скорее полуходов) для движка. По умолчанию, выставлен максимум 145.
Skill Level - сила движка, по умолчанию 20 - максимум, т.е. будет играть на полную силу.
Вместо настройки силы движка посредством Skill Level, можно использовать более понятную опцию - лимитирование по рейтингу Эло от 1320 до 3190. Стокфиш этот рейтинг потом переводит в нужный Skill Level.
Hash - размер хештаблицы. Дефолтно 16 МБ. Сделал так, чтобы не можно было выставить больше, чем доступный размер ОЗУ без учета файла подкачки. Сколько не жалко, столько и дайте движку памяти. Это усилит движок. А вообще, можно посмотреть на то, как быстро заполняется хеш и если вы видите, что хеш на пределе, то можно увеличить размер.
Time - время на ход для движка в секундах. Чем больше вы дадите, тем глубже движок сможет анализировать.
Обратите внимание, что для подсказок можно выбрать свои собственные Depth и Time. Например, вы можете дать на подсказки больше времени, чтобы подсказка была сильнее, чем ваш соперник-движок))

Depth vs Time
Если движку дать очень много времени, но выставить глубину, то это даст гарантию, что все ходы движка будут иметь одинаковую гарантированную глубину.
Если движку дать очень большую глубину, но выставить время, то это гарантирует, что движок сделает ход за заданное время, но глубина будет колебаться - например, в эншпиле будет больше, чем в дебюте.
Не рекомендую давать движку одновременно и много времени и разрешать искать до очень большой глубины, поскольку вы рискуете ждать очень долго.

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

Графика:
Window Mode - режим экрана
Scale - соотношение от нативного разрешения. При 1.0 - будет нативное разрешение. 0,5 - будет половина от нативного, и т.д. Влияет на качество и производительность.
Antialiasing - сглаживание. Дефолтно на 2х. Можно увеличить, но имейте в виду, что может повлиять на fps.
VSync - вертикальная синхронизация.
Я добавил возможность лимитирования fps, поскольку заметил, что для данной игры необязательно играть на 120 или 240 fps. Это игра не про графику, зачем насиловать GPU.
С помощью данной фичи можно лимитировать fps и снизить нагрузку на GPU. Например, я выставляю 60. Кстати, заметьте, что VSync тоже лимитирует fps на уровне частоты монитора.
Для удобства и правильной настройки, я также добавил отображение fps в реальном времени.

Вывод движка:
После каждого обдумывания движка (ход или подсказка), выводится:
-Оценка позиции в пешках или в количестве полуходов до мата. Положительные - в пользу Белых, отрицательные - Черных.
-Глубина хода
-Скорость движка в узлах в сек - Nodes per second (NPS) - удобно для настройки потоков или тестирования производительности устройства
-Процент заполнения хеш-таблицы. Если видите, что таблица быстро заполняется, то можно увеличить размер хеша.
-Реальное время обдумывания движка.

Сохранения:
Игра сохраняет все настройки. Также, будет сохранена текущая игра, но только если был сделан выход из игры не во время работы движка.

Что не реализовано:
1. Не реализовал все ничейные ситуации. В ничейных ситуациях сейчас игра прерывается только при пате. У меня возникли некоторые сомнения касательно необходимости реализовать другие ситуации:
- Недостаточность материала - возможно, в будущем даже добавлю авто определение недостаточного материала...
- Троекратное повторение одной и той же позиции - это правило актуально, когда играешь с человеком.
- Обе стороны сделали 50 последних ходов без взятия и без хода пешкой - это правило работает, только когда игрок заявил, иначе игра продолжается до 75 ходов. Это правило тоже актуально, когда играешь с человеком.
- Игроки согласились на ничью - тоже не вижу смысла в реализации фичи, когда движок просит ничью...
- Один из игроков просрочил время или сделал второй невозможный ход - в моей игре таймеров нет, поскольку это только актуально, когда играешь с человеком.
Вообще, думаю вместо реализации всей этой ахинее, актуальной только на турнирах с людьми, сделать так, что когда оценка нулевая на определенной большой глубине, то просто выводится инфа, что стоит прекратить бессмысленную игру.
2. Не реализовано создание игры из кастомной позиции. Могу быстро реализовать настройку позиции по FEN, но вот реализация настройки позиции путем выставления вручную фигур требует некоторого времени. Возможно, добавлю в будущем.
3. Подключение дебютных книг. Не собираюсь реализовать, поскольку не вижу смысла.
4. Подключение EGBT Syzygy для движка. Реализуется легко, но движок и без них очень быстро анализирует в эндшпиле.
5. Поддержка Chess 960. Возможно, добавлю в будущем.
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.08.2025, 22:08
Ответы с готовыми решениями:

Шахматная программа
Проводится набор участников для совместной работы над шахматной программой. Направление вызвало...

Готические Шахматы и Шахматы Януса
Программы - компьютерные противники, реализующие сабж? - где скачать? (можно лицензионные и платные...

разработка программы "Шахматы"
помогите пожалуйста с разработкой шахматной программы, ну или кто знает ссылки на такие разработки,...

154
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3037 / 1054
Регистрация: 01.06.2021
Сообщений: 11,567
20.08.2025, 13:02  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Меня это сильно бесит в Unity, который собираешь по 3 минуты во время отладки
да, Unity очень медленно собирает игру. Поэтому я выбираю GDScript в Godot.

C# это не совсем компилируемый язык, как вот, например, С++. То есть исходный код не компилируется в машинный код.
В таких языках, как C#, Java и т.д. исходный код компилируется в байт-код (что-то типа промежуточного кода) который потом интерпретируется уже на конечной машине. То есть, если в компилируемых языках после компиляции мы получаем машинный код с инструкциями процессора, которые будут работать только на определенной архитектуре, то в таких языках, как C#, Java, мы получаем байт-код, который не содержит процессорный инструкций, а перевод из байт-кода в машинный будет происходить уже на конечной машине, причем очень часто в райнтайме (JIT-компиляция).

Такие языки C#, Java всегда медленные при сборке. Хотя, вот у Eclipse для Java есть интересная технология инкрементальной компиляции, которая ускоряет компиляцию в байт-код. Но это работает только с их JDK.

GDScript тоже интерпретируемый язык, но он работает намного быстрее с API Godot. Именно поэтому игра собирается очень быстро. И по скорости он не уступает C#, а порой даже быстрее, если большая часть кода это апишные функции. Кроме того, веб эспорт в годот 4 работает только в проектах на GDScript. Именно поэтому я не вижу никакого смысла писать на C# и долго ждать, как в Unity.

Добавлено через 2 минуты
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Лучше бросай веб и сосредотачивайся на Desktop. Зря я тебе про веб написал и сбил тебя с пути. Я только потратил твоё время. На Android тоже не трать время, потому что кучу времени потратишь пока будет ждать сборки в APK.
Ну я потихоньку буду тач реализовывать, когда будет настроение.
Сборка в APK не думаю, что будет проблемной. Ведь, если я реализую тач для веб, то тот же тач будет работать и для андроида.
Хотя, если игра будет работать в браузере и на телефонах, то не думаю, что кому-то понадобится APK игра.
Но в целом, да, я больше предпочитаю десктоп. Но раз уже начал, то надо завершить тач.
0
9954 / 2956 / 497
Регистрация: 05.10.2013
Сообщений: 8,080
Записей в блоге: 242
20.08.2025, 13:04
Цитата Сообщение от Royal_X Посмотреть сообщение
да, Unity очень медленно собирает игру. Поэтому я выбираю GDScript в Godot.
Я не про это. В самом Unity очень быстро собираются скрипты, когда ты нажал Ctrl+S в VS или VSCode, то буквально пока ты нажимаешь Alt+Shift для переключения на редактор Unity и пока тянешься к кнопке Play. Но если ты ведёшь отладку управления на Android, то что Unity, что Godot требует времени на сборку для мобильного браузера или для сборки в APK для Android. А на JS запуск на Android происходит моментально по локальному хосту даже без USB-кабеля - по Wi-Fi.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3037 / 1054
Регистрация: 01.06.2021
Сообщений: 11,567
20.08.2025, 13:06  [ТС]
Цитата Сообщение от 8Observer8 Посмотреть сообщение
или для сборки в APK для Android
в Godot релизная apk собирается мгновенно, отладочную не пробовал.
0
9954 / 2956 / 497
Регистрация: 05.10.2013
Сообщений: 8,080
Записей в блоге: 242
20.08.2025, 13:06
Цитата Сообщение от Royal_X Посмотреть сообщение
Сборка в APK не думаю, что будет проблемной. Ведь, если я реализую тач для веб, то тот же тач будет работать и для андроида.
Сколько Godot собирает в WASM? Минуту?
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3037 / 1054
Регистрация: 01.06.2021
Сообщений: 11,567
20.08.2025, 13:07  [ТС]
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Сколько Godot собирает в WASM? Минуту?
моментально, меньше 1 сек
собирает игру Emscripten, который встроен в годот
0
9954 / 2956 / 497
Регистрация: 05.10.2013
Сообщений: 8,080
Записей в блоге: 242
20.08.2025, 13:14
Цитата Сообщение от Royal_X Посмотреть сообщение
в Godot релизная apk собирается мгновенно, отладочную не пробовал.
А там есть горячий запуск, как на Qt? Qt собирает для Android, если не ошибаюсь, 30 секунд или минуту, уже не помню, но не нужно вручную копировать APK на устройство. Просто нажимаешь зелёный треугольник, ждёшь 30 секунд или минуту и приложение запускается на Android. Я собирал с подключённым Android через USB-кабель. Qt ещё поддерживает отладку APK через Wi-Fi. Я не пробовал через Wi-Fi. Godot поддерживает отладку через Wi-Fi с горячем запуском на устройстве без ручного копирования APK на устройство? Это вообще реализовано на уровне Android SDK (горячий запуск через Wi-Fi), а вот реализовано ли оно в Godot - не знаю. Скорее всего, должно быть реализовано. Но сколько времени проходит с момента запуска игры после изменения кода и её запуска на Android через APK?

Добавлено через 1 минуту
Цитата Сообщение от Royal_X Посмотреть сообщение
моментально, меньше 1 сек
собирает игру Emscripten, который встроен в годот
А в APK с горячим запуском? Тогда проще отлаживать на WASM на Android через http-server и Wi-Fi.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3037 / 1054
Регистрация: 01.06.2021
Сообщений: 11,567
20.08.2025, 13:18  [ТС]
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Godot поддерживает отладку через Wi-Fi с горячем запуском на устройстве без ручного копирования APK на устройство?
да, поддерживает, но я не пробовал. Поддерживает и по кабелю и по Wi-Fi

Добавлено через 1 минуту
8Observer8, пока все игры, которые я создавал, собирались меньше 1 сек, причем как для винды, так и для web, и для андроид. Отладочные сборки тоже так же быстро собираются.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3037 / 1054
Регистрация: 01.06.2021
Сообщений: 11,567
20.08.2025, 20:15  [ТС]
8Observer8, я реализовал полностью тач. Попробуй. Если все норм, то можно и для андроид выпустить.
0
9954 / 2956 / 497
Регистрация: 05.10.2013
Сообщений: 8,080
Записей в блоге: 242
20.08.2025, 20:58
Работает вращение двумя пальцами и сборка кубика работает одним пальцем. Неудобно с телефона искать ссылки по форуму, поэтому я давно создал приватную группу для себя в Discord (запрещён в РФ), куда можно скопировать ссылку с компьютера, а потом взять телефон, запустить TБЗ, запустить Discord (запрещён в РФ) и в несколько касаний запустить игру.

А я только пока реализовал вчера перемещение на Three.js первого лица на движке OimoPhysics, но заменю его на Ammo.js и раскопал пример из туториала для создания мультиплеера на базе данных Firebase. Клиенты обмениваются данными о своём положении через высокоскоростную базу данных Firebase. Просто Render.com в первый раз запускается 50 секунд, а на Firebase - сразу. Когда-то делал по этим урокам: Make a 3D Multiplayer Game with Three.js and Firebase. ChatGPT пишет, что для Godot есть неофициальные плагины для работы с Firebase. Как вариант, можно в Сапёр добавить мультиплеер, чтобы человек мог позвать друга, чтобы он помог разминировать.
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3037 / 1054
Регистрация: 01.06.2021
Сообщений: 11,567
20.08.2025, 21:08  [ТС]
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Работает вращение двумя пальцами и сборка кубика работает одним пальцем.
спасибо за инфу
Цитата Сообщение от 8Observer8 Посмотреть сообщение
для Godot есть неофициальные плагины для работы с Firebase
для Godot в официальном магазине ассетов есть проекты-шаблоны для работы мультиплеера. Есть даже шаблон от разработчиков Godot. Причем, в этом шаблоне показан пример реализации как локального мультиплеера, так и через инет, причем без необходимости пользоваться какими-то сервисами. Там используется принцип, что один игрок (host) становится сервером, а остальные (guests) подключаются к нему.
Но мне как-то лень разбираться в мультиплеерах, но было бы круто, играть вдвоем сапера.

Добавлено через 53 секунды
Цитата Сообщение от 8Observer8 Посмотреть сообщение
А я только пока реализовал вчера перемещение на Three.js первого лица на движке OimoPhysics
а не сложно создавать игру на таких инструментах?
0
9954 / 2956 / 497
Регистрация: 05.10.2013
Сообщений: 8,080
Записей в блоге: 242
20.08.2025, 21:57
Цитата Сообщение от Royal_X Посмотреть сообщение
Там используется принцип, что один игрок (host) становится сервером, а остальные (guests) подключаются к нему.
Так раньше в Unity было пока не удалили UNet. А сейчас не знаю, что они сделали. Может только Photon оставили, а может ещё что-то взамен добавили. Лень спрашивать у ChatGPT - не интересно.

Цитата Сообщение от Royal_X Посмотреть сообщение
а не сложно создавать игру на таких инструментах?
У меня нет цели создавать игры, чтобы люди в них играли. Люди и так найдут во что поиграть. У меня цель - использовать простейшие мини-игры, как хобби, чтобы практиковаться с определённым стеком технологий. Например, Three.js получше изучить, чтобы брать фриланс-заказы по нему. Хочется научиться нормально делать туториалы на английском, чтобы печатный и разговорный английский изучать через практику. JavaScript довольно простой язык. Да, и HTML и CSS довольно простые. Я практикуюсь с HTML, Bootstrap, Node.js, Blender и т.д. - в этом и цель. Three.js тоже несложный. Three.js хорошо знает ChatGPT. Я как-то писал Крестики Нолики на Node.js c WebSockets ни чистом WebGL, но ссылки нет, так как делал локально и потерял. Дальше этих простейших игр я не хочу идти. Какие-то ещё простейшие мини-игры сюда можно подключать. Я не дописал змейку по сети на чистом WebGL. Интересно иногда копаться в Box2D.js, Ammo.js (Bullet Physics) на JS. Интересно шейдеры писать. Строить графики функций на чистом WebGL и т.д. Писал демку Super Mario для itch на С++ Qt, OpenGL, Box2D, OpenAL и т.д., демку Resident Evil с мультиплеером на WebSockets, Node.js, на чистом WebGL, OimoPhysics, Web Audio API и т.д.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3037 / 1054
Регистрация: 01.06.2021
Сообщений: 11,567
21.08.2025, 13:45  [ТС]
Цитата Сообщение от 8Observer8 Посмотреть сообщение
для Android
Сама сборка для андроид, как уже писал выше, происходит почти мгновенно. Если добавить еще подпись приложения, то наверное, можно сказать, что сборка занимает пару секунд. И все потому, что при финальном экспорте все происходит на базе шаблона, без запуска gradle.
Но проблема с экспортом для андроид не в самом финальном нажатии на кнопку экспорта, а в предварительной настройке инструментов. Конечно, это настраивается только раз для каждого проекта, но, тем не менее, всё это может занять даже полчаса.
Имею в виду эти этапы:
- настройка Android SDK (и тут у Godot всегда каша - для компиляции шаблонов нужны одни компоненты, а для экспорта другие, причем Godot требует, чтобы некоторые компоненты имели конкретную версию).
- настройка JDK. тут тоже в зависимости от версии годот нужно использовать правильную версию. Тот же gradle не работает на крайних версиях JDK.
- компиляция сорцов С++ под каждую архитектуру (тут нужна NDK)
- генерация шаблона для андроид с помощью gradle
- создание релизного хранилища ключей с помощью keytool

И, кстати, очень часто у годот возникает проблема на этапе подписывания приложения. Весь инет переполнен ошибкой ‘apksigner’ returned with error #1, которая появляется из ниоткуда и так же само исчезает неожиданно во время хаотического подбора компонентов Android SDK...(дело в том, что порой список нужных компонентов не соответствует с документацией).

Короче, эспорт для андроид это те еще танцы с бубном. Никогда не любил экспортировать для андроид или для линукс.
А сейчас в крайней версии годот есть одна проблемка с андроид, в детали которой не хочу сейчас вдаваться. Поэтому кубика, скорее всего, выпущу для андроид уже на Godot 4.5, которая должна выйти через пару месяцев.
0
9954 / 2956 / 497
Регистрация: 05.10.2013
Сообщений: 8,080
Записей в блоге: 242
21.08.2025, 14:16
Цитата Сообщение от Royal_X Посмотреть сообщение
но всё же всё это может занять даже полчаса
Я собирал почти два года назад из Godot в APK, но я не пользовался горячим запуском. Я копировал APK вручную на Google Drive или на Dropbox, а оттуда устанавливал на Android. Но раз там есть горячий запуск, то это здорово. Потому что копировать вручную при отладке управления - это очень долго. Помню у меня настройка прошла очень быстро в Godot. У меня уже были установлены Android SDK, NDK, JDK и т.д. Я просто открыл настройки Godot и копировал пути к Android SDK, NDK, JDK. Я писал, что у меня была проблема с крэшем на старому смартфоне в Godot 4.2.1, которая потом была решена разработчиками в версии 4.2.2 в конце 2023. Я создавал тему на официальном форуме Godot: Run time error on Android

Цитата Сообщение от Royal_X Посмотреть сообщение
но всё же всё это может занять даже полчаса
Это, конечно, не связано с Godot. Это стандартная настройка для любых инструментов: Qt, SDL3, libGDX, Cordova и т.д. У меня вся настройка для Android на новой переустановленной Windows сводится к скачиванию архива, где у меня всё есть что мне нужно:

И сводится к добавлению переменной ANDROID_HOME с путём к SDK в меню переменных среды в Windows, например: H:\Android\SDK. У меня уже в этом архиве есть нужный мне NDK, Emulator и остальное. Хотя я Эмулятором сейчас не пользуюсь, так как тестирую JS веб приложения через локальный сервер через Wi-Fi. Ну и конечно, же нужно установить JDK. Я использую старый 17-й, который работает, как с Qt, так и с libGDX (Java), так и с SDL3 (Си, C++), так и с Cordova (JavaScript), так и с Godot 4 JDK 17 тоже работает (работала во всяком случае почти 2 года назад). Я писал в инструкции по ссылке ниже, как установить JDK 17:
  • Скачайте и установите JDK 17. Если эта ссылка больше не работает, вы можете использовать эту прямую ссылку на DropBox

Старый JDK 17 работает с моими текущими инструментами и ладно, я его не меняю. Просто на Qt 6 более новая не работала почему-то. Qt требовал поставить 17-ю версию, если я ничего не путаю. Я после этого пока использую эту старую версию.

Я писал пошаговую инструкцию, как собрать приложение с SDL3 на C++ (как их 2D-графический API, так и OpenGL): Настройка SDL 3.3 для разработки под Android на C++ либо на Си. Там я тоже просто скачиваю архив Android.zip со установленными SDK, NDK и т.д. А так я собирал для Android из: Godot (GDScript), Unity (C#), libGDX (Java), Qt (C++), SDL3 (Си, C++), SFML (C++), Cordova (JavaScript, HTML5, WebGL, Three.js). Везде просто пути указываешь к SDK, NDK, JDK и всё.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3037 / 1054
Регистрация: 01.06.2021
Сообщений: 11,567
21.08.2025, 14:32  [ТС]
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Помню у меня настройка прошла очень быстро в Godot.
ты, наверное, использовал стандартный шаблон для экспорта, который скачивается из самого редактора или вручную на официальном сайте. А я всегда компилирую шаблоны из сорцов (как для винды, так и для андроид), чтобы размер игры был меньше.
0
9954 / 2956 / 497
Регистрация: 05.10.2013
Сообщений: 8,080
Записей в блоге: 242
21.08.2025, 14:33
Цитата Сообщение от Royal_X Посмотреть сообщение
чтобы размер игры был меньше
Ты не сохранял инфу, сколько весит игра с шаблоном и без?
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3037 / 1054
Регистрация: 01.06.2021
Сообщений: 11,567
21.08.2025, 17:34  [ТС]
Цитата Сообщение от 8Observer8 Посмотреть сообщение
с шаблоном и без
шаблон в любом случае нужен. Но речь идет о компиляции кастомного шаблона вместо официальных, которые скачиваются из Editor/Manage Export Templates.
Я компилирую кастомный шаблон и использую именно его. Можно как заменить официальные шаблоны, копировав кастомные в папку с шаблонами. Но можно не трогать официальные, а в настройках пресета при экспорте просто указать путь к кастомному шаблону. Если указан путь, то годот использует кастомный.

Преимущество официальных шаблонов только в том, что они выпущены под все платформы, что позволяет выпустить игру под все платформы, даже если ты разрабатываешь игру на винде. Но вот ты не сможешь создать все кастомные шаблоны на винде. Конечно, некоторые имеют кросс-компиляцию, но для компиляции некоторых шаблонов нужно сменить платформу разработки. Насколько знаю, на винде нельзя создать шаблон для линукса и яблочных ОС. Но можно для винды, андроид, веб. Хотя, я для веб использую официальный шаблон, поскольку размер игры там и так маленький получается.

Цитата Сообщение от 8Observer8 Посмотреть сообщение
сколько весит игра
Но вот при кастомной компиляции шаблон весит всегда меньше. Причем, можно сделать еще меньше, удаляя ненужные функции при компиляции (например, для 2D игры можно удалить всю 3d библиотеку).

Например, на винде игра на официальном шаблоне на крайней версии годот весит 93 МБ. На кастомном шаблоне (причем даже без удаления отдельных библиотек, а именно полный шаблон) - 64 МБ. Разница большая. И так же само на андроиде...
Для компиляции я использую MSVC. Но можно и MINGW.

8Observer8, выложил APK файлы: https://royalxxx.itch.io/cube
Для Windows и Android собирал на Godot 3.6.1. Ведь, если всё работает на старой версии, то зачем собирать на 4-й версии и зря размер увеличивать. К тому же будет работать даже на музейных телефонах с Android 4.4.
Для Web собирал на Godot 4.4.1, поскольку оказалось, что сборка на 3-й версии у тебя не работает на десктопе, а у меня на телефоне.
1
9954 / 2956 / 497
Регистрация: 05.10.2013
Сообщений: 8,080
Записей в блоге: 242
21.08.2025, 18:06
Цитата Сообщение от Royal_X Посмотреть сообщение
выложил APK файлы: https://royalxxx.itch.io/cube
Протестировал Cube arm64-v8a.apk - работает
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3037 / 1054
Регистрация: 01.06.2021
Сообщений: 11,567
22.08.2025, 17:15  [ТС]
8Observer8, как я уже писал, кастомные шаблоны хорошенько уменьшают размер.
Мои apk-файлы для тетриса были созданы на кастомном шаблоне и они и так имели адекватный размер, но сегодня решил попробовать еще удалить модули 3d и продвинутый гуй, которые не используются в моей игре. Это делается с помощью опций:
Code
1
2
disable_3d=yes
disable_advanced_gui=yes
Вот, разница:

Размер уменьшился всего на несколько мегабайт. Можно удалять еще и другие неиспользуемые модули, но думаю, что это повлияет на размер очень незначительно, поэтому нет в этом смысла.
На самом устройстве выигрыш будет чувствоваться в несколько раз больше, поскольку apk это сжатый формат, после установки размер игры всегда больше.
1
 Аватар для Noname2331
92 / 72 / 10
Регистрация: 22.12.2024
Сообщений: 498
22.08.2025, 21:14
Не нашел технической возможности сделать рокировку. При этом бот спокойно сделал ее на следующий ход (то есть правила позволяют), после этого я сделал китайскую ничью alt+f4 В остальном все супер, ну только фигуры как-то сливаются, нет резкости - один раз боковым зрением не увидел прицеливающегося слона и глупо прозевал фигуру.
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6315 / 3037 / 1054
Регистрация: 01.06.2021
Сообщений: 11,567
22.08.2025, 21:30  [ТС]
Цитата Сообщение от Noname2331 Посмотреть сообщение
Не нашел технической возможности сделать рокировку.
рокировка реализована. Ты правильно делал? Нужно сперва переместить именно короля на две клетки (как это по правилам шахмат).
Иногда рокировка просто невозможна по правилам:
- если король по ходу партии уже делал ходы (включая ход-рокировку);
- если ладья уже сделала ход.
- если король находится под шахом, в результате рокировки пройдёт через битое поле или вновь встанет под шах.
- если между королём и ладьёй, предназначенными для рокировки, находится другая фигура (своя или чужая)

Добавлено через 1 минуту
Цитата Сообщение от Noname2331 Посмотреть сообщение
ну только фигуры как-то сливаются
в игре можно настроить материалы фигур, клеток и прочего

Добавлено через 4 минуты
Цитата Сообщение от Noname2331 Посмотреть сообщение
alt+f4
если даже ты в полноэкранном режиме, есть же кнопка Quit
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.08.2025, 21:30

Крик души (шахматы)
Я возмущен Играл с компьютером в шахматы (Опера Виджет) меня поразило какой долбоклюй их кодировал...

Задача про шахматы
Cсылка на изображение с условием: ВОТ ССЫЛКА вот не получается сделать. ну само собой что задача...

Шахматы. восемь фигур одного цвета
Задан вопрос по шахматам, можно ли расставить на доске восемь фигур одного цвета, чтобы они держали...

Шахматы.
Поле шахматной доски определяется парой чисел, каждое из которых не превосходит 8: 1е число - номер...

Шахматы: может ли белая фигура пойти на поле ef, не попав при этом под удар черной фигуры?
Поле шахматной доски определяется парой чисел, каждое из которых не превосходит 8: 1е число - номер...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
140
Ответ Создать тему
Новые блоги и статьи
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru