Последние два
года часто приходится слышать о том,
что Linux на десктопах «не выстрелил». И
что место его – в нише серверов,
суперкомпьютеров, встраиваемых систем
и мобильных устройств (в качестве
Android, MeeGo и др). Не хочется сейчас касаться
бессмысленных холиваров а ля «под Линукс
нету Фотошопа» – я не буду оправдывать
систему перед геймерами, домохозяйками,
«офисным планктоном» и прочим подобным
контингентом, равно как и агитировать
кого-либо переходить на нее. Я просто
намерен объяснить, что именно в Linux
привлекает среднестатистического
хакера – компьютерного энтузиаста-«кулибина»,
которого, как это ни парадоксально,
интересует не наличие прикладного
софта, а именно его отсутствие – чтобы
был стимул написать свой! В моем случае
– отсутствие игр (малый ассортимент,
если быть точным). Именно этот факт
послужил первой причиной выбора Linux в
качестве основной целевой платформы
разработки.
Под Linux мало
игр – следовательно, высока вероятность,
что ваш проект будет оценен по достоинству
и получит свою долю популярности.
Сравните это с рынком Windows, который
настолько перенасыщен, что у «новоприбывших»
практически нет никаких шансов –
конкуренция слишком высока. Это, конечно,
не значит что качественные инди-проекты
остаются совсем незамеченными (вспомните
историю той же Portal), но факт остается
фактом: мир Windows диктует свои правила,
и не все в нем способны выжить. Кстати,
это относится не только к играм...
В то же время,
было бы некорректно утверждать, что мир
Linux не диктует никаких правил. Диктует,
и еще как. Это вселенная OpenSource, и вам
придется так или иначе отдать дань
сообществу СПО за то, что пользуетесь
свободными программами в своей работе.
Неважно, каким именно способом –
открытием своих исходников, вкладом в
другие открытые проекты, материальным
пожертвованием и т. д. Разумеется,
это правило неписанное, оно не значится
в лицензионных соглашениях. Это скорее
этический принцип. Всякий, кто приходит
в этот мир, впечатлившись идеалами
свободы, горит желанием стать частью
движения, чтобы выразить свою благодарность
сообществу. И, на мой взгляд, создание
свободного игрового проекта – один из
лучших способов сделать это.
Поскольку Linux
создавался «программистами для
программистов», в нем все ориентировано,
в первую очередь, на разработку новых
и совершенствование существующих
инструментов. К примеру, почти все
дистрибутивы идут в комлекте с компилятором
GCC и рантаймом языка Python – пользователь
может запросто, сразу после установки,
начать программировать. Сравните это
с Windows, где для написания даже простейшего
«Hello, World» нужно устанавливать навороченные
IDE – часто платные и весьма требовательные
к ресурсам. Конечно, можно и в Windows
обустроить себе уютное linux-like окружение:
установить MinGW или другой набор свободных
компиляторов, Posix-утилиты, все необходимые
библиотеки – многие так и делают,
особенно если нужен кроссплатформенный
toolchain. Суть в том, что в Linux этот набор
инструментов присутствует изначально.
Linux дружественен к разработчику: это
заметно везде, в любых мелочах. Вплоть
до того, что все линуксовые текстовые
редакторы, даже самые простые, поддерживают
подсветку синтаксиса.
Есть еще один
момент: по очевидным причинам, в Linux
доступен только один трехмерный API –
OpenGL. В среде программистов бытует
устойчивое «суеверие», касающееся
интерфейсов разработки 3D-приложений:
о том, что для игр больше подходит
DirectX, а ниша OpenGL – САПР, промышленная
визуализация и научно-исследовательское
моделирование. Это происходит из-за
дилетантской попытки сравнивать OpenGL
именно с DirectX, а не Direct3D. Как известно,
DirectX – это не только трехмерная и
двумерная графика, но и звук, сеть,
взаимодействие с устройствами ввода,
библиотеки вспомогательных функций и
многое другое. Более корректное сравнение
выглядит следующим образом: DirectX vs
OpenGL+OpenAL+SDL+FreeType. А это уже, согласитесь,
внушительный «арсенал». Причем, доступный
не только под Windows и Linux, но и ряд других
платформ. А кто станет спорить с тем,
что кроссплатформеность – это
хорошо?OpenGL в наши дни не просто идеально
подходит для разработки игр – на
мобильных платформах это и вовсе
единственный выбор. Хотите поддержки
Android или iOS? Можете забыть о Direct3D. OpenGL –
ваш лучший друг.
Разумеется,
нельзя забывать о том, что на программировании
свет клином не сошелся. Нужны еще средства
подготовки контента. Здесь опять на ум
приходит вопрос «фотошопов» и «3ds
max'ов», но, положа руку на сердце, скажите
– неужели для создания моделей, текстур
и спрайтов вам недостаточно Blender, GIMP,
Inkscape и MyPaint? Photoshop всегда был и остается
инструментом фотографов и специалистов
по печати, а 3ds max – архитекторов и
дизайнеров по интерьерам. Использование
этих дорогих и тяжеловесных «монстров»
для работы с маленькими изображениями
и низкополигональными моделями явно
неоправдано. Выходит, в миграции на
оупенсорс художникам мешает только
консерватизм и сила привычки.
Было бы
несправедливо обойти стороной объективные
недостатки Linux как десктопной игровой
платформы. Если отставить в сторону
всякие мифы, суеверия, психологические
барьеры, тролль-аргументы вроде «1
процента», остается, на мой взгляд, всего
два пункта:
1. Пресловутый
«зоопарк дистрибутивов». Даже в рамках
одного дистрибутива не так-то просто
добиться идеальной совместимости
бинарных релизов со всеми версиями ОС
– что и говорить о десятках (!) разных
операционок... Можно, конечно, нацелиться
только на один популярный дистрибутив
– скажем, на ту же Ubuntu – и говорить, что
все остальное официально не поддерживается.
Но это не в духе Linux, за такое пользователи
вас добрым словом не помянут. Если ваша
игра распространяется по свободной
лицензии, можно посылать всех самостоятельно
компилировать ее из исходников. Есть и
третий вариант – как мне кажется,
наиболее вменяемый: официально выпускать
один универсальный бинарный релиз,
собранный для старой версии Glibc (скажем,
2.7) и имеющий минимум зависимостей, а
индивидуальные пакеты для всех популярных
дистров поддерживать на базе сообщества.
Так делают, например, разработчики
Blender. И на протяжении 10 лет у них это
успешно получается.
2. Ситуация с
видеодрайверами. Производители видеокарт
все еще ориентируются, в основном, на
Windows. Драйверы для всего остального
обычно запаздывают с выходом и уступают
по качеству. Но поддержка Linuх не так
плоха, как могла бы быть. Если у вас
видеокарта от NVIDIA или Intel, можно радоваться,
но ситуация с AMD значительно хуже...
Как видите, оба
пункта отнюдь не смертельны и для
большинства линуксоидов совершенно не
критичны. Думаю, излишне упоминать о
стабильности, надежности и безопасности Linux-систем,
и в качестве хост-системы для различных
разработок и экспериментов они не имеют
равных.