Не верь в худо mac os

Обновлено: 06.07.2024


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

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

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

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

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

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

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

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

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

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

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

Далее сцены добавлялись одна за другой, каждую неделю. К слову, их в игре всего 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, также ещё попадаются на полках наших магазинов русификации.

Есть решение! Neverhood — тормозит? Вылетает? Зависает? Ошибки? Черный экран? Не запускается?

Решение проблем в Neverhood — не устанавливается? Не запускается? Тормозит? Вылетает? Лагает? Ошибка? Не загружается?

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

Что сделать в первую очередь

  1. Скачайте и запустите всемирно известный CCleaner (скачать по прямой ссылке) - это программа, которая очистит ваш компьютер от ненужного мусора, в результате чего система станет работать быстрее после первой же перезагрузки;
  2. Обновите все драйверы в системе с помощью программы Driver Updater (скачать по прямой ссылке) - она просканирует ваш компьютер и обновит все драйверы до актуальной версии за 5 минут;
  3. Установите Advanced System Optimizer (скачать по прямой ссылке) и включите в ней игровой режим, который завершит бесполезные фоновые процессы во время запуска игр и повысит производительность в игре.

Системные требования Neverhood

Второе, что стоит сделать при возникновении каких-либо проблем с Neverhood, это свериться с системными требованиями. По-хорошему делать это нужно еще до покупки, чтобы не пожалеть о потраченных деньгах.

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

Системные требования Neverhood

Файлы, драйверы и библиотеки

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

Начать стоит с драйверов для видеокарты. Современные графические карты производятся только двумя крупными компаниями — Nvidia и AMD. Выяснив, продукт какой из них крутит кулерами в системном блоке, отправляемся на официальный сайт и загружаем пакет свежих драйверов:


Обязательным условием для успешного функционирования Neverhood является наличие самых свежих драйверов для всех устройств в системе. Скачайте утилиту Driver Updater, чтобы легко и быстро загрузить последние версии драйверов и установить их одним щелчком мыши:

  • загрузите Driver Updater и запустите программу;
  • произведите сканирование системы (обычно оно занимает не более пяти минут);
  • обновите устаревшие драйверы одним щелчком мыши.


Фоновые процессы всегда влияют на производительность. Вы можете существенно увеличить FPS, очистив ваш ПК от мусорных файлов и включив специальный игровой режим с помощью программы Advanced System Optimizer

  • загрузите Advanced System Optimizer и запустите программу;
  • произведите сканирование системы (обычно оно занимает не более пяти минут);
  • выполните все требуемые действия. Ваша система работает как новая!

Драйверы для Neverhood

Neverhood не скачивается. Долгое скачивание. Решение

Скорость лично вашего интернет-канала не является единственно определяющей скорость загрузки. Если раздающий сервер работает на скорости, скажем, 5 Мб в секунду, то ваши 100 Мб делу не помогут.

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

Neverhood не скачивается

Neverhood не устанавливается. Прекращена установка. Решение

Перед тем, как начать установку Neverhood, нужно еще раз обязательно проверить, какой объем она занимает на диске. Если же проблема с наличием свободного места на диске исключена, то следует провести диагностику диска. Возможно, в нем уже накопилось много «битых» секторов, и он банально неисправен?

В Windows есть стандартные средства проверки состояния HDD- и SSD-накопителей, но лучше всего воспользоваться специализированными программами.

Но нельзя также исключать и вероятность того, что из-за обрыва соединения загрузка прошла неудачно, такое тоже бывает. А если устанавливаете Neverhood с диска, то стоит поглядеть, нет ли на носителе царапин и чужеродных веществ!

Neverhood не запускается. Ошибка при запуске. Решение

Neverhood установилась, но попросту отказывается работать. Как быть?

Выдает ли Neverhood какую-нибудь ошибку после вылета? Если да, то какой у нее текст? Возможно, она не поддерживает вашу видеокарту или какое-то другое оборудование? Или ей не хватает оперативной памяти?

Помните, что разработчики сами заинтересованы в том, чтобы встроить в игры систему описания ошибки при сбое. Им это нужно, чтобы понять, почему их проект не запускается при тестировании.

Обязательно запишите текст ошибки. Если вы не владеете иностранным языком, то обратитесь на официальный форум разработчиков Neverhood. Также будет полезно заглянуть в крупные игровые сообщества и, конечно, в наш FAQ.

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

В Neverhood черный экран, белый экран, цветной экран. Решение

Проблемы с экранами разных цветов можно условно разделить на 2 категории.

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

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

Neverhood вылетает. В определенный или случайный момент. Решение

Играете вы себе, играете и тут — бац! — все гаснет, и вот уже перед вами рабочий стол без какого-либо намека на игру. Почему так происходит? Для решения проблемы стоит попробовать разобраться, какой характер имеет проблема.

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

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

Neverhood зависает. Картинка застывает. Решение

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

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

Проверить загрузку и температуры для видеокарты и процессоров проще всего в программе MSI Afterburner. При желании можно даже выводить эти и многие другие параметры поверх картинки Neverhood.

Какие температуры опасны? Процессоры и видеокарты имеют разные рабочие температуры. У видеокарт они обычно составляют 60-80 градусов по Цельсию. У процессоров немного ниже — 40-70 градусов. Если температура процессора выше, то следует проверить состояние термопасты. Возможно, она уже высохла и требует замены.

Если греется видеокарта, то стоит воспользоваться драйвером или официальной утилитой от производителя. Нужно увеличить количество оборотов кулеров и проверить, снизится ли рабочая температура.

Neverhood тормозит. Низкий FPS. Просадки частоты кадров. Решение

  • Разрешение теней — определяет, насколько детальной будет тень, отбрасываемая объектом. Если в игре динамические тени, то загружает ядро видеокарты, а если используется заранее созданный рендер, то «ест» видеопамять.
  • Мягкие тени — сглаживание неровностей на самих тенях, обычно эта опция дается вместе с динамическими тенями. Вне зависимости от типа теней нагружает видеокарту в реальном времени.


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

Neverhood лагает. Большая задержка при игре. Решение

Многие путают «тормоза» с «лагами», но эти проблемы имеют совершенно разные причины. Neverhood тормозит, когда снижается частота кадров, с которой картинка выводится на монитор, и лагает, когда задержка при обращении к серверу или любому другому хосту слишком высокая.

Именно поэтому «лаги» могут быть только в сетевых играх. Причины разные: плохой сетевой код, физическая удаленность от серверов, загруженность сети, неправильно настроенный роутер, низкая скорость интернет-соединения.

В Neverhood нет звука. Ничего не слышно. Решение

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

Сначала нужно определить масштаб проблемы. Где именно нет звука — только в игре или вообще на компьютере? Если только в игре, то, возможно, это обусловлено тем, что звуковая карта очень старая и не поддерживает DirectX.

Если же звука нет вообще, то дело однозначно в настройке компьютера. Возможно, неправильно установлены драйвера звуковой карты, а может быть звука нет из-за какой-то специфической ошибки нашей любимой ОС Windows.

В Neverhood не работает управление. Neverhood не видит мышь, клавиатуру или геймпад. Решение

Как играть, если невозможно управлять процессом? Проблемы поддержки специфических устройств тут неуместны, ведь речь идет о привычных девайсах — клавиатуре, мыши и контроллере.

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

Таким образом, нужно узнать точную модель устройства и постараться найти именно ее драйвер. Часто с устройствами от известных геймерских брендов идут собственные комплекты ПО, так как стандартный драйвер Windows банально не может обеспечить правильную работу всех функций того или иного устройства.

Если искать драйверы для всех устройств по отдельности не хочется, то можно воспользоваться программой Driver Updater. Она предназначена для автоматического поиска драйверов, так что нужно будет только дождаться результатов сканирования и загрузить нужные драйвера в интерфейсе программы.

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

ZoneAlarm подходит как для личного использования, так и для малого бизнеса, способен защитить компьютер с операционной системой Windows 10, Windows 8, Windows 7, Windows Vista и Windows XP от любых атак: фишинговых, вирусов, вредоносных программ, шпионских программ и других кибер угроз. Новым пользователям предоставляется 30-дневный бесплатный период.

Nod32 — анитивирус от компании ESET, которая была удостоена многих наград за вклад в развитие безопасности. На сайте разработчика доступны версии анивирусных программ как для ПК, так и для мобильных устройств, предоставляется 30-дневная пробная версия. Есть специальные условия для бизнеса.

Neverhood, скачанная с торрента не работает. Решение


Если дистрибутив игры был загружен через торрент, то никаких гарантий работы быть в принципе не может. Торренты и репаки практически никогда не обновляются через официальные приложения и не работают по сети, потому что по ходу взлома хакеры вырезают из игр все сетевые функции, которые часто используются для проверки лицензии.

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

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

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

Neverhood выдает ошибку об отсутствии DLL-файла. Решение

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

Если ваша проблема оказалась более специфической или же способ, изложенный в данной статье, не помог, то вы можете спросить у других пользователей в нашей рубрике «Вопросы и ответы». Они оперативно помогут вам!

Читайте также: