Внимание! Это продолжение предыдущей статьи. Настоятельно рекомендую ознакомиться с первой частью.
Если коротко, то в прошлой части я поговорил про сообщество Open-Source, а так же выяснил нюансы совместимости игрового движка Godot. И так как я хотел добиться совместимости с Windows XP, было решено собрать Godot Engine из исходного кода. Ведь официальные версии движка несовместимы с данной операционной системой. А тут как раз нашлись сторонние проекты, обещающие совместимость с Windows XP. Правда, с компиляцией из исходников не задалось.
Ладно, может, Godot 2 не такой уж и плохой выбор, если он докажет, что более работоспособен, чем более новые версии? Давайте возьмём старую видеокарту ATi Radeon X800 GTO и проверим, выйдет ли запустить хоть что-то на таком оборудовании.
|
|
|
К сожалению, контора AMD уже давно купившая ATi, так и не выпустила ни одного вменяемого драйвера для видеокарты X800 GTO под Windows 7. Пакет вроде и установился, но за OpenGL API отвечает стандартный драйвер Microsoft. Короче, драйверы AMD — как всегда...
|
|
|
|
|
А ведь у NVIDIA есть драйверы даже под Windows 8, для видеокарт GeForce 6 серии. Да и OpenGL намного лучше поддерживается у Зелёного лагеря, как и DirectX.
Идём в среду Windows XP и устанавливаем последний драйвер AMD Catalyst 10.2. Тут уже появилась галочка OpenGL 2.1.
|
|
|
|
Но контора AMD не оправдывала бы звание производителя худших драйверов для видеокарт, если бы фактическая поддержка OpenGL соответствовала заявленной. По факту, видеокарта не полностью поддерживает даже OpenGL версии 2.0.
|
|
|
Ну а движок Godot 2 не захотел работать с видеокартой Radeon X800 GTO, хотя формально она поддерживает необходимую версию OpenGL API. Можно запустить, используя процессор вместо видеокарты, но в таком случае тест становится бессмысленным, даже если имеем целых 253 fps со старым ЦП.
|
|
|
|
Да и с поддержкой DirectX всё не идеально. Игра Street Fighter IV не работает, как положено. Не зря пишут на заставках: NVIDIA. The way it's meant to be played. Ибо только NVIDIA и позволяет играть так, как задумано.
|
|
|
|
А может, мне просто нужно посмотреть в сторону других движков для создания своего проекта? Нашёлся тут O3DE, но там минимальные системные требования настолько серьёзные, что даже Unreal Engine 5 выглядит не так уж и массивно. Даже есть возможности трассировки лучей, бесполезные для моего проекта. Возьмём на заметку.
|
|
|
Ещё попадался Torque3D.
Но там с обратной совместимостью всё настолько ужасно, что запустить выйдет, начиная лишь с Debian 12, ибо зависимость от Glibc 2.34.
Хотя с запуском в среде Linux я погорячился, ведь разработчики не смогли даже правильно упаковать архив со своим творением, от чего поломались символические ссылки на библиотеки. Лучше бы они воспользовались Installer-SH для создания распространяемых пакетов. Хоть ссылки не поломались бы при упаковке, так как эту задачу на себя берёт установочный пакет.
Движок, конечно, интересный. Функционально явно превосходит Godot, но он неудобен в использовании и умудряется тормозить даже на i7-10875H с 64 GB и RTX 3060. Похоже, есть какие-то серьёзные проблемы с оптимизацией.
Ничего толкового найти не удалось среди свободных игровых движков. Причём ряд движков не поддерживают Linux. Такие я даже не рассматривал. Судя по всему, остаётся использовать только Godot 2. Работать оно должно, начиная с GeForce 6 серии и Radeon X1000. Хотя в случае Radeon могут быть проблемы, ибо там есть некоторые нюансы с поддержкой вершинных шейдеров.
В любом случае я возвращаюсь к поиску более адекватных драйверов для видеокарты Radeon. Ведь выяснилось, что программа падает при использовании OpenGL от драйвера Catalyst 10.2 даже на более новой видеокарте Radeon 3100.
Я хотел скачать более старые драйверы, однако на официальном сайте AMD архив драйверов удалили. Именно на него ссылалось большинство сайтов в интернете. Так что пришлось постараться, чтобы найти иные версии Catalyst.
Сначала я удалил старый драйвер, а потом установил модифицированный DNA. Но выяснилось, что установился только назойливый баннер AMD, предлагающий зарегистрировать продукт. Короче говоря, не подходит модифицированный драйвер.
|
|
|
|
|
|
|
|
Принудительная установка только поломала операционную систему. Но так как это Windows, я воспользовался безопасным режимом и легко удалил проблемный компонент.
|
|
|
|
Потом установил Catalyst 9.11 от компании AMD. В итоге Godot 2 заработал. Что это значит? Правильно! Драйвер AMD Catalyst 10.2 содержит в себе поломанный OpenGL API. Именно эту поломанную версию, AMD на полном серьёзе предлагает пользователям устанавливать, без возможности скачать другие версии драйвера.
|
|
|
|
С видеокартой Radeon X800 GTO пришлось устанавливать Catalyst 9.2. Версия драйвера 9.11 от AMD не подошла. Godot 2 так же заработал, но неправильно. Всё же X800 GTO не поддерживает OpenGL 2.1 в полной мере. Она даже OpenGL 2.0 не полностью поддерживает.
|
|
|
|
|
|
И тут выяснил, что даже если убрать все расширения GL_NV и WGL из учёта, то у GeForce 6800 GT остаётся порядка 131 расширения OpenGL. Что гораздо больше, чем у X800 GTO, имеющей в общем счёте 111 всех расширений.
Что уж говорить, если AMD даже OpenGL 3.3 не смогла правильно реализовать для видеокарт HD 2000-4000 серий. Собрал тут простейший проект на движке Godot 4 в режиме GLES3, а он не работает с Radeon 3100 на драйвере AMD Catalyst 13.4. Как, собственно, не работали и проекты на основе Godot 3 в режиме OpenGL 3.3.
Мне очень не понравились результаты. Но другие свободные игровые движки и на такое оказались неспособны. Хотя Godot Engine и является непригодным движком для перспективных и крупных проектов, но он всяко лучше прочих свободных вариантов. А ведь мне хотелось бы реализовать поддержку не только Windows и Linux, но и FreeBSD.
Я вроде и хотел создать новый ChimbaBench, но никак не могу добиться внятной работоспособности со старыми видеокартами ATi/AMD. Даже просто собрать движок из исходного кода, оказалось тем ещё приключением. В последнее время мне удалось прикрутить Python 3.7 вместе с Pip и SCons к Windows XP и благополучно начать компиляцию кастомного игрового движка. Смог бы я такое провернуть в каком-нибудь Линуксе из тех же времён, например, Debian 4, выпущенном в 2004 году? Определённо нет. До Debian 8 (2014 год) в Линуксах не видно даже зачатков жизни. Если не брать в учёт Installer-SH, работающий, начиная с Debian 7.
В любом случае эксперименты продолжились. Мне в итоге удалось скомпилировать Godot Engine в среде Windows XP. Пришлось изрядно потанцевать над исходным кодом. Но проблема в том, что исходники движка, предназначенные якобы для Windows XP, содержат ряд недоступных в Windows XP зависимостей. Стоило мне отвязать от одной зависимости, как нарвался на другую.
|
|
|
Получается разработчики просто обманули с поддержкой Windows XP? То-то они не выставляют предварительно скомпилированные исполняемые файлы движка Godot 3 для Windows XP... Выставлять то нечего.
Нельзя просто взять и скомпилировать исходники, которыми так любят гордиться всякие приверженцы Open-Source. Если часть зависимостей мне удалось устранить, то с зависимостью dwmapi будет гораздо сложнее, потому что это библиотека диспетчера окон Рабочего стола (DWM). Придётся переписать функции создания окон в движке Godot для платформы Windows.
Сложность исправлений резко повышается с этого момента. Особенно в моём случае, когда использую обычный WordPad вместо полноценной IDE. Если бы я был уверен, что после этого исправления Godot наконец заработает как положено, я бы взялся за это. Но чувствую, этим дело не закончится.
Я не могу собрать Godot 3 для Windows XP за приемлемое количество трудозатрат. Поэтому нужно подумать над другими вариантами. Один из вариантов — это отказ от поддержки Windows XP. Тогда я смогу относительно легко реализовать новый проект с поддержкой Windows 7+, Debian 8+ и FreeBSD 13+.
Второй вариант, это реализовать поддержку Windows XP+ и Debian 8+, используя кастомный Godot 2. Но тогда не будет поддержки FreeBSD. Поддержку BSD теоретически можно реализовать костылём, ведь в Godot 2 была обнаружена неприметная функция конвертации проекта в формат Godot 3. Жаль только, проект придётся почти полностью заново переделывать, ибо конвертирует криво. Как всегда. Так что про поддержку FreeBSD в таком варианте всё равно придётся забыть.
|
|
|
Самое забавное, что раньше был Godot 2 в репозиториях FreeBSD 13. И я бы мог реализовать поддержу данного семейства ОС, но репозитории 13 версии FreeBSD уже умерли, а вместе с репозиториями умерли и нужные пакеты. Увы. Такова участь изначально некомпетентного подхода к распространению софта через репозитории. Поэтому FreeBSD — ещё более мёртвая операционная система, чем Linux. Ведь там кроме репозиториев, пока что ничего и нет.
|
|
|
У меня есть копия репозитория FreeBSD 13 весом 122 гигабайта. Когда-то сделал в осознании, что эти репозитории скоро умрут, как и любые другие. Но там нет пакетов с движком Godot 2, потому что они не собирались для x86 архитектуры. Любители BSD — странные люди в этом плане.
Так что у меня нет вариантов реализации поддержки Windows XP и FreeBSD одним проектом. Можно было бы растянуть «муки выбора» на третью часть, так как уже набрался объём материала. Но постараюсь уже завершить серию статей.
Хотя постойте. Дорабатывая первую часть статьи, я обнаружил одну деталь. А что если это не разработчики обманули, а просто репозиторий создан как-то неправильно и просто нельзя было выбирать никакие иные ветки, кроме основной под названием xp? Я же не успокоюсь, если не проверю наверняка. Тем более уже есть опыт и рабочая среда компиляции...
И да. На самом деле владелец репозитория просто наплодил разных веток Godot Engine, тем самым вводя в заблуждение людей, пытающихся собрать нужную версию движка. На самом деле, основная ветка движка под названием xp собралась в уже готовой среде разработки. В основной ветке оказался Godot Engine 3.6.1 RC. И это на самом деле плохо, потому что официальные варианты данной ветки движка имеют очень плохую совместимость, а смешивать ветки 3.5 и 3.6 в одном проекте очень не хотелось бы. Как и пытаться компилировать исходники ещё и в среде Linux. Потому что придётся снова танцевать с бубном над Python, SCons и компиляторами. Это, знаете ли, очень проблематично будет сделать с мёрвыми репозиториями в каком-нибудь Debian 7-8. Не факт, что там вообще найдутся зависимости подходящих версий, как удалось найти для Windows XP.
|
|
|
|
Хотя мне удалось в итоге собрать Godot 3 под Windows XP по чистой случайности, потому что во время работы над статьями я решил проверить неочевидное. Но собранный исполняемый файл оказался весом в 377 мегабайт.
|
|
|
Впрочем, проблема размера решается набрасыванием оптимизаций.
Только непонятно, что делать с падением при запуске движка через командную строку. Если просто запускать, то запускается. Но если это делать через командную строку или даже терминал, то движок не запускается. Проблема решилась указанием имени пакета с данными. Только с графикой какие-то проблемы. Но это могут быть проблемы очень старой Mesa, так как тестирую в виртуальной машине при помощи драйвера llvmpipe 2013 года.
|
|
|
Мои предположения оказались верны насчёт Mesa3D.
|
|
|
А вот на реальном компьютере с видеокартой Radeon результаты оказались печальными. Кастомный Godot 3.6.1 ни в какую не хочет работать ни с ATi Radeon X800 GTO, ни с AMD Radeon 3100. Даже обновление драйвера не помогает. А ведь Godot 2 работал в таких же условиях...
|
|
|
|
|
Что мы выяснили в ходе текущих экспериментов и размышлений на основании многолетнего опыта:
Исходя из полученных результатов, я имею следующие варианты дальнейших действий:
Изначально мой выбор был в пользу Godot 2. Этот вариант имел большой охват оборудования и платформ, хотя и пришлось бы изучать старую версию движка. Но по стечению обстоятельств мне удалось добиться совместимости с Wndows XP на движке Godot 3. Хотя и без возможности выбрать конкретную нужную версию, так как репозиторий оказался захламлён нерабочими версиями. Но тесты на реальном оборудовании показали, что кастомный Godot 3 отказывается работать даже с AMD Radeon 3100.
Так что мой выбор останется в пользу Godot Engine 2. Данный вариант имеет максимальный охват пользователей и оборудования. Кастомный Godot 3 явно использует больше возможностей OpenGL, чем предыдущая версия движка, что плохо сказывается на совместимости со старыми видеокартами ATi/AMD. Да и надоела мне возня со сторонними разношёрстыми бенчмарками при тестировании разнообразных компьютеров и ноутбуков.
Я хочу бенчмарк, который будет работать почти везде, без терминального колхоза и прочего характерного для Linux непотребства, а так же выдавать простые и удобные для сравнения результаты. Так что, простите любители FreeBSD, как-нибудь в другой раз уделю внимание данной платформе.
Тем более, я не вижу пригодных для использования дистрибутивов FreeBSD, способных установиться и работать на компьютерах с 2 гигабайтами ОЗУ, что очень плохо для любой операционной системы, учитывая стоимость оперативной памяти на рынке. Я, конечно, никого не заставляю, но если меня сейчас читают разработчики дистрибутивов FreeBSD, будьте разумными разработчиками и сделайте адекватную систему запуска LiveCD, которая будет работать на системах с малым объёмом ОЗУ (1,5-2 ГБ). Ну и желательно, чтобы были адекватные инструменты для создания новых дистрибутивов на основе уже установленного. Иначе не интересно.
На этом завершу статью. Осталось только собрать среду разработки и начать новый проект.
Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.