Добавить в корзинуПозвонить
Найти в Дзене
OVERCLOCKERS.RU

Начало разработки проекта ChimbaBenchXPL

Однажды я провёл ряд тестов на старых компьютерах и ноутбуках. Всё бы хорошо, но был обнаружен ряд проблем при тестировании ChimbaBench, что основан на движке Godot Engine. Но прежде чем начинать разработку нового проекта, я провёл исследования, а так же тесты и определился с выбором основы. В итоге выбор пал на движок Godot. Хотя он и непригоден для создания перспективных и масштабных проектов, так как функционально недостаточен и при этом имеет серьёзные проблемы с точностью мировых координат, что оксюморон для любого серьёзного игрового движка. Но Godot Engine в целом оказался лучшим среди свободных Open-Source вариантов под наши цели. Потому нам придётся смириться с серьёзными недостатками движка при разработке нового проекта. Godot Engine не позволит создать что-то масштабное и технологичное ввиду своей несостоятельности в качестве игрового движка. Но нам это и не надо, так как проект нацелен на совместимость со старыми ОС и оборудованием. Новая разработка будет называться ChimbaB

Однажды я провёл ряд тестов на старых компьютерах и ноутбуках. Всё бы хорошо, но был обнаружен ряд проблем при тестировании 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, но там довольно мало изменений относительно предыдущей версии. Так что не будем рисковать совместимостью лишний раз. И да, последние версии обхожу стороной из-за плохой обратной совместимости со старыми операционными системами. Но это и так знали читатели, знакомые с моими прошлыми статьями.

-2

Разработчики потеряли некоторые архивы. Печально. Хотя для нашего проекта ничего страшного не произошло, ведь потерялся редактор для macOS.

-3

Дальше берём кастомный Godot Engine для Windows XP. Так как владелец репозитория оказался грамотным человеком, мы видим архивы не только с исходным кодом, но и скомпилированный вариант, готовый к использованию. Всё чётко и по делу. Моё уважение таким разработчикам.

-4

Сравнив исходный код оргинального проекта с кастомным я выяснил, что старую версию минимально модифицировали перед сборкой для Windows XP.

А ещё обнаружил, что в официальном репозитории Godot Engine распространяют кривой архив исходного кода Godot 2.1.6 Stable. Архив является простым TAR, когда по расширению это должен быть TAR/XZ. Но это так, забавный момент.

-6

Папка со средой разработки уже содержит несколько разных версий редактора Godot, вспомогательную утилиту Rcedit, шаблоны экспорта, исходный код и даже скрипты запуска с выносом домашнего каталога в папку UserData. Скрипты запуска основаны на лаунчере от Installer-SH.

-7

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

Так же добавил в комплект библиотеки Mesa для Windows на случай, если нужно будет запустить программу, используя центральный процессор вместо видеокарты. Я не использую последние версии Mesa3D по той простой причине, что они поломаны с момента, как AMD приложила руку к проекту в 2021 году. Хотя библиотека dxtn и не нужна, но я предпочитаю не удалять ничего без необходимости. В каком виде было, так и оставил. Только разложил разные версии по отдельным папкам для удобства.

-9

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

-10

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

-11

Попутно подготавливаю файл с описанием. Похоже, под этот набор следует выделить отдельный репозиторий GitHub.

-12

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

-13

Пробую сжимать. Внушительные 698 мегабайт сжались в архив размером 243 мегабайта.

Базовый набор готов. Это будет база для разработки новых проектов на основе движка Godot 2. Возможно, со временем внесу доработки в набор, но пока оставлю так.

https://github.com/Shedou/godot-engine-toolset-v215

-15

Что дальше? Можно приступать к разработке ChimbaBenchXPL? Увы, но нельзя. Нам ещё нужно собрать набор вспомогательных инструментов, таких как редактор 3D моделей, редактор текстур и тому подобное.

За 3D моделирование будет отвечать Blender v4.3.2 в формате Installer-SH. В качестве редактора растровой графики используем Krita v5.2.9. К сожалению или счастью, Krita — это единственный вменяемый графический редактор для Linux среди мне известных, который действительно пригоден для использования. Прочие зачастую просто делают видимость пригодности.

Распространяемые пакеты Blender и Krita в автономном формате Installer-SH можно найти в репозитории Chimbalix Software Catalog. Или где угодно в интернете, если кто-то использует этот новый и перспективный формат распространения софта для Linux.

-16

Но этого недостаточно для полноценной разработки проекта. Нам ещё пригодиться редактор материалов Material Maker, так же созданный на основе движка Godot Engine. Я держу две разные версии, потому что одна на основе Godot 3, а другая на основе Godot 4 со всеми вытекающими последствиями для обратной совместимости. Да и не факт, что эта утилита пригодится.

-17

А вот утилитой Materialize (Bounding Box Software) я точно буду пользоваться, потому что она действительно полезна и проста в использовании. Основана эта утилита, к слову, на Unity Engine. Хотя обе утилиты распространяются свободно, я не вижу смысла паковать их и выкладывать у себя в репозитории.

-18

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

-19

Не знаю, будет ли толк от всех текстур, которые можно создать в пару кликов с помощью утилиты Materialize. Всё же Godot Engine 2 весьма скуден в возможностях.

Так же мне будет помогать локальная нейронная сеть Stable Diffusion Web UI Neuro.

-21

Пусть у меня и мобильная 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? Ну да ладно.

-25

Что ещё может пригодиться в создании бенчмарка? Утилиты для работы со звуком могли бы пригодиться. Но пока не будем усложнять проект звуковой составляющей. Хотя использование нейронных сетей и выглядит как читерство относительно разработчиков старой школы, которым приходилось всё делать самим. Но важно заметить: какими бы нейронные сети ни были продвинутыми, мне всё равно придётся контролировать результат и дорабатывать.

Да и нейронные сети не напишут код вместо меня, ибо зачастую и понятия не имеют про старый язык GDScript, используемый в старых версиях Godot Engine 2. Я уже пробовал запросить у нейронной сети простейший код для Godot Engine 2, но даже с этой задачей не справилась. Нейросеть с умным видом просто галлюцинировала. Как всегда.

У старого Godot 2 нет класса "Engine". Так же нейронная сеть понятия не имеет, что в старой версии движка функция _process используется, только если её принудительно включить функцией set_process. То же относится и к функции _fixed_process. А ведь это был крайне простой код, состоящий из двух строчек.

-27

Что уж говорить, если нейронная сеть даже определить две переменные правильно не смогла.

-28

Конечно, нейронные сети бывают разные, но многие требуют доступа к интернету для работы. Это основополагающий недостаток. Ведь сегодня есть и работает, а завтра сервер сломался. Так что обойдёмся без таких, с позволения помощников. Одно дело локально работающий Stable Diffusion, но вставать в зависимость от сервисов в Интернете не хочу. Тем более в результате всё равно можно получить галлюцинации вместо нормального кода в моём конкретном случае, ибо со старой версией движка мало кто знаком. Многие в хвалёном Open-Source просто несутся в бесконечной погоне обновлений сломя голову, вместо того, чтобы сделать что-то действительно стоящее и проработанное.

-29

Осталось создать ярлыки на рабочем столе для удобства использования.

-30

Некоторые значки получились красными. Но это только потому, что приложение запускается через WINE.

-31

Теперь можно начать создавать проект. Первым делом определяюсь со стандартными размерами окна. Нестандартное разрешение 720x520 отлично вписывается в стандартное разрешение 800x600 плюс панель задач и декорации окон операционной системы. При этом оставляет много пространства для реализации элементов интерфейса. Но проблема нестандартных разрешений в том, что они нестандартные. Потому в качестве отправной точки возьмём 640x360. Так мы получим наилучшую совместимость ценой малой доступной площади для размещения графического интерфейса. Раньше ведь как-то справлялись и в разрешении 320x240. Так что нечего тут жаловаться. Да и слабые видеокарты не справятся с более высоким разрешением.

Прочие варианты размера окна реализуем через настройки. В любом случае пока нужно поиграться со старой версией Godot Engine 2.1. Язык и структура движка настолько отличается от Godot 3 и 4, что приходится заново изучать и привыкать.

-33

Элементарные вещи реализовать не сложно.

Куда сложнее управлять движком Godot. Мне нужна возможность гибко управлять частотой кадров, чтобы в главном меню не нагружать процессор и видеокарту лишней работой. Но с этим есть серьёзные проблемы у движка Godot. Globals просто не работает, как положено, а других функций и классов, способных изменить настройки движка, я пока не нашёл.

-35

Хотя я и могу управлять лимитом кадров в секунду, но происходит это через настройки проекта перед запуском приложения, а нужно это делать во время исполнения через скрипты.

Впрочем, я уже сделал простейший бенчмарк считающий средний fps за последние 5 секунд.

-37

Правда, сейчас оно работает как тест эффективности ядра операционной системы, драйвера видеокарты и производительности процессора, а не тест видеокарты. На следующих скриншотах слева результат, когда процессор ограничен мощностью 15 Вт, справа — с ограничением до 75 Вт. Процессор Intel Core i7-10875H. Так как используется преимущественно один поток для работы, то результат не сильно меняется в пользу повышенных лимитов мощности ЦП.

Пожалуй, этого хватит для начала. Теперь бы определиться с лицензией на новый проект. Старый ChimbaBench создан под лицензией GPLv3. Может, и новый под такой же лицензией выпустить? Мне не очень по нраву эта вирусная лицензия GPL, потому что требует записывать все изменения, а это крайне неудобно. Да и многим она не по нраву, если посмотреть первую попавшуюся статистику. Я хочу разрабатывать, а не ломать голову над ведением истории изменений в своём проекте.

-39

Да и если посмотреть на библиотеку заготовок движка Godot, можно заметить, что большинство примеров под лицензией MIT. Но тут важно заметить, что качество таких примерных проектов оставляет желать лучшего. Мягко говоря. Но у меня будет не пример проекта, состряпанный на скорую руку, а полноценное приложение. Так что пойду по пути первого проекта в плане лицензии. Ну а ведение истории изменений — уже фиг с ним. Тут уж как получится.

Муки выбора лицензии окончены. Файл gitignore настроен. Первый исходный код загружен в репозиторий GitHub.

https://github.com/Shedou/ChimbaBenchXPL

-41

На этом можно завершить данную статью. Начало проекта успешно положено. Как и ожидалось, танцев с бубном будет довольно много в процессе разработки, хотя движок Godot 2.1.5 выпущен в 2018 году. Впрочем, чего ещё было ожидать от Open-Source. Но это всяко лучше, чем создавать всё с нуля, хотя и хуже некоторых закрытых движков.

-42

Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.

Читайте далее на сайте

-43

Регулятор CADE расследует приоритетную предварительную установку браузера Microsoft Edge в Бразилии