Pull to refresh

Comments 15

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

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

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

Автор сам же говорил, что не хочет, чтобы это вызывало попоболь:

Многие игры забили на это, но я не хочу, чтобы подобное наказывалось. Рогалики и без этого безжалостны.

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

В общем, я уверен, что при желании можно реализовать что угодно. Цикл и правда получился весьма гибкий.

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

А если бы разработчик был "умным" и запретил "ошибочную" атаку своих зданий?

Ну тут уже зависит от разработчика и игры. Starcraft 2 - киберспортивная мега-игра, поэтому логично возложить большую ответственность на игрока за его действия. Где-то это излишне, и описанная автором мне кажется именно этот вариант. Рогалики слишком рандомны по своей природе, и я солидарен с автором, что пускай лучше "голос свыше будет ему говорить", если тыкание в стену не предусмотрено, а всякие дебафы, типа той же слепоты пускай обрабатываются отдельно. Сколько людей, столько и мнений.

Это не костыль, а синергия механик)

Например игрок ослеплён и пытается убежать от монстров.
Но в игре может и не быть такой механики, как «полное ослепление». Тогда зачем давать игру по случайному клику терять действие?

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

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

Обмануть противника, что ты на перезарядке, и вместо выбрасывания обоймы вернуть её обратно.(или пристрелить противника патроном, оставшимся в стволе)
Или для смены типа патронов.
Или если ты понимаешь что сейчас сдохнешь и не хочешь, чтобы противнику достались патроны.
И мой любимый вариант (да я видел и такое). Нажать кнопку выброса магазина НА ЧУЖОМ оружии.

бесполезно использовать аптечки при полном здоровье

1)Аптечка может лечить постеменно, а не моментально, в некоторый случаях имеет смысл сожрать такую перед получением урона.
2)аптечка может лечить от яда и т.д.

И никаких интересных ситуаций такие «возможности» не создают.

Так что вы не правы.

UPD: ещё вспомнил, Разрядить оружие, кинуть его во врага, тот поднимает его автоматически, и пока его перезагяжает(или соображает поменяь обратно) убить его.

Часто ли вы видите такое? Это из разряда тех игр, где есть ВСЕ. "Рай" с миллионом квестов, бесконечными неповторяющимися заданиями, персонажами и с еще кучей механик, которые перечисляют, как будто, по желаниям ребенка.

Типа: "О, а пускай там будет гипер-лазер-пушка, стреляющая радиоактивными ягнятами", "О, а еще хочу ядреный хрен, замазывающий экран врага чернилами спрута"

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

 То, что вы говорите - это игры в сферическом вакууме.

-смена типа патронов. Сталкер (дробь\жекан)
-чтоб не достались патроны- стратегия не доставайся же ты никому довольно распространена в том или ином виде.
-кинуть рязряженное оружие во врага-довольно популярный приём в старых шутерах. Не помню конкретно в какой игре я это практиковал, но вероятно в какой-то части quake.
-выброс магазина у вражеского оружия: pavlov VR

Конечно такие события вещь не частая, но именно такие хитрые применения обычных механик дарят незабываемые эмоции.

любая игра режет механики и лишает интересных ситуаций

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

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

Но для этого нужно, чтобы уже было


  • Оставление патрона в стволе (чего в игре не было)
  • Возможность прервать анимацию перезарядки (чего в игре не было)
  • Реакция AI на процесс перезарядке (чего в игре не было)

Т.е., сама "возможность выкинуть полную обойму" ничего не создаёт — создаёт её пересечение с кучей других механик. Которые тоже нужно продумывать.


Аптечка может лечить постеменно, а не моментально, в некоторый случаях имеет смысл сожрать такую перед получением урона.

Чего в той игре не было.


аптечка может лечить от яда и т.д.

Чего в той игре не было.


Разрядить оружие, кинуть его во врага, тот поднимает его автоматически, и пока его перезагяжает(или соображает поменяь обратно) убить его.

Чего в той игре не было.


Так что вы не правы.

Я описываю, как в реальных играх эти вещи ничего интересного не добавляли :) Вы же описываете, как "можно было бы эти косяки сделать фичами". Так да, безусловно, можно. Но само оставление косяка обычно "само по себе" ничего интересного не создаёт.


Так что, возвращаясь к начальному тезису — невозможность долбиться в стену именно фича, а не "костыль", пока в игре нет других механик, которые бы делали такое долбление осмысленным.

Чего в той игре не было.

1)Я думал мы в принципе про игры, а не про какую-то конкретную.
2)Сейчас игры допиливают в процессе.
3)Это может быть элементом реализма, типа переключил оружие, вспоминай сколько патронов осталось, или выкидывай остатки магазина и заряжай гарантированно целый.

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

Так что, возвращаясь к начальному тезису — невозможность долбиться в стену именно фича, а не "костыль", 

Это костыль, пусть и идеально работающий.

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

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

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

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

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

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

Старый-то зачем выкидывать? Я во что-то такое играл, так что поддержу вашего оппонента: некоторые возможности лучше ограничить. Особенно, если это шутер, где скорость реакции очень важна. Банальные блокировки от случайных нажатий.

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

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

В случае с рогаликами, когда проход по длинному коридору (часто часть
коридора еще и не видна) это либо зажать кнопку и подержать, либо нажать
ее скажет 55 раз...

Не обязательно. В том же NetHack есть команды (помимо прочих): "иди в указанном направлении, пока не уткнешься в стену, или найдешь что-нибудь интересное" (например, ответвление коридора), "n раз делай действие x", "иди в указанную точку".

В переводе местами смысл теряется. Например:

Обычно движки работают с некимactor, смесью Monster и подконтрольного игроку Hero.

В оригинале: Most of the engine just deals with “actors”, the superclass of both Monster and the player-controlled, gender-nonspecific Hero. (Основная часть (моего) движка работает с actor, надкласса как Monster так и управляемого игроком бесполого Hero.)

Текущая версия Dart [15 июля 2014] полностью основана на ASCII, хотя, что забавно, использует canvas API.

В оригинале: The current Dart version is all ASCII-based right now, ironically rendered using the canvas API. (Текущая версия (игры) на (языке) Dart работает только с ASCII визуализацией, хотя, что забавно, используя canvas API) - там дальше он упоминает о версии игры на C#.

Да, не исключаю. Я переводчик тот еще)

Sign up to leave a comment.

Articles