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
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 6 comments