Factorio последнее достижение
Поздравьте меня! я наконец-то получил последнее достижение "Недотёпам здесь не место!"
Мне понадобилось почти 600 часов и не считанное кол-во попыток что бы пройти эту замечательную игру менее чем за 8 часов ;)
Поздравьте меня! я наконец-то получил последнее достижение "Недотёпам здесь не место!"
Мне понадобилось почти 600 часов и не считанное кол-во попыток что бы пройти эту замечательную игру менее чем за 8 часов ;)
Каждому разработчику Стим настоятельно рекомендует прикрутить к своей игре ачивки, как будто все уперлись рогом в землю, и никак. А народ вовсе не против, просто никто не объясняет популярно, как внедрить Steamworks SDK в UE4, и как дальше ковыряться в блюпринтах. Можно немного погуглить, много подумать, и наконец, разобраться самостоятельно. Но не каждый программист настолько трудолюбив. Мне не повезло, я гуглил, думал и разбирался. Зато у вас появилась возможность прочитать полезную статью.
Должен признаться, у автора есть свой шкурный интерес. Давайте договоримся так: вы идете по сылке https://store.steampowered.com/app/1786330/The_Pied_Piper_of_Gamelin/?beta=1 и давите кнопку «WISHLIST». Это бесплатно, и ни к чему не обязывает. А я рассказываю коротко и ясно, как мутить ачивки. Заметано?
Итак, в ответ на тычок мышкой, прилетает Steamworks_SDK_152.zip. И что? Куда его распаковывать?? Оказывается, правильную папку надо создавать руками. Оттуда, где лежит любимая UE4, ныряем глубже, и в дебрях Engine\Source\ThirdParty\SteamWorks видим папку Steamv142. Это такая подсказка, как правильно именовать каталог. Создаем рядом Steamv152, и разворачиваем архив туда.
Внутри Steamv152 должна попасть папка SDK, а дальше glmr, publik, tools . . . Ну вы поняли. А еще в папке SteamWorks лежит файлик steamworks.build.cs, который надо открыть любым текстовым редактором и внимательно прочитать. Мне бросились в глаза такие строки:
string SteamVersion = "v142"; и еще
PublicDefinitions.Add("STEAM_SDK_VER=TEXT(\"1.42\")");
Не раздумывая, аккуратно перебил четверки на пятерки. Теперь файлы SDK на месте, но это только начало. Находясь в глубине дерева движка, выходим немного выше в подкаталог Engine. Оттуда идем в Binaries\ThirdParty\Steamworks. Внутри снова создаем подпапку Steamv152, заходим туда. и делаем еще две папки: Win32 и Win64.
В Win32 кладем Steam_api.dll из sdk\redistributable_bin, а в Win64 кладем steam_api64.dll из SDK\redistributable_bin\win64. Как утверждают умные люди, этого достаточно, но я все же подкинул в Win32 файлики Steamclient.dll, tier0_s.dll, vstdlib_s.dll взятые из клиента Стим, а в Win64 тоже из клиента - steamclient64.dll, tier0_s64.dll, vstdlib_s64.dll.
Было ли это лишним — не проверял.
Гемор конечно. Но зато теперь Steamworks_SDK корректно подключен к движку UE4. Не забудьте в окне плагинов найти строчку «Online Platform», прокрутить список до блока «Online Susbsystem Steam» и взвести галку «Enabled». Потребуется перезагрузка, а как вы хотели?
Настало время конфигурить проект. Там в папке Config лежит файл DefaultEngine.ini, открываем его любым текстовым редактором и копипастим в хвост такой вот блок:
[/Script/Engine.GameEngine]
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
[OnlineSubsystem]
DefaultPlatformService=Steam
[OnlineSubsystemSteam]
bEnabled=true
SteamDevAppId=480
[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"
Вот теперь мы готовы добавлять ачивки. Делается это с двух сторон: на странице в SteamWorks и в DefaultEngine.ini.
В SteamWorks в «управлении приложениями» прокручиваем до блока «Облик в сообществе» и жмем «Достижения». Для каждого достижения нужно назначить три текстовые строки и загрузить два варианта иконки, цветной и черно-белый. «Название для API» - по сути идентификатор, некая уникальная строка, написанная латинскими буквами. «Название для отображения» - краткое имя ачивки, а «Описание» - краткая формулировка условий получения. К примеру, «100 хедшотов подряд» - это описание, название для отображения — пусть будет «Desperado”. В строке «Название для API» можно написать «ACH_DESPERADO». Названия для API надо будет перечислить в DefaultEngine.ini в секции [OnlineSubsystemSteam]. Как-то так: Achievement_0_id="ACH_DESPERADO"
Главное — не ошибиться в названии для API.
И наконец, начинаем ваять блюпринты. К нашим услугам примерно пять нод. «Примерно» - это потому, что шестая устаревшая, а из пяти актуальных реально нужны только три.
Самая нужная нода всего одна, это «Write Achievement Progress». Как только она сработает, оверлей выведет иконку с текстом на экран, и следует хорошенько подумать, не явится ли это раздражающим фактором для геймера. Хорошими событиями являются только те, которые происходят во время. Учитесь тонкостям геймдизайна.
Вообще, онлайновые ноды примечательны тем, что имеют на выходе целых три контакта: один безымянный и два других: On Success/On Failure.
Безымянный контакт позволяет продолжить выполнение логики не дожидаясь ответа от сервера. Это полезно, поскольку ожидание может нарушить обработку кастомных событий, не может быть, чтоб вы обошлись без добавления оных.
Кстати: для отладки ачивок не забудьте вместо Selected ViewPort запускать игру в режиме Standalone Game. Если все правильно настроено, будет виден оверлей и иконки ачивок.
Я не знаю, что будет с геймером, который всю ночь потратил на совершение подвига, если под утро Write Achievement Progress вернет Failure. Делать паузу и повторять попытку записи? Для очистки совести программиста этого хватит, но для успешного сохранения — не факт. В любом случае следует понимать, что результат операции будет известен с весьма ощутимой задержкой, возможно, не менее секунды. В масштабе игровых таймингов это целая вечность.
Внутри игры бывает необходимо знать заранее, какие ачивки уже получены. К примеру, моя игра имеет два различных финала, для каждого своя ачивка. Если геймер прошел игру второй раз, и выбрал другой финал — ему полагаются две ачивки сразу: за финал номер два, и за то, что собрал оба варианта. Для реализации такой логики надо знать, был когда-то альтернативный финал, или нет.
Если даже сервер отзывчивый, ответ прийдет не сразу, возможно, через секунду. Вот почему для чтения нам предоставлено целых две ноды: «Cache Achievements» и «Get Cached Achievement Progress».
Самую тяжелую работу делает «Cache Achievements», она лезет в сеть, потому у ней на выходе три ключа: один безымянный и сладкая парочка On Success/On Failure.
Очень логично расположить ее в последовательности «BeginPlay», причем если не в самом конце, то продолжать тянуть белую соплю надо именно из безымянного ключа. К тому моменту, когда полученные из сети данные понадобятся, либо Success, либо Failure стопудово сработает. Я кстати, не знаю, что делать геймеру, если случилась Failure: все равно играть, или пойти гулять с собакой?
Лично я определяю Success или Failure по результату работы ноды «Get Cached Achievement Progress»: если ачивка не получена, но сервер отозвался, вернется вполне вразумительный ноль. А если сервер не виден - булевый выход «Found Id» вернет неправду.
Исходя из названия, нода в сеть не лезет, цифра прогресса берется из памяти, а потому работает мгновенно.
Есть еще нода «Achievement Description», но зачем нужна – не понимаю в упор. Программист и так все знает, а для игрока есть оверлей.
Если кому интересно, что у меня на уме сейчас — подписывайтесь на блог разработчика: https://vk.com/creatorone или https://t.me/TheCreatorOne кому как удобнее.
Я новенький на пикабу и увидел это чудное сообщество можно к вам? Я немного шарю (п.с всего достиг сам)
Добрый вечер. Помогите, пожалуйста, получить последнее достижение в игре Just Cause 3 в стиме. У друзей нет этой игры, не знаю, что и делать.
Полагаю, по скрину вполне можно найти меня в стиме.
Заранее благодарю.
С давних пор являюсь фанатом серии Half-Life и вот недавно в мои руки попала последняя (крайняя, ближняя, как угодно) часть, а именно Half-Life: Alyx. Описывать саму игру не буду, т.к. это уже сделали до меня. Могу только добавить, что это действительно шедевр VR индустрии.
Так как все предыдущие части в стиме у меня пройдены на 100% по всем ачивкам, то и эту часть сия участь не миновала. Но есть в Alyx ачивка "Бункер для моего гнома". Надо притащить собственно гнома (внезапно, да) из начала игры почти в самый конец. В руках (в буквальном смысле, вр все таки). Если мне не изменяет память, в Half-Life 2 episode 2 тоже была похожая ачивка, но там гнома тащить не так проблемно было. В общем по пути следования к концу я состряпал некий фотоотчет о путешествии гнома.
Ахтунг!! Возможны спойлеры! Ахтунг! (я предупредил)
Далее от лица гнома.
Начало пути. Меня вынудили покинуть родную свалку.
Побывал в гостях у ворта. Кормят так себе.
Познакомился с комбайном. Милый паренек (или может дама, под шлемом не видно).
Побывал в центре управления какой-то фигней (колпак у меня краснее, чем местные телефоны).
Полюбовался старинными улочками с балкона гостиницы (гостиница так себе, максимум 2 звезды). Очень вежливый (нет) персонал.
Немного оттянулся (ну ладно, много оттянулся)
Попытался вырабатывать энергию (спойлер: не получилось).
По пути подлечился (после оттяга то)
Посетил зоопарк (тут хорошо, только тараканы больно большие)
Погулял на каком-то заводе (очень агрессивные сотрудники)
Полюбовался летающим утюгом (здоровый, сука!)
И вот наконец добрался до своего нового дома!
Уфф. Это было.. сложно. Но интересно. И все ради картинки в профиле:
В достижениях вдруг стали редкими достижения, которые до этого были совсем не редкими, максимум 30% игроков их имело. Например достижение "Курсант" (четвёртое слева), есть у всех кто прошёл игру "Spec Ops: The Line" на самой лёгкой сложности, когда достижение "Генерал Армии" есть только у 2,3%. Про ачивку с подожжёнными шпионами я вообще молчу. Дамы и Господамы, это только у меня или у всех так?
P.S. Скриншот со статистикой.
С другом попробовали на другом только что созданном аккаунте, спустя пару минут бана нет) Банят, или это миф ??
Одна вакансия, два кандидата. Сможете выбрать лучшего? И так пять раз.
Всем привет!)
Немного (много) предыстории.
В начале 2000-х я познакомился с персональным компьютером и во всю погружался в виртуальные миры. Я и раньше играл в игры на сеге, денди и игровых автоматах. Но то было лишь началом.
Середина и конец 2000-х стали для меня прекрасным временем, расцветом игровой индустрии и её развитие 7-мимильными шагами, так я думаю сейчас и буду думать дальше. Появлялись новые концепции, новые идеи и прочее.
Я был молод и с пустыми карманами, а играть хотелось, аж до зуда в...пальцах рук.
Выпрашивая или копя, я получал заветную денежку и покупал игры, о которых узнавал из популярных на то время передач, сейчас уже и не вспомню их название.
Какие-то игры растворялись в памяти мгновенно после прохождения, другие же наоборот западали глубоко в душу, так что о них было сложно забыть и хотелось их переигрывать.
Но этого было мало, а игр становилось много.
И вот настал тот день, когда я узнал про торрент и понеслось. Игры качались рекой, проходились, забрасывались и снова качались, всё время циркулируя на винте. Так и ждал, что винчестер полыхнёт.
Игр было до безумия много. И в этом безграничном потоке попадались шедевры, проходняки, мусор. Некоторые игры не дотягивали до идеала, но тоже, пусть и частично, но оставались в памяти.
И вот теперь я понемногу подхожу к объяснению названия темы.
В какой-то момент, мой комп перестал тянуть новые игры, да и честно говоря, не думаю, что я зачислил бы их в шедевры. Как уже писал ранее, лучшее время для меня и для игр это 2000-е.
К тому же я пересел с торрент-иглы на иглу Стима. Я стал собирать все более или менее понравившиеся мне игры и постепенно их проходить. Разумеется сначала я покупал те игры, которые относил к шедеврам. Потом, по мере возможного, покупал заслуживающие похвалы и проходняк. Всё таки желание играть не угасает во мне и по сей день.
И разумеется по мере прохождения я выбивал достижения. Сначала я не придавал им большого значения. Прошёл уровень или главу - получи достижение, убей 100 врагов - получи достижение и так далее. Но иногда я выбивал необычные или редкие ачивки случайно и это меня радовало. Я стал проходить уже ранее пройденные игры не просто так, а с каким-то положительным выхлопом.
Мне хотелось заново запустить старую игру и попытаться выполнить в ней, все условия, что предоставили разработчики.
Я не стремлюсь выбить 100% в игре, особенно, если достижение требует 1000 часов игры, а я наиграю всего 50. Я не буду за ним гнаться, но если оно не нудное, а изощеренное, то как минимум попробую его получить.
Ну и собственно, к чему я создал этот пост.
Игр существует огромное множество и к сожалению в очень старых играх начала и середины 2000-х, ачивок нет, что меня сильно печалит, потому как хочется пройти игру повторно, но так же хочется что-то с этого получить. На одной ностальгии им уже не выехать. Но порой выходят переиздание или встречаются старые игры, в которые разработчики всё же вставляют достижения.
И я хотел бы узнать у вас о старых и не очень старых играх, в которые вставили ачивки. Интересуют именно игры, а не конкретные достижения.
Нигде толком похожего не нашёл, поэтому прошу вашей помощи!)