Однажды я провёл ряд тестов на старых компьютерах и ноутбуках. Всё бы хорошо, но был обнаружен ряд проблем при тестировании ChimbaBench, что основан на движке Godot Engine. Но прежде чем начинать разработку нового проекта, я провёл исследования, а так же тесты и определился с выбором основы.
В итоге выбор пал на движок Godot. Хотя он и непригоден для создания перспективных и масштабных проектов, так как функционально недостаточен и при этом имеет серьёзные проблемы с точностью мировых координат, что оксюморон для любого серьёзного игрового движка. Но Godot Engine в целом оказался лучшим среди свободных Open-Source вариантов под наши цели. Потому нам придётся смириться с серьёзными недостатками движка при разработке нового проекта.
Godot Engine не позволит создать что-то масштабное и технологичное ввиду своей несостоятельности в качестве игрового движка. Но нам это и не надо, так как проект нацелен на совместимость со старыми ОС и оборудованием. Новая разработка будет называться ChimbaBenchXPL. По задумке, у нас будет тест производительности видеокарт, использующий OpenGL 2.1 API. Так же он должен работать, начиная с Windows XP и Linux Debian 8. Первым делом соберём набор разработки. Набор разработки в обязательном порядке должен соответствовать следующим условиям:
Сразу надо скачать оригинальный Godot версии 2.1.5. Можно взять и последнюю версию 2.1.6, но там довольно мало изменений относительно предыдущей версии. Так что не будем рисковать совместимостью лишний раз. И да, последние версии обхожу стороной из-за плохой обратной совместимости со старыми операционными системами. Но это и так знали читатели, знакомые с моими прошлыми статьями.
Разработчики потеряли некоторые архивы. Печально. Хотя для нашего проекта ничего страшного не произошло, ведь потерялся редактор для macOS.
Дальше берём кастомный Godot Engine для Windows XP. Так как владелец репозитория оказался грамотным человеком, мы видим архивы не только с исходным кодом, но и скомпилированный вариант, готовый к использованию. Всё чётко и по делу. Моё уважение таким разработчикам.
Сравнив исходный код оргинального проекта с кастомным я выяснил, что старую версию минимально модифицировали перед сборкой для Windows XP.
|
|
|
А ещё обнаружил, что в официальном репозитории Godot Engine распространяют кривой архив исходного кода Godot 2.1.6 Stable. Архив является простым TAR, когда по расширению это должен быть TAR/XZ. Но это так, забавный момент.
Папка со средой разработки уже содержит несколько разных версий редактора Godot, вспомогательную утилиту Rcedit, шаблоны экспорта, исходный код и даже скрипты запуска с выносом домашнего каталога в папку UserData. Скрипты запуска основаны на лаунчере от Installer-SH.
Конечно, можно просто взять и запустить движок двумя кликами мыши без вспомогательных скриптов, но тогда программа полезет в настоящий домашний каталог пользователя. Мои же скрипты позволяют перенести весь мусор в отдельную папку.
|
|
|
Так же добавил в комплект библиотеки Mesa для Windows на случай, если нужно будет запустить программу, используя центральный процессор вместо видеокарты. Я не использую последние версии Mesa3D по той простой причине, что они поломаны с момента, как AMD приложила руку к проекту в 2021 году. Хотя библиотека dxtn и не нужна, но я предпочитаю не удалять ничего без необходимости. В каком виде было, так и оставил. Только разложил разные версии по отдельным папкам для удобства.
Не забываю и про оптимизацию. Гораздо выгоднее упаковать две ветки исходного кода в один архив, чем держать отдельными архивами. Ведь большинство файлов повторяется, а такие легко исключаются некоторыми алгоритмами сжатия при достаточном размере словаря. Так мы сэкономили 10 мегабайт в общем размере набора разработки.
Больше всего места занимают шаблоны экспорта под разные платформы. Но с этим мы ничего сделать не можем, иначе урежем функциональность.
Попутно подготавливаю файл с описанием. Похоже, под этот набор следует выделить отдельный репозиторий GitHub.
Ну а чтобы лишний раз не теребить репозиторий, выложу готовый набор после того, как закончу сборку.
Пробую сжимать. Внушительные 698 мегабайт сжались в архив размером 243 мегабайта.
|
|
|
|
Базовый набор готов. Это будет база для разработки новых проектов на основе движка Godot 2. Возможно, со временем внесу доработки в набор, но пока оставлю так.
https://github.com/Shedou/godot-engine-toolset-v215
Что дальше? Можно приступать к разработке ChimbaBenchXPL? Увы, но нельзя. Нам ещё нужно собрать набор вспомогательных инструментов, таких как редактор 3D моделей, редактор текстур и тому подобное.
За 3D моделирование будет отвечать Blender v4.3.2 в формате Installer-SH. В качестве редактора растровой графики используем Krita v5.2.9. К сожалению или счастью, Krita — это единственный вменяемый графический редактор для Linux среди мне известных, который действительно пригоден для использования. Прочие зачастую просто делают видимость пригодности.
Распространяемые пакеты Blender и Krita в автономном формате Installer-SH можно найти в репозитории Chimbalix Software Catalog. Или где угодно в интернете, если кто-то использует этот новый и перспективный формат распространения софта для Linux.
Но этого недостаточно для полноценной разработки проекта. Нам ещё пригодиться редактор материалов Material Maker, так же созданный на основе движка Godot Engine. Я держу две разные версии, потому что одна на основе Godot 3, а другая на основе Godot 4 со всеми вытекающими последствиями для обратной совместимости. Да и не факт, что эта утилита пригодится.
А вот утилитой Materialize (Bounding Box Software) я точно буду пользоваться, потому что она действительно полезна и проста в использовании. Основана эта утилита, к слову, на Unity Engine. Хотя обе утилиты распространяются свободно, я не вижу смысла паковать их и выкладывать у себя в репозитории.
А ведь сжимаются они действительно хорошо. Может быть, подумаю над тем, чтобы и этот набор оформить в виде отдельного автономного архива. Но это не точно.
Не знаю, будет ли толк от всех текстур, которые можно создать в пару кликов с помощью утилиты Materialize. Всё же Godot Engine 2 весьма скуден в возможностях.
|
|
|
Так же мне будет помогать локальная нейронная сеть Stable Diffusion Web UI Neuro.
Пусть у меня и мобильная GeForce RTX 3060 всего на 6 гигабайт памяти, но этого более чем достаточно для генерации в разрешении до 1920x1200x4, то есть 4 изображения одновременно в разрешении 1920x1200. В среде Windows, конечно же, можно сгенерировать и в разрешении 3840x2160 при наличии 64 ГБ ОЗУ, ибо Windows гораздо лучше работает с памятью и драйверами видеокарт. Но я использую Linux вместо операционной системы, так что мои возможности немного ограничены.
|
|
|
В любом случае для нашего проекта даже текстуры в размере 1024x1024 будут избыточными. Хотя нейронные сети и не дадут идеального варианта, но это всяко лучше, чем тратить массу времени на создание текстур с нуля в обычном графическом редакторе.
|
|
|
|
Выглядит интересно, но очень сомневаюсь, что такую графику выйдет реализовать в игровом движке Godot 2.1.5. Эта утилита для создания текстур всё же на движке Unity 2017.4.3f1 (2018 год).
|
|
|
Погодите... А ведь Godot Engine 2.1.5 тоже выпущен в 2018 году... Может, зря я выбрал в качестве основы Godot? Ну да ладно.
Что ещё может пригодиться в создании бенчмарка? Утилиты для работы со звуком могли бы пригодиться. Но пока не будем усложнять проект звуковой составляющей. Хотя использование нейронных сетей и выглядит как читерство относительно разработчиков старой школы, которым приходилось всё делать самим. Но важно заметить: какими бы нейронные сети ни были продвинутыми, мне всё равно придётся контролировать результат и дорабатывать.
Да и нейронные сети не напишут код вместо меня, ибо зачастую и понятия не имеют про старый язык GDScript, используемый в старых версиях Godot Engine 2. Я уже пробовал запросить у нейронной сети простейший код для Godot Engine 2, но даже с этой задачей не справилась. Нейросеть с умным видом просто галлюцинировала. Как всегда.
|
|
|
У старого Godot 2 нет класса "Engine". Так же нейронная сеть понятия не имеет, что в старой версии движка функция _process используется, только если её принудительно включить функцией set_process. То же относится и к функции _fixed_process. А ведь это был крайне простой код, состоящий из двух строчек.
Что уж говорить, если нейронная сеть даже определить две переменные правильно не смогла.
Конечно, нейронные сети бывают разные, но многие требуют доступа к интернету для работы. Это основополагающий недостаток. Ведь сегодня есть и работает, а завтра сервер сломался. Так что обойдёмся без таких, с позволения помощников. Одно дело локально работающий Stable Diffusion, но вставать в зависимость от сервисов в Интернете не хочу. Тем более в результате всё равно можно получить галлюцинации вместо нормального кода в моём конкретном случае, ибо со старой версией движка мало кто знаком. Многие в хвалёном Open-Source просто несутся в бесконечной погоне обновлений сломя голову, вместо того, чтобы сделать что-то действительно стоящее и проработанное.
Осталось создать ярлыки на рабочем столе для удобства использования.
Некоторые значки получились красными. Но это только потому, что приложение запускается через WINE.
Теперь можно начать создавать проект. Первым делом определяюсь со стандартными размерами окна. Нестандартное разрешение 720x520 отлично вписывается в стандартное разрешение 800x600 плюс панель задач и декорации окон операционной системы. При этом оставляет много пространства для реализации элементов интерфейса. Но проблема нестандартных разрешений в том, что они нестандартные. Потому в качестве отправной точки возьмём 640x360. Так мы получим наилучшую совместимость ценой малой доступной площади для размещения графического интерфейса. Раньше ведь как-то справлялись и в разрешении 320x240. Так что нечего тут жаловаться. Да и слабые видеокарты не справятся с более высоким разрешением.
|
|
|
Прочие варианты размера окна реализуем через настройки. В любом случае пока нужно поиграться со старой версией Godot Engine 2.1. Язык и структура движка настолько отличается от Godot 3 и 4, что приходится заново изучать и привыкать.
Элементарные вещи реализовать не сложно.
|
|
|
|
Куда сложнее управлять движком Godot. Мне нужна возможность гибко управлять частотой кадров, чтобы в главном меню не нагружать процессор и видеокарту лишней работой. Но с этим есть серьёзные проблемы у движка Godot. Globals просто не работает, как положено, а других функций и классов, способных изменить настройки движка, я пока не нашёл.
Хотя я и могу управлять лимитом кадров в секунду, но происходит это через настройки проекта перед запуском приложения, а нужно это делать во время исполнения через скрипты.
|
|
|
Впрочем, я уже сделал простейший бенчмарк считающий средний fps за последние 5 секунд.
Правда, сейчас оно работает как тест эффективности ядра операционной системы, драйвера видеокарты и производительности процессора, а не тест видеокарты. На следующих скриншотах слева результат, когда процессор ограничен мощностью 15 Вт, справа — с ограничением до 75 Вт. Процессор Intel Core i7-10875H. Так как используется преимущественно один поток для работы, то результат не сильно меняется в пользу повышенных лимитов мощности ЦП.
|
|
|
Пожалуй, этого хватит для начала. Теперь бы определиться с лицензией на новый проект. Старый ChimbaBench создан под лицензией GPLv3. Может, и новый под такой же лицензией выпустить? Мне не очень по нраву эта вирусная лицензия GPL, потому что требует записывать все изменения, а это крайне неудобно. Да и многим она не по нраву, если посмотреть первую попавшуюся статистику. Я хочу разрабатывать, а не ломать голову над ведением истории изменений в своём проекте.
Да и если посмотреть на библиотеку заготовок движка Godot, можно заметить, что большинство примеров под лицензией MIT. Но тут важно заметить, что качество таких примерных проектов оставляет желать лучшего. Мягко говоря. Но у меня будет не пример проекта, состряпанный на скорую руку, а полноценное приложение. Так что пойду по пути первого проекта в плане лицензии. Ну а ведение истории изменений — уже фиг с ним. Тут уж как получится.
|
|
|
Муки выбора лицензии окончены. Файл gitignore настроен. Первый исходный код загружен в репозиторий GitHub.
https://github.com/Shedou/ChimbaBenchXPL
На этом можно завершить данную статью. Начало проекта успешно положено. Как и ожидалось, танцев с бубном будет довольно много в процессе разработки, хотя движок Godot 2.1.5 выпущен в 2018 году. Впрочем, чего ещё было ожидать от Open-Source. Но это всяко лучше, чем создавать всё с нуля, хотя и хуже некоторых закрытых движков.
Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.