Alex Dragon (alex_dragon) wrote,
Alex Dragon
alex_dragon

Categories:

Редкое игрушечное: «Seven Years War» (1998) на Linux'е

Сегодня редкий пост — про игрушку (или скорее про её запуск в определённой среде). Сам я играюсь мало в том смысле, что не геймер, за новинками не гонюсь, и лет двадцать уже если играю, то примерно в один и тот же набор игр, типа Дюк Нукема, Шэдоу Ворриера и Комманд-Конкьюра. Даже в Контру не играю — я мышкой в стрелялки не умею, в Вольфенштайн ещё досовский я на клаве играть начинал, в Дюка тоже на клаве придрочился и мышу так и не освоил, поэтому в прочие подобные игрушки просто по физическим кондициям не тяну — не те рефлексы.

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

Хотя, надо сказать, во время оно собрал всю коллекцию Mechwarrior'а 2. И доложу вам, что большего погружения, чем в Наёмниках, не было и нету. Ну разве что в первом Мехваре затягивало — но там графика совсем детская, EGA'шная, но зато торговля, карта, вот это всё — после ничего подобного не было, чем дальше, тем с сюжетом было всё хуже и хуже. Но зато боевуха во втором, конструирование мехов, в том числе родимые пятна в виде глюков, позволявшие загрузить в мех больше оружия, чем по номиналу — но с последствием в виде перегрева и падения скорости, которые, в отличие от неправильной загрузки, рассчитываются вполне правильно — это вот всё могут оценить только тонкие ценители. Два Arrow IV и стрельба по целям за горизонт — это ни с каким банальным читерством не сравнится. Тут свой особый азарт — поразить цель до того, как она приблизится, потому как такая перегруженная машина в ближнем бою имеет все шансы тупо выключится от перегрева при интенсивной стрельбе лазерами — а то и просто взорваться как перегретый котёл на пароходе, да и лазеров много не навесишь — свободных слотов тупо нету. Самый цимес был тут трофейные клановские навешать — они гораздо легче родных и меньше места занимали, что резко повышало боевые возможности.

Впрчоем, это в сторону от темы. А так, да, даже и старые страсти иной раз заводят далеко и занимают кучу времени, давая забавные результаты.

Баловство и глупости — двигатель прогресса. Есть такая древняя игрушка 1998 года — «Seven Years War», стратегия типа WarCraft. Причём это не европейская, а корейская семилетняя война, 16 или 17 что ли века, подразумевается. И сама игрушка от неких корейских разработчиков HQ Team. Некогда входила во многие сборники типа «1000 игр на CD» — в архиве метров восемь-десять занимает, правда в покоцанном виде, типа портабельная, никогда не видел родного варианта со всеми видеороликами, музыкой, инсталлятором и прочими обёртками и бонусами, и в сети оригинального образа не попадалось. А в голом виде лёгкая и забавная, идёт чуть ли не на 486-й. Конечно, культовой и эпохальной назвать её тяжело, но вот почему-то многим она запомнилась, хотя это и клонированный клон клона. Видимо из-за забавной «аутентичной» графики и смешных анахроничных юнитов — типа самолётов-дирижаблей на мускульном приводе и деревянных БМП.

Но то ли потому что по рукам ходит криво крякнутая версия, то ли потому что сама программа кривая, то ли потому что на 95-винду расчитана, но она всегда была глюковатой — и под 98-й время от времени почему-то вываливалась, под XP играть вообще было почти невозможно — всё время падала, под семёркой вроде идёт, но с сильными глюками графики. Самым стабильным вариантом неожиданно оказался вариант запускать из линукса wine'ом. Тоже не без приколов — не советую во время игры переключаться в другие приложения по контрол-табу, она чего-то из полноэкранного режима с трудом выходит, фризится, а в окне не знаю даже запускается ли, при этом она не держит разрешения выше 1024×768, а по дефолту вообще 640×480, поэтому в случае обвала есть риск остаться с рабочим столом 640×480 и писать кипятком, пытаясь хоть куда-то достать мышкой в попытке переключить обратно разрешение. Но в общем, если не дёргать, идёт гораздо, гораздо лучше, чем под виндой, небо и земля.

Но, в какой-то момент вдруг всплыла известная проблема — «квадратики вместо букв», старая болячка Вайна. Причём непонятно почему — вроде же работало. Из-за этого пришлось копаться с настройками Вайна — до того я туда и не лазил особо, мутно это и муторно. Так бы хрен полез. Как говорится, узнал много нового, типа про префиксы и всё такое. Но вот с локалью оказалось довольно забавно. У меня в системе локаль смешанная:


LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=uk_UA.UTF-8
LC_TIME=ru_UA.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=uk_UA.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=uk_UA.UTF-8
LC_NAME=uk_UA.UTF-8
LC_ADDRESS=uk_UA.UTF-8
LC_TELEPHONE=uk_UA.UTF-8
LC_MEASUREMENT=uk_UA.UTF-8
LC_IDENTIFICATION=uk_UA.UTF-8
LC_ALL=


Ставил изначально английскую версию убунты, потому что сталкивался с приколами раньше в других дистрах, что выставляешь русский — и вот не знаю, что за логика у сборщиков и разработчиков софта, чем они думают — но они почему-то понимают локализацию буквально, прям как в винде, ВСЁ должно быть «русским» и гвоздями прибито, система таки становится «русской» — вплоть до того что невозможно переключиться на английскую раскладку за отсутствием таковой. Зато в именах файлов кракозябры, особенно когда пытаешься на виндовом разделе чё-то посмотреть. Короче, во избежание и чтобы не проверять дошло ли до дистростроителей за двадцать с гаком лет очевидное, сперва ставлю английский вариант — тогда всё красиво и корректно, в том числе русские имена файлов на виндовых дисках. Ну там на всякий случай, ради часового пояса в основном, выбрал ещё украинские какие-то установки — и пожалел, потому что получается смесь французского с нижегородским. Короче, всё это напильником потом приходится допиливать.

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

И вот из-за шрифта я начал ковыряться с локалью. Поскольку игра, хотя имеет вроде как английскую локализацию — то есть все диалоги и сообщения на английском, но под русской виндой вполне нормально в этом отношении шла, то логично предположить, что в вайне, запущенном с русской локалью, она тоже должна нормально работать. Правда, оказалось, что самому вайну сказать с какой локалью запускаться — вещь не очень очевидная, он по дефолту подхватывает системную локаль и никак иначе. Вот таких умников терпеть не могу — всё у них гвоздями должно быть прибито, они априори считают себя умнее пользователя и лучше него знают, что ему надо. Лоигчно же было бы прописывать где-то в конфиге, особенно учитывая концепцию префиксов.

Полез искать по инету — ну буржуийском форуме наткнулся примерно на следующее: вайн как такового конфига давно уже не имеет, а все настройки пишутся в имитацию виндового реестра. Поэтому найдите HKEY_CURRENT_USER\Control Panel\International и там пропишите какую надо локализацию. Бинго! Хотя… Ха-ха, ещё бы знать какие там параметры как правильно писать. Но, это-то как раз просто при наличии винды под руками — оттуда тупо копируется нужная ветвь реестра и скармливается вайновскому регедиту (ну или пишется ручками в user.reg). Уф, решение найдено!

Ага. Хрен там. При запуске в вайне локаль всё равно английская. Я начал туда-сюда, думал может не тот префикс запускаю — нифига. Тут всплыла самая интересная вещь: оказывается, вайн подхватывает настройки линуксовой системной локали на лету и переписывает реестр сообразно его представлению о текущей действительности. То есть править реестр совершенно бестолку.

Остаётся только вариант запуска типа с LC_LANG=ru_RU.UTF-8 или LC_ALL=ru_RU.UTF-8. Что в общем-то по-своему логично, но вот только вопрос: а где лучше писать-то? То есть это, получается, надо на каждый экзешник либо свой отдельный скрипт писать, либо какой-то общий враппер, но это танцы всякие вокруг. Неудобно. Проще поставить флаг где-нибудь в конфиге, чем на каждый пук свой скрипт писать. Фигушки, учите bash.

Кстати, какие-то ушлые арабы целую утилиту на GTK запилили, кому любопытно — искать wine-locale_0.2-1_all.deb. Ну потянул ещё пару мег зависимостей непонятно кого и от чего, поставил. Что оказалось она делает: генериует архимудрёный скрипт такого содержания:


#! /bin/bash
LANG=ru_RU wine $@


(ну или любую другую локаль, которую пропишите в диалоге программы).

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

Но самое интересное — то что это не решает проблему на уровне десктопного окружения, то есть чтобы не задумываясь щёлкнуть по ярлыку и получить ожидаемый результат: вайн-то генерирует ярлыки в системное меню ничего не зная ни про какие арабские премудрости. Я пока ничего умнее не придумал, как просто править ярлык, в .desktop прописать что-то вроде

Exec=env LC_ALL=ru_RU.UTF-8 WINEPREFIX="/home/username/.local/share/wineprefixes/WIN98RUS" wine-stable "C:/Program Files/7WARS/SYW.EXE"

И всё это единственно ради того, чтобы создать подобие родного виндового окружения и посмотреть что будет с фонтовым глюком — вдруг выправится? Нет, глюк не ушёл, зато почему-то вдруг заработал эскейп в заставке. Мне это не очень понятно. В lubuntu на флешке у меня тоже американская локаль, но клавиша в игре работает без всяких бубнов. Что за магия?

А проблему с квадратиками в один голос на всех форумах везде советуют решать поставив виндовые шрифты, причём именно в каталог фонтов фейкового вайновского виндовса. Я так сперва и делал — и работало же. Что же изменилось?

Оказалось вот что: я много игрался с фонтами, пробуя то один, то другой, а в линуксе для них множество мест, слишком уж даже много куда можно воткнуть, а с ходу ещё и трудно было понять, где лежат общесистемные фонты, а где сугубо юзерские, при том желательно управлять этим как-то единообразно — разные менеджеры фонтов могут друг друга и не понять и будет каша. А тут ещё своя фонтовая подсистема и у вайна. Короче, бардак полнейиший. И я походу всех этих игр видимо удалил нужный шрифт вообще из системы. Я даже подозревал какой, но обратная установка не помогла — результат тот же, отрицательны, и это сбивало с понталыку.

Кончилось тем, что я по наводке с какого-то буржуйского форума на виндовой машине поставил ProcessMonitor и тупо стал отлавливать какой процесс к каким файлам обращается, какой фонт игрушка запросит. И тут прозрел! Оказалось-то: игрушка хоть и переведена на английский, но она южнокорейская и хочет шрифт с наличием корейских букв! И ежели такого не находит, то она ничего показывать и не хочет, квадратики рисует. Конкретно на семёрке она подгружала Gulim.

А на бубунте у меня судя по всему произошла вот какая история: то не стояло ни одного Ариала, кроме Arial Narrow, то поставил все какие были, Arial Unicode в том числе, поглядел и подумал, что мне столько не надо и решил лишнее прибить — Arial Unicode сам по себе 22 мегабайта весит. Кстати, прикинул сколько фонтов сейчас в системе стоит — там наверное под гигабайт веса, столько раньше сидюки с дистрами не весили. А игрушка именно его хотела, и я видимо перепутал имена файлов — они похожие, думал, что там должен быть Arial Narrow (ARIALN.ttf) и усиленно его пихал во все дыры, а надо было Arial Unicode (ARIALUNI.ttf) ставить. Вот я его поставил — и надписи все в игрушке резко появились, потому что в нём в том числе корейский язык предусмотрен.

Кстати, по ходу ещё всплыло, что вайн системные линуксовые фонты вполне себе сам находит и в свой реестр пишет — там длинная ветвь со списком образуется, так что скорее всего даже если в фейковый C:/Windows/Fonts ничего не класть, то он что-нибудь виндовым софтинам да отдаст.

Между прочим, вот это хороший урок по обращению внимания на мелочи и к сведению, хозяйке на заметку: хотя вроде названия и почти одинаковые, но Ариалы разные бывают, разных версий и статусов и входят в разные наборы софта. При том один и тот же шрифт может идти под разными марками.

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

В частности, Arial Unicode хотя в общем и совпадает по рисунку с обычным системным Arial, но отличается от него по метрике (попросту говоря буквы будут разного размера и замена одного на другой скорее всего приведёт к тому, что вся вёрстка документа поедет, поэтому там, где это важно, нужно следить за тем, чтобы в случае отсутствия оригинального шрифта не произошла подстановка похожего, но другого) и никогда не поставлялся в составе Windows, а шёл в комплекте поставки Microsoft Office. Это было примерно во времена Office 2000, Office 2003. Ну поскольку у нас винды ан-масс известно откуда брались и берутся и точно так же практически автоматом у всех МСО стоял, то многие наверное даже и не подозревали, что Arial Unicode на самом деле не системный шрифт, а многие наверное и не подозревали, что он появился — вместе с Офисом.

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

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

Итого, в сухом остатке:

  1. wine перезаписывает реестр сообразно окружению, поэтому при необходимости в wine локали, отличной от системной, её нужно задавать в явном виде снаружи, а не правкой реестра;
  2. проблемы со шрифтами в wine могут быть и из-за того что даже вроде бы локализованная программа может требовать наличия шрифта с набором символов и на родном языке разработчика, отсутствующим в текущем системном окружении, в частности игра «Seven Years War» (SYW, 7WARS), даже англифицированная версия, требует установки в системе кореизированного шрифта;
  3. необходимо внимательно следить за тем, какие именно шрифты и версии шрифтов установлены в системе.

Ну а на закуску видео с записью этой самой «Семилетней войны» от какого-то иностранного обладателя полной версии, мультики в начале я и сам никогда не видел.


Tags: linux, компьютеры, мысли вслух, полезные советы, поток сознания, хозяйке на заметку
Subscribe

  • (no subject)

    Щас нам расскажут, что это провокация Запада и устроено руками диверсантов одной соседней страны. Дабы опорочить. И ведь будут на полном серьёзе…

  • Лицемерная вечеринка

    Забавно: самым долгоиграющим хитом сезона стала пресловутая «голая вечеринка». Казалось бы: сколько инфоповодов, шумных, нажористых — и о них…

  • Wenn die Soldaten

    Немецкая народная песня. С лёгкой руки кинематографистов стала прочно ассоциироваться с Третьим рейхом, хотя в реальности, вопреки…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 6 comments