Пользователь
0,0
рейтинг
26 мая 2013 в 13:23

Разработка → Поддержка The Neverhood добавлена в ScummVM



Несколько дней назад, 15 мая, в ScummVM, известный кроссплатформенный набор игровых движков для point-and-click adventure, была добавлена ветка кода с движком, который поддерживает классику квестового жанра, игру The Neverhood.

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



Стоит заметить, что добавление игры в ScummVM, это совсем не простая задача. На сегодня примерно для половины движков нам удалось получить исходники от авторов, но даже в этих случаях код всегда нужно переписывать. Так, в последнее время в проект поступает довольно много игр, написанных изначально на Паскале и Ассемблере, и чтобы их добавить, всё нужно транслировать в С++. Другая же половина движков получилась путём хардкорного реверс инжиниринга (по-другому и не скажешь), когда на вооружение берётся IDA, и мы потихоньку начинаем размечать оригинальный движок названиями функций, переменными и комментариями, слой за слоем разбираясь в логике его работы.

Именно второй подход и был вынужденно использован с The Neverhood. Попытки связаться с авторами особо не увенчались успехом, руки чесались, и в июне 2011 года проекту был дан старт.

Хроники проекта



Исходные данные:
* 800 кб бинарного кода
* Оригинал на С++
* 7,2 тысячи функций
* 340 виртуальных классов

Через два года работы двух человек получен результат:

* 36 тысяч строк кода
* 2 тысячи методов
* 320 классов

Первый коммит был прост:

    Author: johndoe
    Date:   Wed Jun 22 22:58:51 2011 +0000

    NEVERHOOD: First code with basic detection, nothing else so far


Этот скелет по сути стандартен, и разработка каждого движка обычно с него и начинается. О, сколько попыток отреверсить игру для ScummVM на этом и заканчивалось! Но не в этот раз, не в этот раз. Уже через два дня был написан код для доступа внутрь BLB архивов, а спустя ещё два дня декодируется графика и начата работа над Module1500, вступлением к игре.

Нас не остановило то, что игра является хардкодом. БОльшая часть движков для приключенческих игр, поддерживаемых ScummVM, являют собой виртуальные машины (об этом можно писать отдельный пост), и их структура является не слишком сложной. Иногда же оригинальные разработчики пишут скрипты игры прямо на языке программирования, что увеличивает объём и сложность работы по реверсингу в десятки раз. Особо сложной является работа с C++. Компиляторы этого языка часто используют продвинутые оптимизации, также виртуальные классы трансилруются в ассемблер как неявные вызовы, что доставляет ещё больше головной боли. Также не упрощает работу тот факт, что IDA и Hex-Rays ещё не умеют толком работать с плюсами и приходится использовать много костылей.

Тем не менее, 4 июля заработала начальная заставка игры. Хотя она из себя представляет набор роликов в формате Smacker, однако даже для этого было необходимо реализовать систему сообщений, обновление экрана, обработку клавиатуры, затемнение палитры, переход между сценами, в общем, написать почти 3 тысячи строк кода. Через неделю была закончена первая сцена, и начата работа над второй сценой игры, Scene1002.

Далее сцены добавлялись одна за другой, каждую неделю. К слову, их в игре всего 71.

К середине сентября 2011 года, когда примерно половина сцен были реализованы, стартовала работа по рефакторингу. Оригинальный код, как и ожидаемо, содержал довольно много лапши. Стандарты же ScummVM довольно высоки, и для повышения качества кода мы всегда работаем над улучшением структуры, а часто и архитектуры оригинальных движков. Neverhood тут не исключение, были добавлены генераторы объектов, обёртки и многие функции были слиты вместе.

Работа практически не велась с января по июль 2012 года, а в августе были добавлены ещё дюжина сцен и начата работа над звуком. В Neverhood звук закодирован своим, самописным RLE кодировщиком, и требуется одновременное воспроизведение до трёх звуков помимо фоновой музыки. К началу октября, соответствующие вызовы добавлены во все сцены игры, и мы начали внутреннее альфа-тестирование.

После второй волны рефакторинга, когда была выкинута значительная часть дублирующегося кода, и движок сильно «похудел», началась подготовка ветки к слиянию с основным кодом ScummVM. Для этого было необходимо добавить меню, финальные титры, комнату Hall of Fame, а также запись и восстановление состояния игры.

21 января 2013 года, через полтора года разработки, до нас внезапно дошло, что оригинального героя таки зовут Klaymen, а не Klayman, как это было бы логично в соотетствии с грамматикой английского языка, и за этим озарением последовало массовое переимнование переменных и классов в коде.

Ещё немного рефакторинга, исправления багов, и 5 мая 2013 года был сделан Pull Request в основную ветку ScummVM.

Вот она, история проекта.

Коротко о будущем



Работа над движком далеко не завершена. Теперь необходимо убедиться, что игра работает на всех поддерживаемых платформах, в частности, на big-endian ARM.

Также пока, к сожалению, русские версии игры не поддерживаются, так как наши переводчики, как это часто бывает, слегка поменяли форматы там и сям, и движок в ScummVM падает после начальной заставки. Мы как раз сейчас над этим работаем. Возможно, что мы поработаем и над добавлением поддержки PSX версии игры.

Необходимо ещё сделать некоторую работу по рефакторингу, в частности, убрать глобальные конструкторы, которые суть зло. И, наконец, объявить о публичном бетта-тестировании.

Ссылки:
Сайт проекта ScummVM, для того, чтобы запустить The Neverhood, нужен daily build версии 1.7.0
Исходный код движка

Как запустить игру


Игру нужно скопировать с оригинального диска, нажать в ScummVM кнопку Add Game, указать путь, куда скопирована игра, и далее игра появится в списке (пока работает только английская версия и демо). Далее, двойной щелчок по названию игры, игра запустится.

Демо можно скачать отсюда. Купить полную игру можно на eBay, Amazon, также ещё попадаются на полках наших магазинов русификации.
@sev
карма
46,2
рейтинг 0,0

Похожие публикации

Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (92)

  • +4
    Отличная игра юности, спасибо большое.
  • +12
    Кстати, создатели Neverhood собираются сделать её духовного наследника.

    • +16
      Ну да. Именно что духовного, т. к. сиквел Neverhood автор сделать не может, ибо у него нет на это прав! (Кто-нибудь еще сомневается, что копирайт — зло?)
      • +3
        У автора нет авторских прав… Прекрасненько… Вот для чего, оказывается, нужно авторское право!
        • +2
          Авторские скорее всего есть. Нет имущественных, ибо он их в своё время продал издателю.
          • +5
            Конкретно речь идет об отсутствии права на сюжет и персонажей, т. е. не о том, что автор уступил права на распространение той своей работы, за которую он получил деньги, а что он лишился таким образом права создать новую работу в той же авторской «вселенной», продолжить свой же творческий замысел! Что является более чем наглядной демонстрацией того, как копирайт «стимулирует свободу творчества».
            • 0
              Вот только вы забыли упомянуть, что автор добровольно расстался с этими правами, получив за это хрустящих зеленых бумажек.
              И менно на эти бумажки и было создано творчество.
              Так что на самом деле как раз копирайт и стимулирует.
              • +2
                Еще раз перечитайте.

                Речь не об имущественных правах на уже созданное, а об ограничении авторского творчества на основании того, что находится фактически в его голове.

                На х*й любой копирайт, если он смеет указывать творцу, что творить (не плагиатить, не пиратить, а творить!) разрешено, а что запрещено.
                • –4
                  > а об ограничении авторского творчества на основании того, что находится фактически в его голове.
                  Автор сам себя ограничил, продав права. Без воли автора такие права у него отобрать не могут.

                  > На х*й любой копирайт, если он смеет указывать
                  Пыщ пыщ! Ололо! Буря эмоций!

                  Причина проста: произведение прибыльное, и правообладатель не хочет, чтобы наживались на нем. В том числе и автор (бывший правообладатель, продавший права, который может испортить текущее произведение следующим, менее качественным, либо сильно отличающимся).

                  И для закрепления: ограничивает автора не правообладатель. Автор сам себя ограничил, продав права. Без воли автора такие права у него отобрать не могут.

                  И автор мог себе выбить другие условия, не ограничивающие его на создание новых произведений. Некоторые так и делают (вспомним Fallout). А остальные просто не захотели себе таких прав ради большей суммы. Которую получили.
                  • +3
                    > Автор сам себя ограничил, продав права. Без воли автора такие права у него отобрать не могут.

                    Ограничивает авторов система, допуская возможность отчуждения таких прав. Система, допускающая рабство, будь то физическое или творческое, должна быть уничтожена.
                    • 0
                      Осталось убедить в этом авторов, которые хотят продать свои миры, героев и т.д. чтобы заработать себе на жизнь.
                      Предлагаю вам спонсировать их.
                      • +2
                        > Предлагаю вам спонсировать их.
                        Что, собственно, с завтрашнего дня и можно будет сделать.

                        Кстати, а почему никто не запостил объяснение самого автора?
                        «Я уже объяснял ситуацию с правами ранее, но сделаю это еще раз. Права на интеллектуальную собственность отличаются от прав, скажем, на владение и распоряжение вашим диваном. Как только вы его покупаете и привозите домой, я не могу зайти к вам, сфотографировать его и потом продавать фотки за деньги. Это ваш диван. В прошлом нам понадобился миллион с чем–то долларов, чтобы создать первую игру. Издатели согласились выделить такие деньги, но взамен потребовали переписать персонажей на них. Так вышло с героями Neverhood и Earth Worm Jim, так что я не могу распоряжаться этими героями или придуманным миром. Такова была цена создания первой игры.

                        Dreamworks Interactive заплатила за создание персонажей Neverhood и теперь владеет ими, хотя у меня остались права на бренд Neverhood, я не могу создавать игры под этим брендом. Потом EA купила Dreamworks Interactive. Мы многие годы пытались договориться с EA, но каждый раз переговоры заканчивались ничем просто потому, что в EA не придавали значения потенциалу Neverhood и огромной фан–базе игроков. Но это не моя проблема.

                        Если я малейшим образом задействую Клеймена, Оттоборга или любого другого персонажа из Neverhood в своем новом творении, я безусловно использую „диван“ EA без их ведома и разрешения. Они на полных правах могут потребовать прекращения разработки и продажи им всех наработок, так или иначе касающихся их интеллектуальной собственности. Будет даже глупо пытаться это проверить.

                        Хотелось бы отметить, что EA не так уж плохо охраняют свою собственность, и они не были бы против, если бы я портировал на iPhone оригинальную игру или использовал персонажей Neverhood в их коммуникации. Но я продал им свой „диван“, когда передал права на персонажей Dreamworks Interactive. Была бы моя воля — я бы сделал 800 новых неверхудов и 800 новых червяков джимов, но я не вправе делать этого. Так что намного проще и веселее создать что–то новое!»
                        • 0
                          > Издатели согласились выделить такие деньги, но взамен потребовали переписать персонажей на них. Так вышло с героями Neverhood и Earth Worm Jim, так что я не могу распоряжаться этими героями или придуманным миром. Такова была цена создания первой игры

                          Вот и все объяснение. Авторы могли не переделывать персонажей и оставить все права на них себе. Однако они не захотели вложить свои средства, а решили пользоваться деньгами инвесторов.

                          Нечестно говорить, что у них не было такого выбора, и что издатель насильно отобрал права.
                          • +3
                            > Однако они не захотели вложить свои средства

                            Или нужных средств у них попросту не было.
      • 0
        Как я его понимаю! Что то похожее у нас с Вангерами… портировали, а выпустить не можем. :(
  • +8
    Титаническая работа! Мое уважение и благодарность не имеют границ!
  • +3
    Спасибо =) Одна из первых моих игр.
    Не верь в худо!
    • +14
      Один из самых ужасных «переводов» названия.
      • –3
        Не снобируй и не снобируй будем.
      • НЛО прилетело и опубликовало эту надпись здесь
        • +2
          так лучше
          image
        • 0
          Небывальщина. Интернет подсказывает, что это в версии перевода фаргус.
          Но я играл только в переводу «Дядюшки Ричёса»
          • +5
            Прошу прощения за такое количество занудства в одном посте, но всё же Рисёч, а не Ричёс %)
            • 0
              Да, верно. Я опечатался
            • 0
              Можно даже больше
              Как делалась «НеВерьВХудо»
              habrahabr.ru/post/60682/
      • +7
        Вы хотели сказать «один из самых удачных переводов названия»?;)
    • 0
      Интересно, можно ли будет когда-нибудь использовать ресурсы именно из этого варианта переводов…
      • +2
        В смысле? Можно ли будет запускать под ScummVM? Безусловно! Мы над этим как раз сейчас работаем.
        • +2
          Именно перевод от «Дядюшки Рисёча»? Было бы здорово :)
        • 0
          А вот скажите пожалуйста, а не используются-ли в новом скууме, в котором Newerhood, OpenGL функции SDL? А то если используются, обидно будет, не смогу поиграть под OS/2.
          • 0
            Нет, конечно, не используется, и не может использоваться, только вызовы нашей переносимой библиотеки OSystem.

            Но вот будет ли билд ScummVM под OS/2, у меня уверенности нет, так как человек, который их раньше делал, уже два релиза как потерял интерес к проекту.
            • 0
              Paul Smedley? Ну что-ж. Ёж птица гордая, пока не пнёшь не полетит. Пошёл пинать ;)
              • 0
                Он самый. Если удастся пнуть, будет замечательно!
  • 0
    Отлично!!! Одна из любимых игр. Спасибо.
  • +3
    Поражает описанный вами объём работ, который энтузиасты проделывают без всяких внешних стимулов. Только из-за удовольствия от самого процесса, очевидно.

    Кстати, а почему на сайте проекта нет новости про Neverhood?
    • 0
      И ещё вопрос, почему в списке совместимости нет ни одной игры с рейтингом 100%?
      • +3
        Идеал недостижим, они просто честные.
      • +3
        Потому что не хватает времени переделать систему рейтинга. Совместимость 98%, это perfect для игр, для которых есть исходный код, 95% для тех, где делался обратный инжиниринг.
    • 0
      Объявление делется, когда игра готова к публичному тестированию. Пока работа над движком не закончена.
      • +7
        Шикарный проект у вас. Раньше слышал, но только сейчас ознакомился подробнее. Поражён.
        Пожертвовал денег — извините, что немного, у самого финансовые проблемы. Желаю успехов и новых интересных проектов!
        • +3
          Спасибо, и спасибо за пожертвование. Мы их используем в основном чтобы покупать игры для разработки, лицензии на IDA и оплачиваем хостинг.
    • +4
      Тут не только удовольствие от процесса. Проекты подобные этому сохраняют игровое наследие. Следят за тем чтобы классика игровой индустрии не исчезала.
      • +2
        Очень верно сказано!
  • +1
    Почему нельзя сразу создавать игры и приложения для кроссплатформенной VM. Вот была бы быстрая VM со своим App Store. Создал приложение и оно доступно на любой ОС.
    • +2
      На самом деле мы работаем над поддержкой движка Wintermute, для которого есть инструменты для создания игр, и есть коммерческие проекты, также стартовала, но заморожена работа над Adventure Game Studio (AGS), на котором энтузиасты и коммерческие компании создали несколько сотен игр.

      Так что ваше предложение не за горами.
      • 0
        А почему бы не использовать в качестве кроссплатформенной виртуальной машины что-нибудь готовое с JIT, к примеру .NET/Mono/Xamarin?
        • +3
          Ну, во-первых, основная цель проекта — поддержка старых игр. А про point and click adventures на Java я не слышал. Во-вторых, проблемы с переносимостью. К примеру, платформа Java будет несколько великовата для той же NDS, где доступно всего 4 мегабайта ОЗУ.
          • +2
            А вообще, да. C++ везде поддерживается и гораздо быстрее.
        • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Было бы замечательно если бы AGS развивался. В настоящее время это хорошее подспорье для «возродителей». Большинство если не все игры издаваемые Wadjet Eye Games сделанны именно на АGS, и надо сказать коммерчески успешны. Им далеко до многомиллионных тиражей, но свою нишу они прочно заняли. По крайней мере я на это надеюсь.

        Спасибо за статью и за тот глоток воздуха который она дает уже знакомыми именами, не говоря уже о сути написанного.
  • +2
    Интересно, а возможно ли перенести на scummvm тот самый Prince of Persia? Код ведь уже более года назад нашли, а эмулятор ещё никто не написал (либо я не нашёл).
    За работу огромное спасибо. В своё время не встретил эту игру, возможно теперь поиграю.
    • +1
      А разве он под SCUMM?
      • +5
        А разве ScummVM поддерживает исключительно SCUMM? :)
    • +2
      Потому что это не point and click adventure. Технических препятствий нет, более того, есть проект scummvm-misc, в который попадают не-приключенческие движки.
    • +4
      Зачем эмулировать работу оригинала, если он был один к одному портирован на многие платформы?
  • +24
    При упоминании… не самых распространённых технологий/программ, в данном случае — ScummVM, следует приводить небольшой абзац с их описанием.

    Пишу здесь, а не в личку, так как это регулярная ошибка авторов на хабре.
    • +11
      Зря минусуете человека — он все верно говорит. Добавить абзац из вики не так уж трудно, зато может привлечь тех кто еще не слышал о ScummVM.
      Вы же эту новость пишете не для себя или для тех кто и так знает обо всех новостях про ScummVM, правильно?
      • +9
        Похоже мне следует подробнее раскрыть своё мнение.

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

        Отлично, если понимание происходит на этапе чтения заголовка (думаю именно для этого их и изобрели). Но впихнуть туда всю информацию о теме не всегда получается — место всё-таки ограничено, да и раздутый заголовок своёй объёмностью раздражает всё тот же мозг.

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

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

        И даже если читатель, наконец напрягая все извилины и задействуя всевозможные методы дедукции, индукции и прочих *ций, наконец осознаёт, о чём идёт речь, вполне возможно, что он к тому моменту уже настолько зол, что постарается эту злость как-нибудь выплеснуть, в зависимости от того, как он эту информацию воспринимал: закрыв статью в интернете, порвав отбросив книгу, грубо заткнув другого человека, который медленно и невнятно пытался что-то донести…

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

        А ведь, спросите себя, автор этой, и авторы прочих статей, так ли вами, при написании, движет ли безкорыстное желание донести информацию до широкой/узкой (нужное подчеркнуть) аудитории? И вам совсем плевать на отношение к вам, на восприятие, вы пишите сухим справочным языком, который отпугнёт 90% потенциальных читателей и вам на это плевать?

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

        Если вы ответили на последние вопросы «да» хотя бы раз, сделайте свою статью перед публикацией чуточку сильно лучше простым действием. Переместитесь в начало, закройте глаза, выдохните, представьте, что вы человек абсолютно незнакомый с тематикой и попытайтесь взглянуть на текст его глазами. Как скоро он поймёт о чём идёт речь?

        В заголовке? В первом предложении? В первом абзаце? Если на все три вопроса отвечаете «нет» — знайте, у вашего текста серьёзная восприяционная проблема.
        • +1
          Вы все говорите очень верно. Правда в виду очень большой и разношерстной аудитории на Хабре, одни читают публикации, другие проходят мимо, третьи просят сделать их короче и абстрактно, а четвертые любят прикладной материал и им нужен подробный разбор полетов. Удовлетворить всех? Понятное дело — утопия, невозможно в принципе.

          Также существует понятие Хабов. Неких баров где находятся самые разные байкеры. В Хабах посвященных коду, каким-то специфическим и непонятным для меня дисциплинам я не появляюсь. И не потому, что байкеры сделают из меня котлету, но потому, что это не моя специализация. А мой практичный мозг, согласно внутренней политике моего сознания, отметает все несущественное. Этот хаб посвящен гейм-девелопменту, приходящие сюда более или менее знают о чем речь. И когда я делаю статью о быстром создании тайловых текстур я не объясняю вначале что такое текстура, и что такое тайл. Потому, что статья находится не только в хабе Game Development но и в хабе Обработка изображений. В общем и целом понятие Хаб, да еще с припиской «тематический» уже во многом определяет тематику раздела. Термин — ScummVM — сам по себе визитная карточка. И я не думаю, что логично в каждую статью о ScummVM пихать исторические справки и выдержки из википедии. Таким образом можно добраться до того что в каждой публикации посвященной игре — стоит привести выкладки о том, что же собственно из себя представляет игра.

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

          Рассуждения о корысти вообще не особо уместны. В действиях большинства людей всегда прослеживаются и мотивы, и корысть. И ничего дурного в этом нет. Не в корысти, ни в преследовании своих собственных мотивов. Они не могут быть использованы как укоризненный аргумент, и как иллюстрация чего-то плохого. Первооткрыватели, ученые, музыканты, писатели и много кто еще — далеко не всегда думают только лишь о предмете своего творчества, и далеко не всегда их помыслы и действия чисты с точки зрения человеческой морали. Иными словами Иисусов среди них мало.
          • +6
            одни читают публикации, другие проходят мимо
            И?

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

            Также существует понятие Хабов.
            Сабжевая статья в хабах «История ИТ» и «Game Development». Увы, это не помогло мне понять, что такое ScummVM.

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

            И я не думаю, что логично в каждую статью о ScummVM пихать исторические справки и выдержки из википедии.
            Это необязательно и иногда даже вредно. Вполне достаточно сабжевую статью изменить как:

            Несколько дней назад, 15 мая, в ScummVM, известный кроссплатформенный набор альтернативных игровых движков, был добавлен код движка <вставить бы название>, поддерживающего классику квестового жанра, игру The Neverhood.

            Всё. Тема раскрыта и мозг получил свою информацию с первых строк.

            Термин — ScummVM — сам по себе визитная карточка.
            Таким образом можно добраться до того что в каждой публикации посвященной игре — стоит привести выкладки о том, что же собственно из себя представляет игра.
            Вы не поверите, но практически всегда так оно и бывает! Это незаметно, если об этом специально не задумываться. Да, не буквально выкладки, но отдельные слова-описания присутствуют повсеместно, в практически любой статье/новости/etc. Например где-то упоминается Doom. Даже не заставший игр из 90-ых читатель поймёт что это такое, т.к. скорее всего перед названием будет присутствовать слово «шутер» или его синоним. Или даже «культовый шутер» — представление станет ещё более ясным. В сабжевой же статье (по крайней мере в первой половине) ни одного описания не присутствует.

            В силу разношерстности читающих статьи — всегда есть те кому не нравится длинна статьи, стиль, юмор рассказчика, качество иллюстраций и бог знает что еще.
            Если у недовольных есть объективные/обоснованные доводы, что не так, — их следует выслушать и, возможно, принять во внимание.

            И ничего дурного в этом нет.
            А я обратного вроде как и не утверждал.
            • +1
              Несколько дней назад, 15 мая, в ScummVM, известный кроссплатформенный набор альтернативных игровых движков, был добавлен код движка <вставить бы название>, поддерживающего классику квестового жанра, игру The Neverhood.

              Резонно. Такое не мешает и поможет.

              Если у недовольных есть объективные/обоснованные доводы, что не так, — их следует выслушать и, возможно, принять во внимание.

              Я обычно сопровождаю статью сколько могу. Поэтому четко знаю, что если я публикую статью, то мне еще один день придется ей отдать. А то и два. Это «сопровождение» статьи. Т.к. ее нельзя бросать. Поэтому пишу не очень часто.

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

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

              А я обратного вроде как и не утверждал.

              В таком случае я вас не верно понял
              «поднес пальцы к полям шляпы»
            • +2
              Благодарю за совет, вступление к статье подправил.
        • +2
          Уже давно в научном мире придумано — перед основным текстом статьи идёт абстракт, то есть краткое описание того о чём статья на понятном для всех языке без специфических терминов и ссылок куда либо (за редким исключением). Хорошо бы и на хабре такое.
  • 0
    А под android версия 1.7 не скоро будет?
    • 0
      Daily builds есть уже, но их ставить нужно будет руками. Верси 1.7 будет выпущена примерно через полгода.
  • –3
    Зашёл на сайт, чтобы скачать daily build для windows.
    А он — внезапно! — в .tar.bz2

    Есть ли возможность во что-то более удобное складывать виндовые билды?
    • +1
      Билд машина под Линуксом, а средства для построения .exe установщиков чисто виндовые. Можно, конечно, сделать zip. А что, .tar.bz2 под Виндовс проблема?
      • –6
        Ну, не знаю.
        У меня есть тотал коммандер — он не умеет (даже плагина на оффсайте нету).

        Я, конечно, из-под Цигвина его разобрал, но вдруг не только я буду скачивать дев-билды?
        • +1
          Хорошо, сделаем. Однако за семь лет существования билд-машины такой вопрос не возникал. Может люди просто молча мучились :)
        • +3
          7-zip нормально открывает.
          • –3
            Не знал. Я, в связи с наличием тотала, 7-zip не использую.
            • +2
              «не знаю, я футболом не интересуюсь...» ;)
        • 0
          [deleted]
      • +6
        zip — хорошее решение.

        В одной замечательной книге есть несолько абзацев об архивах. Вкратце: если вы планируете распространять архивы, которые будут доступны пользователям разных ОС, пакуйте в zip. Есть по умолчанию во всех распространенных системах и не вызывает каких-либо затруднений.

        Линуксоида привлечёт tar.bz2, зато rar повергнет во фрустрацию. Пользователя Windows — с точностью до наоборот.
        • +5
          Но берегитесь русских имен файлов внутри.
      • 0
        NSIS вроде бы умеет собирать Windows-установочники из-под Linux.
  • 0
    Когда-то давно хотел поиграть, но как-то не сложилось. Может теперь когда будет рабочаа версия под Linux поиграю :)

    Вопрос к автору: ваш проект ни как не связан с этим портом?
    • 0
      Нет, не связан. Мы держали автора этого проекта в курсе, но у него не было времени объединить усилия.
  • +3
    Блиин! Там есть «Три черепа»! Сто лет назад пытался пройти — висла постоянно на одном и том же месте!
    Я просто должен ее теперь пройти!
  • –2
    Билд 1.7.0 поставил, а где найти саму игру?
    Киньте ссылочку?
    • +12
      ScummVM не поддерживает пиратство. Именно из-за этой стойкой позиции (которая многим не нравится по понятным причинам), мы спим спокойно и уважаемы в глазах оригинальных разработчиков, которые нам доверяют исходные коды своих игр.

      Гугл сразу выдал ссылку на Amazon: www.amazon.com/The-Neverhood-Pc/dp/B00004RKER

      Может быть мы сможем поспособствовать тому, чтобы игра стала продаваться за пару долларова на Good Old Games или DotEmu.
      • +2
        Да, неплохо было бы, если бы она на GOG'е появилась. Игра хорошая, вполне прилично смотрится даже сегодня.
        Выкапывать на аукционах оригинальные диски 20-летней давности – занятие увлекательное, конечно, но ни разработчикам, ни вам вся эта спекуляция пользы не приносит, скорее всего.
        А так бы и люди купить могли без танцев с бубном, и в целом все в плюсе.

        И конечно, спасибо за проект. Столько шедевров буквально реанимировали, больше того, сдаётся мне, ремейки «Сломанного меча», например, тоже вышли с вашей подачи – когда Revolution увидели интерес к их не потерявшей со временем увлекательности игре.
  • –2
    Опишите как поставить игру и где ее взять
    • +3
      Игру нужно скопировать с оригинального диска, нажать в ScummVM кнопку Add Game, указать путь, куда скопирована игра, и далее игра появится в списке (пока работает только английская версия и демо). Далее, двойной щелчок по названию игры, которое появится в списке.
  • +5
    Спасибо за новость и огромное спасибо за ScummVM!
  • +2
    То есть Вы переписали игру с C++ на интерпретатор ScummVM, и используете из оригинальной игры только ресурсы, я верно понял? Причем переписали после реверсинга всех фунций и code path, а не просто воссоздав «примерно такое же поведение»?
    • +4
      В принципе верно. ScummVM — не интерпретатор, а платформа, фреймворк для разработки мультиплатформенных двумерных игр. Та часть, которую используют все движки, называется OSystem. Следовательно, мы отреверсили весь движок, но вызовы графики, звука, устройств ввода перевели на вызовы OSystem. И да, это не эмуляция, не симуляция, а именно переписанный оригинальный код. Правда, если мы находим баги в оригинале, мы их обычно чиним.
  • +2
    Тем не менне, 4 июля заработала начальная заставка игры. Хотя она из себя представляет набор роликов в формате Smacker, однако даже для этого было необходимо реализовать систему сообщений, обновление экрана, обработку клавиатуры, затемнение палитры, переход между сценами, в общем, написать почти 3 тысячи строк кода.


    Как это мне напомнило когда мы портировали Ванргеров… хотя там у нас исходники были но то же не айс (безумная лапша на асемблере, DX5 и прочим)
  • +3
    А это позволяет автоматизировать шлепание по коридору? ;)
  • +2
    Большое спасибо за проделанную работу. Ещё раз, на этот раз весьма удобно, прошёл игру детства на смартфоне, до этого играл в версию для PS. Кстати, при соотношении сторон 16:9 игра смотрится отлично. Думаю у многих в эти дни появились подобные записи рядом с местом играния
    image
    И если 3-1-2-0-4 где-то выжглись в мозгу, а количество туборгов, моржей и кнопок(для управления краном выпали эти значки) можно запомнить, как и придумать какие-то аналогии со значками управления пушкой (косточка, рокета, слэш) или объемы бутылей(половина, полтора, два), то для игры в пары, ввода последовательности символов и, конечно же, всеми любимой мышки пришлось пописать.
    В очередной раз хотел засунуть все диски за раз, но из-за вылетов в результате пропустил один.
    Ещё раз спасибо.
    • 0
      А что за вылеты?
      • 0
        Клиент для win x64 падал, когда в демке я пытался дергать за колечки, которые не открывают дверь.
        Клиент на андроид падал когда я вводил второй код для пушки

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

        Потом, когда я пытался нажимать на кнопку проигрывания, он не зависал, но был только звук, а картинка не показывалась. На пластилине, кассеты перемигивались и ключ выпал.

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