TGViewer
Doing It Wrong Doing It Wrong @itisdonewrong · 158 subscribers
Post #98 1.16K
30.

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

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

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

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

Это выглядит довольно красиво, но полностью игнорирует наличие физических объектов. Чтобы это исправить добавляем проверку: если на пути верёвки после сдвига есть какой-то физический объект — сдвиг не осуществляем. Теперь можно обмотать клубком ниток какой-нибудь подводный остров!

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

Ура? В целом да, однако верёвка всё ещё любит застревать в текстурах, а игрок в процессе отматывания вынужден иногда прерываться на то чтобы распутаться (а решение этой проблемы сильно выходило за временные рамки джема). Насколько эта механика помогает не потеряться в атмосферном подводном приключении — можете проверить сами, поиграв в Crab with a Hook! (Игра, кстати, довольно неплохо работает в браузере, так что качать ничего не придётся).
  • ❤‍🔥 7
  • 🔥 5
  • 👍 2
  • ❤ 1
More from @itisdonewrong
  1. Apr 26, 202631. Новости Ludum Dare к этому часу: - Прошёл 59-й Ludum Dare — один из самый больших гейм…
  2. Apr 12, 2025photo post
  3. Mar 8, 202529. Мне нравится концепция велосипедов. Хорошо в спортивном плане: бег и ходьба мгновенно…
  4. Mar 8, 2025video post
  5. Oct 13, 202428. 3d-моделирование — это один из многих навыков, к которым открывает путь маломальское у…
  6. Oct 13, 2024photo post
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →