Обновить

Как двери издеваются над программистами

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели30K
Всего голосов 75: ↑73 и ↓2+91
Комментарии50

Комментарии 50

Господи, оказывается мему с КДПВ уже 20 лет. 20, Карл!

Карл уже давно стал сеньором, выгорел и ушел делать крафтовое пиво, а вы все еще считаете возраст пиксельных картинок в интернете)

Ну вот, даже в хронологии баянов бывают сбои и конфликты версий. Всегда надо проверять логи перед тем как ностальгировать)

Истории с дверями конечно эпичные но местами странные.

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

А история с выпадающим ломом тоже забавная. Достаточно было сделать чтобы лом падал с громким звуком. Игрок подумает “Что это брякнуло”. А через некоторое время поймет что это он продолбал лом. Очень жизненно на мой взгляд.

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

А история с выпадающим ломом тоже забавная. Достаточно было сделать чтобы лом падал с громким звуком. Игрок подумает “Что это брякнуло”. А через некоторое время поймет что это он продолбал лом. Очень жизненно на мой взгляд.

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

Самое простое решение просто сделать двери больше по размеру.

Имхо, проще проверять, есть ли в двери предмет(лом) и деспавнить его, тут же спавня у игрока.

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

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

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

Так вот он такой на второй день жизни в США говорит мне:

-- Тут некоторые локации в реальной жизни выглядят в точности как в игре. I-101, 280, 92, El Camino Real - в игрушке все такое же. Даже названия заведений в некоторых локациях совпадают. Так вот в игрушке в определенной локации есть секретная дверца между двумя ресторанами на плазе. Тут недалеко. Давай съездим - просто по приколу посмотрим.

Ну ок, в обед немного отклонились от маршрута, убили 20 минут в пробке, съездили и посмотрели.

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

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

San Francisco Rush: Extreme Racing ?

Driver?

Я не настоящий сварщик. Не знаю. В той игре перс был кем-то типа участника преступной группировки. У него там были какие-то терки с боссами мафии, он там заходил в помещения, крал одежду в супермаркетах что бы изменить внешний вид, покупал фальшивые документы, прятался от кого-то в мусорном баке, получал люлей от каких-то гопников, в общем жил полной жизнью (но не очень долго). Машина у него была, конечно, но гонки не были таким уж центром сюжета. Отдельно доставляет, что секретная дверца вообще находилась в Восточном Пало Альто, который всего за пять лет до этого нашего визита туда назывался столицей убийств. Так что искать эту гребаную дверцу мы двое на всякий случай пошли втроем - я, мой друган, и мой глок 19.

Не придирки ради, интереса для: вы были там по рабочей визе и носили глок 19? Иностранцам (легальным) можно купить огнестрел или привезти с собой? А разрешение на ношение иностранцу требуется?

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

В то время (2000) в Калифорнии покупка Glock 19 иностранцем на H1B была возможна если у покупателя была карта I-94 (вставляется в паспорт на границе при въезде), достигнут минимальный возраст и было резиденство штата Калифорния (90 дней надо работать или жить в штате и иметь документальное подтверждение этого). Все остальные детали чисто технические - подождать background check, поотвечать на тупые вопросы, сейфы эти все, на курсы сходить, пару недель после оплаты подождать, емкость магазина, ствол должен быть сертифицирован на drop test, вот это вот всё это уже мелочи.

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

Хотите реальное ношение по-взрослому - нужна лицензия CCW. Для человека на H1B она недоступна.

Очень любопытно, спасибо. Я-то ничего не хочу, просто интересуюсь, честно.

Как двери издеваются над программистами

Я уж думал опять про найм в IT будет. 🤦‍♂️

;)

На этом вопросы заканчиваются.

А как же главный вопрос: можно ли дверь "открыть" просто взорвав ее?
Этого так не хватает во многих играх, когда у тебя в руках гранатомет, а открыть вон ту хилую деревянную дверь ты типа не можешь никак. Сильно бьет по погружению в игру.

Непреодолимый заборчик по пояс же!

Ха! Заборчик

Я помню, как в Ghost Recon бойцы спецназа на бордюр подняться не могли.

бойцы спецназа на бордюр подняться не могли.

в Таркове такое было еще относительно недавно, пока "паркур" не добавили)
Однако если ЧВК устал, то ХУХЭ-ХУХЭ точно так же не даст ему перешагнуть)

Все дело обычно в том, что если ее можно будет взорвать, то это убьет погружение каким-то альтернативным способом

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

Не всегда. Ну например условно, если я могу взорвать из базуки дверь, то почему не могу стену? Игровой мир всегда полон условностей и баланс этих условностей тоже важен, не всегда “реалистичнее” значит лучше. Одна из причин, почему игры с разрушаемым миром так и не стали мейнстримом

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

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

Тут во все поля встает вопрос геймдизайна и баланса, чтоб избежать “эти двери ломаются, а эти не ломаются”, “есть имбовый вариант” и всего такого. КМК четкие правила важнее фич, то есть если уж двери ломаются то вот вообще все-все-все двери

КМК четкие правила важнее фич, то есть если уж двери ломаются то вот вообще все-все-все двери

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

И при этом необязательно делать мир открытым и бесконечным.

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

А я если честно смотря на некоторые игры с открытым миром и как он там реализован, предпочёл бы чтобы открытый мир был либо меньше, либо пусть его сделают поделённым на локации. Потому что скажем в играх юбисфот (как и сами игры от них) или в каком-нибудь elden ring открытый мир ну полная хрень. Вот если не замахиваться на уровень rdr2 или ведьмака 3, то я предпочту небольшой открытый мир с высокой плотностью контента как скажем в kcd 2 или готике. Ну или псевдо открытый мир попиленный на локации как в DS, масс эффект или экспедиции.

Потому что скажем в играх юбисфот (как и сами игры от них) или в каком-нибудь elden ring открытый мир ну полная хрень.

В Watchdogs 2 от Ubisoft открытый мир шикарный, там и активности интересные и в целом все гармонично. Про Elder Ring ничего не скажу, не люблю такую хардкорную боевку, не играл.

Вот если не замахиваться на уровень rdr2 или ведьмака 3

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

опять таки убивает геймплей

Почему? Как будто, логично. Я когда уже в 20х перепроходил арканум понял как нас расслабили современные игры. Готика ремейкнутая это же показала. Но вообще-то это дает плюс к погружению, пусть и ценой духоты (избыточной в начале честно говоря - грызуны убивающие персонажа, пусть и первого лвла - это перебор). Ещё в стартовой локации будешь чувствовать своё могущество, а не то что завалил убердракона, а тебя 5 разбойников потеть заставят (они вообще не должны нападать по хорошему).

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

Сильно бьет по погружению в игру

особенно когда дверь такая:

Вот этим мне кстати дико доставляли игры по типу divinity original sin 2 и baldur's gate 3 - дверь можно просто снести. Правда там у всех предметов есть показатель хп.

Не нашёл вопроса про труп в дверном проеме.

Забыли про Half-Life 2: Поломанная дверь Гордона Фримена https://habr.com/ru/articles/971578/

Итак, я запустил HL2, выбрал новую игру и начал введение. Это известная часть сюжета: мы прибываем на железнодорожную станцию, видим сообщение Брина, охранник заставляет нас поднять банку, а потом нам нужно зайти в комнату… и… тут я застрял. Я не умер, просто никуда не мог двинуться. Я застрял в коридоре с охранником и никуда не мог пойти. Странно.

На самом деле, всё должно происходить так: охранник (спойлер: на самом деле это замаскированный Барни) стучит в дверь, она открывается, он приказывает зайти, после чего игра ждёт, пока игрок войдёт в комнату, чтобы продолжить выполнение скрипта.

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

***

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

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

Как только мы разобрались в этом, исправить ошибку стало очень легко — отодвинуть охранника назад примерно на миллиметр. Элементарно. Но чтобы выяснить это, понадобилось много труда, потому что разработчикам пришлось снова осваивать инструменты отладки и тому подобное.

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

Не знаю, откуда это вот взяли.

Чтобы Барни случайно не умер, конкретно в этой локации у двери прописан damage −1. Т.е. при взрыве двери вас и Барни не сечет осколками, а в прямом смысле лечит. Чем и стали активно пользоваться спидранеры.

Эту дверь невозможно взорвать. Принцип там вообще другой: встать в левой стороне косяка, на которой расположена ось дверь, чтобы при её закрытии игрока прижало. Обычно в такой ситуации игроку либо наносится однократный урон с последующим реверсом анимации двери, либо его убивает. Но в данном случае из-за отрицательного damage игрок начинает получать здоровье с бешеной скоростью.

Видимо перевод кривой, нейросетевой. Там ещё в некоторых местах статьи есть места непонятные, кое-где слова повторяются.

С майнкрафтом тоже совсем не баг, просто механика такая.

Вчера в обед заехал домой, почуял запах гари на этаже.

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

Извините

Он не программист. A обычный NPC.

Отличный пример чего-то, что сначала кажется простым, а потом оказывается, что все гораздо сложнее. А мне еще нравится такой пример:

Есть простая задача: “Буратино дали 3 яблока. Два он отдал Мальвине. Сколько яблок у него осталось?”

Но на самом деле все не так-то просто:

  1. (initializing) Неизвестно, сколько яблок было у Буратино до того, как ему дали 3 яблока.

  2. Неизвестно, два “чего” он отдал Мальвине.

  3. Неизвестно, является ли Буратино и Мальвина двумя разными сущностями, или одно из них это ссылка на другое.

  4. Неизвестно, что подразумевается под процессом “отдал”, и результат этого процесса (может, Мальвина не взяла).

  5. Непонятно, в какой момент “осталось”. После того, как он попытался дать в первый раз?

  6. (state) Неизвестно, являются ли яблоки частью состояния Буратино, или самостоятельными объектами.

  7. (волатильность) Неясно, сколько времени прошло с момента нахождения яблок у Буратино до процесса “отдачи”:

  • Может, яблоки полураспадаются сами по себе (сгнивают), или возвращаются к тем, кто их дал.

  • Может, их едят пока они у Буратино, а он просто этого не знает.

  1. (длина переменной) Неясно, сколько яблок может удержать Буратино. Может, всего 2… И если он 2 отдал, у него нет яблок.

  2. Если процесс дачи яблок рекурсивный, мы все останемся без яблок.

Короче, тёмная история…

Взято отсюда

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

М: - у тебя есть два яблока, некто взял у тебя одно яблоко. Сколько яблок у тебя осталось?

Б: - два.

М: - но почему?

Б: - ну я же не отдам некту яблоко.

:) диалог написал по памяти. Вроде бы он был у меня на виниловой пластинке детской. Есть ли он в фильме/книге - я не помню.

"Я же не отдам Некту яблоко, хоть он дерись!"

(честно нагнуглил, потому что помнил только "там точно было "хоть-он-дерись"")

да-да. про "дерись" я забыл написать :)

идее “быстренько дверь мне запили”. Менеджмент искренне считает, что там работы максимум на час, а команда тратит месяц на работу по фиче.

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

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

Иными словами: „Можно сделать быстро, но плохо, а можно — медленно, но хорошо. Через некоторое время все забудут, что было быстро, но будут помнить, что было плохо. И наоборот.“ — Сергей Павлович Королёв

Прикольные баги с дверями есть в STALKER: Зов Припяти. Известный баг, используемый спидранерами - это выбросить оружие (лучше покрупнее - пулемёт или гранатомёт, но можно и калаш) стоя в определённой точке около двери под определённым углом, чтобы вылетающее оружие попало в щель между створками или между дверью и стеной. С некоторой вероятностью это ломает дверь. Но что интересно, дверь при этом не открывается штатно, а створки уплывают в стороны под углом, иногда чуть-чуть, а иногда на десятки метров. Потом может плавно вернуться на место, но встать неровно. Иногда касание такой уплывшей двери смертельно. А иногда от подобных манипуляций дверь может взорваться, причём на ней заспавнятся эффекты от огненных и электрических аномалий, и звук будет как от срабатывания аномалии, иногда слегка, а иногда как будто сразу десяток одновременно. У меня получалось такое несколько раз, дверь иногда просто горела/искрилась, а иногда реально уничтожалась и исчезала. Это то, что я сам видел, но читал и про другие баги. Например, можно пройти через двери как-то хитро выбрасывая надетый костюм.

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Информация

Сайт
beget.com
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия