вангеры коды не работают

Вангеры коды не работают

First off, I’m thrilled that this gem from my childhood has been reborn. I’ve played through twice since the re-release and I was just wondering why on earth you removed the original cheat codes from the game?

I can’t really think of any good reason. the money code was extremely helpful in relieving the early game grind, especially after the first playthrough. Just curious as to your reason.

вангеры коды не работают

вангеры коды не работают

вангеры коды не работают

вангеры коды не работают

вангеры коды не работают

вангеры коды не работают

вангеры коды не работают

вангеры коды не работают

Never really had problems with beebs. As stated ingame, you will stay poor if you keep freighting Eleepod spit.

Loading a bunch of Speetle Systems with a vector, cheap ammo and getting tabutasks is pretty much enough to get you enough luck to start finding expensive items in the easy burrow traps in Fostral, like Crustest Cannon ammo and terminators. I’ve never tried to get into the cirt business because I hate big slow mechos. Not to mention the pain of chasing larvae.

I personally like the early grinding part of the game. It’s a struggle to survive until you are solid enough to reach Glorx (Oxydize Monk>Piercator>Spread Spot). Perhaps the worst part is getting tabutasks that cannot be accomplished (like the P-beam one), so save before buying them. 😛

. and yes, unlocking cheats after clearing the game once would be fair enough.

Источник

Обзор дефектов исходного кода видеоигры «Вангеры»

Совсем недавно игре «Вангеры» исполнилось 20 лет. В честь этой даты мы решили проверить проект и подготовить обзор некоторых интересных ошибок, найденных в исходном коде игры. Этим занялся наш новый сотрудник Георгий. Проверка проекта – хороший способ познакомиться с возможностями статического анализатора кода PVS-Studio и потренироваться в написании статьи.

вангеры коды не работают

Введение

Потенциальные утечки памяти

Итак, первым в очереди на рассмотрение является следующий код:

Предупреждение PVS-Studio: V773 CWE-401 Visibility scope of the ‘buf’ pointer was exited without releasing the memory. A memory leak is possible. iscr_fnc.cpp 1174

Это функция для обработки строк, состоящих из нескольких слов. Для хранения обрабатываемой строки используется указатель buf на массив char, память под который выделяется с помощью оператора new[]. Этот указатель находится в области видимости функции iInitText.

Чтобы быть уверенным, что такого не произойдет, необходимо освобождать память, которая больше не нужна. В данном случае перед последней закрывающей фигурной скобкой следует добавить выражение «delete [] buf«. Еще более хорошим решением будет использовать умные указатели.

Повторные присваивания

Переходим к следующему участку кода.

Предупреждение PVS-Studio: V570 The same value is assigned twice to the ‘ExternalSensor’ variable. mechos.cpp 5828

Подозрительно, что одной переменной два раза присваивается одно и то же значение. Давайте рассмотрим структуру VangerUnit:

Теперь, исходя из схожести названий и одинаковости типа переменных ExternalObject, ExternalLastSensor и ExternalSensor, можно сделать вывод, что изначально программист задумывал написать так:

Чем же чревата такая ошибка? Тем, что указатель ExternalLastSensor остался неинициализированным, что может повлечь за собой ошибку времени выполнения. Использование такого указателя означает попытку доступа к несуществующему объекту в произвольной области памяти, что может вызвать непредсказуемые последствия. Найти такую ошибку порой бывает весьма трудно. Кстати, если взглянуть 8000 строками ниже, там как раз находится точно такой же код, вставленный туда с помощью Copy-Paste.

Неаккуратный Copy-Paste

Следующий пример оставил у меня весьма забавное впечатление:

Наверняка вам, как и мне, бросились в глаза комментарии, оставленные разработчиками. Я решил проверить, куда может уйти NULL, если функция iGetJoyBtnNameText вдруг его вернет. И обнаружил всего два вызова. Выглядят они вот так:

Видимо, данные участки кода еще находятся в разработке, и я заглянул сюда в самый разгар строительства. Сразу представилась табличка «ВЕДУТСЯ РАБОТЫ», за которой шум, пыль, а большой экскаватор перекапывает землю. Под весь этот шумок в коде функции укрылась ошибка, на которую PVS-Studio выдал предупреждение:

V583 CWE-783 The ‘?:’ operator, regardless of its conditional expression, always returns one and the same value. iextern.cpp 2461

Ошибка кроется во втором операторе ‘?:‘. Классическая ошибка Copy-Paste.

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

Ошибки в операторе switch

Еще один пример. Просматривая отчет анализатора, я наткнулся на ошибку, расположенную в длиннющем операторе switch. Для удобства читателя привожу его в сокращенном виде.

Нашли ошибку? Если PIPKA привлекла ваше внимание, то вы на правильном пути.

Предупреждение PVS-Studio: V501 CWE-570 There are identical sub-expressions ‘uvsReturnTreasureStatus(UVS_ITEM_TYPE::PIPKA, uvsTreasureInShop)’ to the left and to the right of the ‘||’ operator. univang.cpp 10230

И снова старый добрый Copy-Paste. В блоке case, соответствующему константному выражению DG_EXTERNS::HERE_PIPKA, с обеих сторон от оператора ‘||‘ располагается одинаковое выражение. Очевидно, что исправленный код должен выглядеть так:

Недостижимый код

Теперь попробуйте быстро найти ошибку в данном фрагменте:

Предупреждение PVS-Studio: V779 CWE-561 Unreachable code detected. It is possible that an error is present. univang.cpp 4441

Метод ErrH.Abort() находится под оператором return. Поэтому в случае, если указатель pq окажется нулевым, функция завершит свою работу, но ошибка останется необработанной. Для корректной обработки ошибки нужно поменять местами вызов Err.Abort() и оператор return.

Излишне усложненная проверка

Иногда некоторые логические выражения можно упростить. Например:

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

Потенциальное разыменование нулевого указателя

Предупреждение PVS-Studio: V522 CWE-690 There might be dereferencing of a potential null pointer ‘fileName’. Check lines: 72, 70. zip_resource.cpp 72

Не осуществлена проверка указателя fileName. Функция strdup() создает копию C-style строки в куче и возвращает указатель на неё. В случае неудачи с выделением памяти она возвращает NULL. Таким образом, если вдруг у strdup(p) не получится выделить память, двумя строками ниже это обернется попыткой разыменовать нулевой указатель, что влечет за собой неопределенное поведение и является серьезной ошибкой.

Также в коде Вангеров присутствует довольно похожий недочет:

Если функция iGetMergedName() возвратит NULL, то он будет передан функции strdup().Это также повлечет за собой разыменование нулевого указателя и неопределенное поведение.

Анализатор обнаружил еще несколько похожих ошибок:

Пониженная производительность и остатки от рефакторинга

Еще одна ошибка, найденная анализатором:

Предупреждение PVS-Studio: V819 Decreased performance. Memory is allocated and deleted multiple times inside the body of the loop. Consider moving memory allocation outside of the loop. poly3d.cpp 161

Неправильное освобождение динамической памяти

Наконец, приведу последний пример.

Предупреждения PVS-Studio:

Что же происходит при подобной ошибке? Результат: неопределённое поведение. На некоторых реализациях такой код может случайно отработать без ошибок, но тем не менее, он неправилен.

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

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

Обычно реализация оператора new[] устроена так, что в начало участка памяти, выделенного под массив, дополнительно помещается размер этого участка и количество элементов в массиве. Если вызвать оператор delete (без квадратных скобок) для блока, выделенного с помощью new[], то информация о размере блока и числе элементов, вероятно, будет интерпретирована неправильно, и результат такой операции не определен.

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

Заключение

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

Предлагаю любому желающему скачать PVS-Studio и проверить с его помощью свой проект: ссылка для скачивания.

Источник

Глючит или не запускается Vangers: One for the Road? Решение есть! Постоянные лаги и зависания — не проблема! После установки мода Vangers: One for the Road начала глючить или НПС не реагируют на завершение задания? И на этот вопрос найдется ответ! На этой странице вы сможете найти решение для любых известных проблем с игрой и обсудить их на форуме.

вангеры коды не работают

Игра не запускается (2001)

Vangers: One for the Road не запускается/вылетает.
О: В первую очередь проверьте совместимость игры с вашей версией операционной системы.
Если у вас установлена Windows 7 и ниже, то выставьте параметры запуска на совместимость с Windows XP sp3. Для этого зайдите в свойства ярлыка, вызвав контекстное меню нажатием правой кнопки мыши, перейдите во вкладку “Совместимость” и выберете соответствующий параметр.

Если данный способ не помог, или у вас установлена Windows 8 или 10, то рекомендуем воспользоваться сторонними патчами для запуска игры на современных компьютерах. Скачать их можно или с сайта разработчика, или из нашего раздела.

Я скачал Vangers: One for the Road из магазина, но она не работает.
О: Большая часть старых игр представленных в каталогах Steam и GOG полностью оптимизированы для современных систем, но встречаются исключения. Рекомендуем внимательно прочитать описание на странице магазина, где могут быть указаны советы по запуску игры. Также рекомендуем воспользоваться советами изложенными выше.

Vangers: One for the Road выдает ошибку “программа не является приложением win32”.
О: В данном случае для запуска программы потребуется установить гостевую операционную систему или определенный эмулятор. Подробнее обсудить вопрос можно на форуме игры.

Vangers: One for the Road вылетает во время катсцен/не проигрывает ролики.
О: Установите Bink Player. Скачать его можно с официального сайта или поискать в разделе файлы на нашем сайте.

Vangers: One for the Road не запускается в оконном/полноэкранном режиме.
О: Проверьте наличие официального патча или сторонних загрузчиков на сайте разработчика или в разделе файлы. Внимание! Для запуска может потребоваться дополнительное ПО, так что внимательнее читайте описание.

Не работает сетевая игры в Vangers: One for the Road.
О: Запуск старых игры в режиме сетевой игры, зачастую, возможен только посредством эмуляции локального подключения между компьютерами. Для его создания можно использовать такие программы как Tunngle. Также существуют и готовые варианты вроде Hamachi.

Игра тормозит и лагает

Скорее всего данная проблема носит аппаратный характер. Проверьте системные требования игры и установите корректные настройки качества графики. Подробнее об оптимизации игры можно почитать на форуме. Также загляните в раздел файлов, где найдутся программы для оптимизации Vangers: One for the Road для работы на слабых ПК. Ниже рассмотрены исключительные случаи.

Появились тормоза в игре.
О: Проверьте компьютер на вирусы, отключите лишние фоновые процессы и неиспользуемые программы в диспетчере задач. Также стоит проверить состояние жесткого диска с помощью специализированных программ по типу Hard Drive Inspector. Проверьте температуру процессора и видеокарты —возможно пришла пора обслужить ваш компьютер.

Долгие загрузки в игре.
О: Проверьте состояние своего жесткого диска. Рекомендуется удалить лишние моды — они могут сильно влиять на продолжительность загрузок. Проверьте настройки антивируса и обязательно установите в нём “игровой режим” или его аналог.

Vangers: One for the Road лагает.
О: Причинами периодических тормозов (фризов или лагов) в Vangers: One for the Road могут быть запущенные в фоновом режиме приложения. Особое внимание следует уделить программам вроде Discord и Skype. Если лаги есть и в других играх, то рекомендуем проверить состояние жесткого диска — скорее всего пришла пора заменить его.

Проблемы с модами

Ошибки загрузки/обновления

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

Если магазин или лончер Vangers: One for the Road не завершает обновления или выдает ошибки, то переустановите саму программу. При этом все скачанные вами игры сохранятся.

Запустите проверку целостности данных игры.

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

Проверьте настройки антивируса и “Защитника Windows”, а также разрешения в брандмауэре. Вполне возможно они ограничивают подключение к интернету для ряда приложений. Данную проблему можно решить и полной переустановкой магазина или лончера т.к. большинство из них попросит предоставить доступ к интернету в процессе инсталляции.

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

Вопросы по прохождению

Ответы на все вопросы касающиеся прохождения Vangers: One for the Road можно найти в соответствующих разделах Wiki, а также на нашем форуме. Не стесняйтесь задавать вопросы и делиться своими советами и решениями.

Источник

Невангеры

Всем привет. В этот раз мне хотелось бы затронуть тему разработки компьютерных игр, показать некоторые идеи и прототипы. Конкретно в этой статье речь пойдёт о проектах и набросках, вдохновлённых игрой Вангеры, она же Vangers: One For The Road. Пристёгивайтесь поудобнее, трюм полон интересностей, спираль заряжена, поехали.

вангеры коды не работают

Продолжение, часть вторая: Невангеры: Road is changed
Часть третья: Spice must flow
Часть четвёртая: Feed for speed
Часть пятая: Division impossible

вангеры коды не работают

С оригинальной игрой я познакомился 20 лет назад, прочитав ту бесподобную статью в пятом номере Game.exe за 98-й год, и купив диск с Вангерами ещё до покупки своего первого компьютера. Тогда ещё дома водился Спектрум и восьмибитки, а в школе только начали подпускать к мрачному досу и 95-м окошкам, а также Диабле, Дюку, сетевому Варкрафту. Правда приходилось иногда всем этим осознанно жертвовать. Потому что QBasic был интереснее.

Но вернёмся к Вангерам. Игра есть, а играть особо негде. Не беда — соорудил настолку «по мотивам». Вот и ездили по клеточкам машинки, перевозя грузы между тремя городами — по изогнутым дорогам спокойнее и быстрее, а если срезать, то передвигаться труднее, зато на тайники можно наткнуться. Сам же PC-диск лежал на полочке, как своего рода талисман и заочно любимая игра. Бонусом было то, что его можно было проигрывать в купленной уже немного позже PlayStation One, как диск музыкальный.

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

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

Не так давно оригинал переиздали в Стиме. А у сообщества есть отдельный телеграм-канал.

вангеры коды не работают

вангеры коды не работают

вангеры коды не работают

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

«Мехосома» превратилась в «Самогонки», игрушку приятную внешне и концептуально, но какую-то слишком зубодробительную внутри и от того достаточно проходную. Тем не менее, подобные эксперименты тоже полезны — улучшают понимание того что с чем стоит смешивать, а что нет.

Blender и Unity

В процессе жизни разработчики мигрируют между различными средами разработки. Вот и я понемногу доплыл от спектрумовского Basic, Qbasic и Delphi, до связки Unity c Blender, пройдя Flash, а также Blitz3d в упряжке с 3ds Max.

Blender впечатлял и раньше — полноценный мощный 3d-пакет, который весил какие-то жалкие десятки мегабайт. Правда он требовал к нему привыкнуть, но это того стоило. Глубоко в его возможности я поначалу не залезал, в основном мне тогда нравилась возможность красить вертексы, а так я привык пользоваться максом.

Прошли годы, я снова вернулся к 3d от настольно-ролевых разработок, и уже не рассматривал макс совершенно, нацелившись на Blender. С тех пор тот успел обзавестись «честным» рейтрейсинг рендером Cycles, 3d карандашом, скульптом и прочими полезностями. На этот раз интерфейс не показался мне чем-то космическим — может быть пригодился тот первый опыт, может быть действительно среда стала более интуитивной. Тем временем версия 2.8 обещает быть ещё интереснее — не только шустрый «игровой» рендер Eevee, но и изменённый интерфейс, буст анимационных возможностей. В принципе это уже всё есть, но пока в нестабильных сборках — допустим, у меня в 2.8 немного глючит сцена и в редакторе нодов связи совершенно прозрачные (а вот на Linux эта версия работает более стабильно). Вобщем, Blender — это очень правильный опенсурс.

Unity. Тоже отличный инструмент. Для понимания того как всё устроено мне пригодился опыт использования Blitz3d и Flash, на последнем я как раз собирал законченные игры, а не только прототипы. Таким образом в Unity я нашёл всё что нужно, чтобы делать 3d-графику работающую на скриптах. Хотя сейчас в принципе движков появилось много — не проблема делать на чём угодно. Сейчас скорее проблема в оптимизации, потому что среды разработки стали более дружелюбны к пользователям и велик соблазн забить всё доступное пространство сверх-тяжёлыми супер-детализированными объектами, а код писать так, как будто моделируешь реальную ситуацию, в лоб. При том, что классический подход состоял в тотальном использовании таблиц, массивов, матриц, многообразия операций с ними, и формирования у пользователя всевозможных иллюзий — иллюзия объема, иллюзия перемещения, иллюзии эффектов и так далее. Что давало хорошую оптимизацию при скромных мощностях.

вангеры коды не работают

Невангеры

Unity-ассет, кстати, назывался MS Vehicle System (free version), если кому интересно.
Так и появился первый прототип, по которому записал небольшое видео:

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

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

вангеры коды не работают

Тантрамантра, или Вангеры 2

Действительно, что если представить себе некое продолжение оригинальной игры. С новыми мехосами, новой проблематикой, новым движком.

вангеры коды не работают
Органический еретик

вангеры коды не работают
Матрона

Как бы мог выглядеть сюжет подобного продолжения? Вроде бы вырисовывается нечто в духе оригинала. Я вижу это примерно так:

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

вангеры коды не работают
Кукловод

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

вангеры коды не работают
Порочная сестра

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

вангеры коды не работают
Глубокозависимый

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

вангеры коды не работают
Дочь спирали

Примерно такая вырисовывается история. Мехосов придумалось много, ниже можно взглянуть на оставшихся:

вангеры коды не работают
Витой ноль

вангеры коды не работают
Квантовый джокер

вангеры коды не работают
Икар

вангеры коды не работают
Личинка Стикс

вангеры коды не работают
Флегматик

вангеры коды не работают
Ткач

Помимо самих рендеров для каждой машинки записал демонстрационный мини-ролик, где они вращаются вокруг своей оси. Рендерил в Blender 2.79. Дело это, конечно, не быстрое, но решил писать в 640 на 480 — вроде хватает. Пару первых анимаций делал на 60 кадров, затем удваивая каждый в видеоредакторе. А дальше стал делать более плавные, уже в 120 кадров.

Источник

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

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