amnesia the dark descent как установить истории

Amnesia: The Dark Descent «Первый пак переводов для других историй,игры Амнезия»

Первый пак переводов для других историй игры Amnesia: The Dark Descent.(примерно 90шт)

Второй будет не скоро,работа над этим идет.

Перевод технический,выполнен с помощью google translate.Такой могу порекомендовать тем у кого со знаниями english все плохо.Остальным тут ловить нечего)))

amnesia the dark descent как установить истории

amnesia the dark descent как установить истории

amnesia the dark descent как установить истории

amnesia the dark descent как установить истории

amnesia the dark descent как установить истории

amnesia the dark descent как установить истории

amnesia the dark descent как установить истории

amnesia the dark descent как установить истории

а линк на сами истории будет?

amnesia the dark descent как установить истории

Все моды ищи на сайте moddb.

Названия в паке всех модов насколько я помню есть.

Обычно если в поисковик вбиваешь название мода,то он сразу тебе выдает этот мод к сайту moddb.

amnesia the dark descent как установить истории

Уважаемый переводчик. просьба переводить в соответствии с самым популярным старым переводом от 1C. Если в переводе написано «трутница», то и вашем пусть так будет. Если в игре «стержень парового цикла», то пусть и у вас так будет. Игроку будет легче погрузиться в атмосферу игры видя знакомые названия предметов

amnesia the dark descent как установить истории

amnesia the dark descent как установить истории

Привет тебе с твоей страницы moddb;)

Все переводы,я делаю бесплатно.Что-то не нравится,не качайте,не играйте и не нойте.Ну или сделайте перевод сами;)

Кстати скоро(1-2 мес.) подготовлю второй пак переводов для этого сайта playground.Там переводы будут получше.На moddb публикую сразу,где это попускают авторы модов ну или разделе addons.

Источник

Лучшие моды для Amnesia: The Dark Descent

Amnesia: The Dark Descent от Frictional Games стала неожиданным хитом, мгновенно захватившим весь игровой мир – все благодаря миллионам людей, которые бросились смотреть, как ужасы игры сносили крышу YouTube-блогерам типа PewDiePie.

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

Поэтому если вы вновь решили поиграть в эту игру, обратите внимание на эти восхитительные моды, которые вновь разожгут ваш тлеющий в глубине души огонек любви к The Dark Descent.

Controller Prompts and Small Improvements

amnesia the dark descent как установить истории

Не все ПК-геймеры пользуются одинаковыми геймпадами. И те из нас, кто по каким-то причинам предпочитает контроллеры для PS4 или Nintendo Switch, также заслуживают должного признания.

Этот милый мод от RavenFeather поможет вам меньше отвлекаться, отображая правильные кнопки, если вы играете в Amnesia на DualShock 4 или Nintendo Switch Pro Controller. Кроме того, в него вошел ряд других незначительных улучшений, которые вам могут понравиться, даже если с кнопками геймпада у вас проблем не было, в частности, улучшенные шрифты и несколько новых вариантов прицела.

La Caza

amnesia the dark descent как установить истории

La Caza от Team Ninja-Samurai – интересный и увлекательный мод, который победил в соревновании на лучшую пользовательскую историю Best Custom Story от разработчиков Frictional Games. Заслуженно ли он выиграл – другой вопрос, но эта история была одной из первых действительно затягивающих.

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

White Night

amnesia the dark descent как установить истории

Мод White Night, вдохновленный зловещей атмосферой таких игр, как Silent Hill, исследует темные уголки человеческого разума и тайны подсознания. После создания этой модификации ее автор Тансель Альтинель написал историю в формате романа и опубликовал ее у себя на родине, в Турции. Это своего рода признание высокого уровня фантастического сюжета White Night, который заставит вас испытать совершенно новые ощущения в духе психологического хоррора.

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

The Things in the Night

amnesia the dark descent как установить истории

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

The Things in the Night от Doom 2299 – один из фантастических модов, прекрасных буквально во всем. Он выглядит невероятно, окружение в должной мере жуткое, а сюжет пусть и далек от шекспировских трагедий, но увлекательный и понятный.

Followed by Death

amnesia the dark descent как установить истории

Своей модификацией Followed by Death моддер JMFStorm превращает Amnesia в настоящий экшен с простыми головоломками, динамичным игровым процессом и кучей монстров, от которых нужно убегать. Оказавшись в заточение в замке Старого Хармана, вы должны найти Фрэнсиса Хармана, его хозяина, и разобраться, как выбраться из подземелья живым.

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

The Four Horsemen

amnesia the dark descent как установить истории

Если вам нравятся приключения с хорошим сюжетом, то The Four Horsemen от Titan Core – просто очевидный выбор. Вам предстоит играть за Алистера, ученого из 1800-х годов, одержимого Четырьмя Всадниками Апокалипсиса.

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

Amnesia: Through the Portal

amnesia the dark descent как установить истории

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

Она начинается сразу после прохождения портала в чужой мир, где вы раскроете секреты Сферы, Стража и Александра. Местные локации далеки от темных коридоров Amnesia и больше похожи на Галлифрей – родную планету Доктора из сериала «Доктор Кто». Эту историю нельзя назвать страшной, но она фантастически выглядит, а подсказки раскрывают увлекательный сюжет.

Penumbra: Necrologue

amnesia the dark descent как установить истории

Разработчики из CounterCurrent Games очень любят Penumbra от Frictional Games. Настолько сильно, что решили создать неофициальное продолжение в виде пользовательской истории на движке Amnesia.

Necrologue начинается прямо там, где закончилась Penumbra: Requiem, и вам предстоит столкнуться с некоторыми классическими врагами из оригинальной серии. Здесь продуманный дизайн головоломок, хотя из-за скудных подсказок самой сложной головоломкой может оказаться поиск правильного пути прохождения. Но если вам нравится оригинальная Penumbra, этот мод просто обязателен.

Penumbra: Twilight of the Archaic

amnesia the dark descent как установить истории

А если вам понравился Necrologue, то стоит продолжить приключение в Penumbra: Twilight of the Archaic – последней главе созданного CounterCurrent Games продолжения. Оно реализовано в виде дополнения к Necrologue, поэтому требует его установки.

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

Destiny Rebellion

amnesia the dark descent как установить истории

Моддер Umbakarna представляет нам первую главу дилогии Destiny – Rebellion. Эта прославленная история для Amnesia достигает идеального баланса между хоррором и развлечением. Большую часть четырехчасовой кампании, полной уникальных монстров, новых предметов и креативных карт, вы будете просто в восторге.

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

Destiny Revenant

amnesia the dark descent как установить истории

Destiny Revenant, вышедшая спустя два года после первой части, вновь радует креативным дизайном уровней и высокими стандартами качества. Это одна из самых длинных пользовательских историй – здесь девять глав, в которые вошло более 48 карт и около семи часов контента.

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

Key to Freedom

amnesia the dark descent как установить истории

Key to Freedom – одна из наиболее качественных историй, сочетающая зловещую атмосферу и детальный дизайн уровней, необходимые для получения действительно прекрасных впечатлений, верных духу Amnesia.

Сюжет затягивает, а древнее здание – просто идеальное место для напряженной и эмоциональной хоррор-истории. Вдобавок, здесь есть пара внезапно пугающих сцен, но не в дешевом стиле Five Nights at Freddy’s.

Key to Freedom многим обязан креативности своего автора, MXDash – она проявляется в разнообразных фишках и механиках, с которыми вам предстоит столкнуться по мере прохождения этого приключения. Например, призрачная статуя, которая следует за героем – отсылка к It Follows (2014).

Amadeus

amnesia the dark descent как установить истории

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

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

Amnesia: The Dark Descent Remastered

amnesia the dark descent как установить истории

Когда важность фанатского дополнения признают даже сами разработчики, в нем определенно есть нечто особенное. Amnesia: The Dark Descent Remastered – масштабное обновление графики этой классической хоррор-игры. Оно заменяет базовые текстуры игры на новые, в высоком разрешении, дорабатывает эффекты частиц и значительно улучшает туман.

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

The Great Work

amnesia the dark descent как установить истории

Не так часто можно найти мод, который так идеально описывается собственным названием, как The Great Work («Великая работа»).

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

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

Источник

Amnesia the dark descent как установить истории

Amnesia: The Dark Descent

amnesia the dark descent как установить истории

Название в России: Амнезия: Призрак прошлого
Платформа: PC (игра поддерживает Windows, Linux и Mac)
Жанр: Adventure/Horror
Дата выхода: 8 сентября 2010 года
Способ дистрибуции: цифровой ($19.99)
Разработчик: Frictional Games
Издатель: Frictional Games
Издатель в России: Snowball
Официальный сайт

Когда я проснулся, у меня расскалывалась голова и очень сильно болело горло. Где я? Как я очутился здесь?
В голове невольно возникают мысли о боли и страданиях, пока я пытаюсь узнать, где я нахожусь. Это место мне кажется очень знакомым.
Внезапно меня захлестнул страх, по телу побежали мурашки, а в голове осталась одна мысль:
Мне нужно выбраться отсюда!

Игроков ждет 18-й век и главный герой, исследующий заброшенный замок 14-го века.

Даже в те времена недвижимость по пустякам не забрасывали, поэтому у ненаселенности замка найдется какое-то очень серьезное объяснение. А вот какое именно придется выяснять протагонисту. Судя по жанру игры, ему предстоит хлебнуть с этим выяснением столько горя, что пользователям мало не покажется. Разработчики обещают пугать игроков какими-то очень оригинальными приемами, в которые в нужных пропорциях будет намешано геймплейных фич, графических эффектов, звука и музыки. Вспоминая «Пенумбры», девелоперам почему-то верится, так что если Amnesia: The Dark Descent входит в список ваших ожиданий, то валидолом запасайтесь заранее.

Источник

Amnesia: The Dark Descent

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

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

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

С правой комнаты, со стола забираем рукопись. Выйдя из комнаты, поворачиваем направо, еще направо и оказываемся в огромном коридоре. Идем до конца и поворачиваем в левую комнату. В «Планах этажей» в самом последнем ряду обнаруживаем сундук. Покинув комнату, поворачиваем направо, уперевшись о полуразрушенную стену слышим грохот. У левой комнаты, со стола подбираем очередные писсуары. Там же берем в руки камень и швыряем в стену с проемом. Проходим дальше. Осматриваем зал местной истории, сначала обнаружим все три книги, которые надо активировать. Под стеклом лежим последняя рукопись из этой серии. Приметив книги, активируем их и идем в потайную комнату. Со стола забираем ключ, а из тумбочки достаем заметку. Услышав грохот, возвращаемся в зал, где открылась новая дверь. Осторожно передвигаемся по коридорам, т. к. недалеко бродит монстр. Покидаем архивы, тем же путем, что и пришли.

Идем в комнату с прибором для химических экспериментов. Наливаем все компоненты, крутим левый, затем остальные винты. Быстро подставляем пустую склянку под кран справа. Забираем кислоту.

Используем кислоту на слизи, перегородившей дорогу.

Итак, после несколько секундной потери сознания, запрыгиваем на первый ящик. Невидимый монстр рядом с нами! Мы может отслеживать его только по следам на воде. Также, если мы идем по воде, он моментально замечает нас и убивает. Справа есть комната. Активируем рычаг и очень быстро идем по коридору, в конце металлическая решетка, которая медленно закрывается. Если не успеваем, придется проделывать всё заново. Конечно, если вам трудно будет сориентироваться, то сначала следует разведать всё. Разведка поможет, обнаружить полезные предметы в других комнатах. Оказавшись в следующей зоне, там уже другое чудище. По ящикам расположены расчлененные части тел. Кидаем их в воду, и ждем, пока монстр начнет их есть. Тогда, быстро перемещаемся по воде и крутим механизм на двери, чтобы пройти дальше. Мясо нужно подкидывать постоянно. Пройдя в следующую комнату, с полки забираем иглу и используем ее на двери.

Бежать, бежать и еще раз бежать. Не забываем закрывать двери за собой!

Устремив взгляд налево, игра сама указывает, куда нам стоит идти. Лифт не работает, машинное отделение заперто. Возвращаемся в зал и идем в противоположную сторону.

Осматриваем комнаты. Идем дальше, подойдя к окну, оно потрескается. Рядом лежит масло. Проходим в комнату справа. Смотрим воспоминания, ищем полезные предметы, записки. Берем в руки тяжелый предмет, например стул и бросаем в потрескавшееся окно. Через карниз, прыжками добираемся до другой стороны. Справа со стола смотрим в сферу. Проходим дальше, справа подбираем последний стержень и инструкцию по настройке. В след комнате слева осматриваем сундук. Уходя, не забываем наполнить лампу маслом.

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

Идем в зал с лифтом. Используем ключ на двери машинного отделения.

Проходим вперед и поворачиваем направо. Слева со стола читаем записку. Идем дальше, теперь надо отрегулировать рычаги по инструкции: должно получиться сумме из цифр 8 — снизу, 8 – сверху. Делаем, как показано на скриншоте.

amnesia the dark descent как установить истории

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

Темница (Северное крыло).

Продвигаемся по узкому тоннелю. В развилке поворачиваем направо. Убрал камни, поворачиваем налево. Теперь нужно попасть в хранилище. Для этого смотрим в стены и видим стрелочки указывающие путь. Конечно же путь будет сложен, монстры никуда не делись, также осматриваем комнаты в поиске полезных предметов. В самом хранилище с полки забираем банку, не забываем взглянуть в сундук, в углу комнаты. Далее, ориентируясь по тем же стрелочкам, идем на кухню. В конце стоит бочка с кислотой. Наполняем ею банку. Теперь вопрос, на чем же использовать эту кислоту? Помните длинный коридор перед самым хранилищем. Так вот, мы теперь идем не по этому коридору в сторону хранилище, а продолжаем идти вперед, где наткнемся на дверь со старым замком. Сливаем на него кислоту и добиваем молотом. Пока монстр не добрался до нас, быстро проходим дальше.

Источник

Amnesia: The Dark Descent или как забыть поправить копипасту

amnesia the dark descent как установить истории

В преддверии выхода игры «Amnesia: Rebirth» издательство «Fractional Games» выложило в открытый доступ исходный код легендарной «Amnesia: The Dark Descent» и её продолжения «Amnesia: A Machine For Pigs». Почему бы и не посмотреть с помощью инструмента статического анализа, насколько страшные ошибки скрывает в себе нутро этих культовых хоррор-игр?

Увидев на Реддите новость о том, что исходный код игр «Amnesia: The Dark Descend» и «Amnesia: A Machine for Pigs» был опубликован, я не могла пройти мимо и не проверить этот код с помощью PVS-Studio, а заодно и написать об этом статью. Особенно с учётом того, что 20 октября выходит (а на момент публикации этой статьи, уже даже вышла) новая часть этой серии: «Amnesia: Rebirth».

«Amnesia: The Dark Descent» вышла в 2010 году и стала культовой игрой в жанре survival horror. Честно говоря, мне ни разу не удавалось пройти её, даже чуть-чуть, так как в хоррор игры я играю по одному алгоритму: поставить, зайти на пять минут, выйти по «alt+f4» при первом же криповом моменте и удалить игру. Но вот смотреть прохождения этой игры на ютубчике мне нравилось.

А на случай, если кто-то ещё не знаком с PVS-Studio, это статический анализатор, который ищет ошибки и подозрительные места в исходном коде программ.

amnesia the dark descent как установить истории

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

После проверки, оказалось, что большое количество кода в «The Dark Descend» и «A Machine For Pigs» пересекается, и отчеты для этих двух проектов были очень похожи. Так что почти все ошибки, которые я приведу далее, содержатся в обоих проектах.

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

Ну и перейдём к делу.

Ошибки копипасты

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

Начнем с примера, где вся функция состоит из сравнения результатов методов и полей двух объектов aObjectDataA и aObjectDataB. Приведу эту функцию целиком для наглядности. Попробуйте сами заметить, где в функции была допущена ошибка:

Картиночка, чтобы случайно не подсмотреть ответ:

amnesia the dark descent как установить истории

Смогли найти ошибку? Да, в последнем return идёт сравнение с использованием aObjectDataA с обеих сторон. Заметьте, что все выражения в оригинальном коде были выписаны в строчку, тут я сделала переносы, чтобы все ровно вписывалось в ширину строки. Представьте, какого будет искать такой недочёт в конце рабочего дня. А анализатор найдёт его сразу же после сборки и запуска инкрементального анализа.

V501 There are identical sub-expressions ‘aObjectDataA.mpObject->GetVertexBuffer()’ to the left and to the right of the ‘ 1 || avSubDiv.x > 1 ParticleEmitter.cpp 199

По второй скобке в условии видно, что подразумевается проверка полей и x, и y. Но в первой скобке по какой-то причине этот момент был упущен и проверяется лишь поле x. К тому же, судя по комментарию к проверке, оба поля должны были быть проверены. Тут каким-то образом сработал не «эффект последней строки», а скорее первой, так как в первой скобке забыли заменить обращение к полю x на обращение к полю y.

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

Я бы порекомендовала в таких случаях взять за привычку запись родственных проверок в табличном виде. Так и править легче, и недочёт будет гораздо заметнее:

Абсолютно такая же, по сути, ошибка нашлась совсем в другом месте:

Ну как, получилось сходу увидеть, где она спряталась? Не зря же уже разобрали столько примеров 🙂

Анализатор выдал такое предупреждение:

V501 There are identical sub-expressions to the left and to the right of the ‘==’ operator: edge1.tri1 == edge1.tri1 Math.cpp 2914

Разберем этот фрагмент по порядку. Очевидно, что в первой проверке проверяется равенство полей edge1.tri1 и edge2.tri2, и в то же время равенство edge1.tri2 и edge2.tri2:

А во второй проверке, судя по корректной части проверки ‘edge1.tri2 == edge2.tri1’ необходимо было проверить равенство этих полей «крест-накрест»:

amnesia the dark descent как установить истории

Но вместо проверки на edge1.tri1 == edge2.tri2, была проведена бессмысленная проверка edge1.tri1 == edge1.tri1. А ведь это всё содержание функции, я ничего из неё не удаляла. И все равно такая ошибка затесалась в код.

Другие ошибки

Приведу следующий фрагмент кода с оригинальными отступами.

Предупреждение PVS-Studio: V563 It is possible that this ‘else’ branch must apply to the previous ‘if’ statement. CharacterBody.cpp 1591

Этот пример может сбить с толку. Почему else имеет тот же отступ, что и внешний по уровню if? Подразумевается, что это else для внешнего условия? Ну тогда нужно расставить скобки, иначе else относится к идущему прямо передним if.

Или нет? В процессе написания статьи я несколько раз меняла своё мнение насчет того, какой вариант последовательности задуманных действий для этого кода наиболее вероятен.

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

Тогда, скорее всего, суть этих проверок состоит в том, что сначала проверяем, является ли элемент mfMoveSpeed большим, чем ноль, а потом проверяем его значение относительно fForwardSpeed. Тем более, что два последних if соответствуют друг другу по формулировке.

В таком случае, оригинальный код будет работать, как и задумано! Но он точно заставит поломать голову того, кто придёт его править/рефакторить.

Я думала, что мне никогда не встретится код, который выглядит таким образом. Из интереса, я заглянула в нашу базу ошибок, найденных в open-source проектах и описанных в статьях. И примеры этой ошибки находились и в других проектах — можете посмотреть на них и сами.

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

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

V711 It is dangerous to create a local variable within a loop with a same name as a variable controlling this loop. BinaryBuffer.cpp 371

Итак, у нас есть переменная ret, по которой контролируется выход из цикла do-while. Но внутри этого цикла, вместо присвоения нового значения этой внешней переменной, объявляется новая переменная с именем ret. В итоге, она перекрывает внешнюю переменную ret, и переменная, которая проверяется в условии цикла, никогда не изменится.

При неудачном стечении обстоятельств такой цикл мог бы стать бесконечным. Скорее всего, в этом случае этот код спасает внутреннее условие, которое проверяет значение внутренней переменной ret и приводит к выходу из функции.

amnesia the dark descent как установить истории

Заключение

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

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

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

Используйте статический анализатор регулярно!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *