Ну что я могу сказать об этой ошибке? Это бич очень многих игр.
По всей видимости геймдизайнеры упускают такой элемент как вживаемость в игру или другими словами погружение в мир игры.
Ошибка эта появляется когда для какого-то события в игре есть вероятность его срабатывания.
Пример1: Jagged Alliance 2. (1.13)
Надёжность.
В игре, у оружия есть такая характеристика как "надёжность". Предполагается что надёжное оружие заклинивает значительно реже. Вот только выражается это именно в вероятности срабатывания события заклинивания. Так чем же это плохо?
Вроде бы всё правильно. Вероятность заклинивания надёжного ствола 0.1% на каждый выстрел, а ненадёжного 2% (цифры условны). Ненадёжный ствол заклинит быстрее и чаще будет заклинивать. Вот только на деле получается совсем по другому. В тот момент, когда ствол заклинило, игрок нажимает "Загрузить игру" и грузит ближайший сейв. И продолжает стрелять и этого ствола ещё очень, очень долго. Ну а если вдруг его опять заклинило? Мы уже знаем что делать. Сейв/Лоад наш друг.
К чему это приводит? 1. Это приводит к разрушению атмосферы игры. (Любой Сейв/Лоад - это враг атмосферности.)
2. Это приводит к тому, что эта характеристика в игре не играет никакой роли.
- Она сама абсолютна бессмысленна.
- Много времени и сил на её реализацию потрачено в просто впустую.
- А весь баланс, который выстраивался с учётом этой характеристики летит в тар-тарары и мы получаем супер стволы в виде ненадёжных орудий (остальные-то характеристики были завышены, чтобы компенсировать ненадёжность).
Пример2: Jagged Alliance 2.
Вероятность попадания.
В данном случае это довольно сложная формула, но в конце, на выходе мы имеем тот же процент попадания сделанного выстрела.
К чему это приводит, мы уже знаем. Сейв/Лоад, наш великий друг и по совместительству великий враг - убийца игры. Мы просто перезагружаем сейв столько раз, сколько понадобится для удачного попадания по врагу.
Вот только кому будет интересно играть в игру, где каждый выстрел может быть удачным? Всё зависит только от количества перезагрузок.
Естественно геймплей убит напрочь. Не воспользоваться этим игрок не может, потому, что потом на него обрушатся проблемы, а воспользоваться, это значит перезагружать игру порой по 30-40 раз и тратить на этот один выстрел минут 5-10 реального времени.
Как же решаются эти проблемы?
Пример1. Ответ очевиден. Не должно быть единичного процента срабатывания события. Достаточно вместо типа данных "bool" для переменной "заклинивания" использовать тип "byte", где заклинивание будет накапливаться постепенно, и оно уже не сбросится одной загрузкой сейва. А последние шаги можно вообще отвязать от вероятности накопления и начислять счётчиком. Это сделает характеристику "заклинивание" работающей и актуальной. Придётся очень серьёзно учитывать насколько надёжен ствол при его выборе.
Пример2. Конечное решение должно выглядеть так, чтобы каждый сделанный выстрел после загрузки сейва, был идентичен предыдущему.
В JA2 (оигинале) попытались решить эту проблему. Исход выстрела зависел от положения бойцов на карте и ещё каких-то мелочей. И получалось, что после загрузки сейва результат выстрела не менялся, но стоило повернуть другого своего бойца, даже если он совсем на другом конце карты, на пол оборота, или посадить его, или ещё какое-то действие сделать и результат выстрела чудесным образом менялся, при том, что тот кто стреляет, и тот по кому стреляют не совершали вообще никаких движений. И при такой системе, всё повторялось, но только в несколько усложнённом варианте. Делаем выстрел, если не попали, загружаем сейв, поворачиваем другого бойца на 45 градусов, и пробуем опять. Если промах, опять сейв и теперь пробуем повернуть его в другую сторону на 45 градусов. Если промах, на 90 градусов влево, потом вправо, посадить, повторить все повороты сидя, потом сделать шаг в сторону и повторить все повороты и так далее. Расходуем 1-3 очка действия у персонажа который к боевым действиям не имеет отношения, и тем самым добиваемся нужного результата.
Получаем то, что от положения других персонажей выстрел никак не должен зависеть. Как и от перекладывания вещей в рюкзаке.
Конкретные методики реализации может предложить более опытный программист.
Mass Effect.
Вскрытие ящичков.
Существует ручное вскрытие, где нужно сыграть в мини игру и автоматическое, где расходуется какой-то там гель.
Так вот ошибка геймдмзайна в данном случае, это дать игроку всего одну попытку для ручного вскрытия. Дальше остаётся возможность только автоматического вскрытия за ...гель...
Ну и что вы думаете, она действительно единственная? Нет конечно.
Но что приходится делать игроку, чтобы совершить вторую, третью и так далее попытку?
1. Обязательно сохраниться перед ящичком, ->
2. нажать эскейп после неудачной попытки, ->
3. выбрать сейв на который была сохранена игра перед попыткой, ->
4. дождаться загрузки игры.
И что, куча лишних действий и какое-то количество потраченного времени на ожидание загрузки сейва это хороший геймдизайн?
Создание игроку проблем для затыкания ущербности геймплея, это самое плохое, что может придумать геймдизайнер.
Надо или изменять геймплей, или уже оставить как есть, а не чинить игроку препятствий.
Существует ручное вскрытие, где нужно сыграть в мини игру и автоматическое, где расходуется какой-то там гель.
Так вот ошибка геймдмзайна в данном случае, это дать игроку всего одну попытку для ручного вскрытия. Дальше остаётся возможность только автоматического вскрытия за ...гель...
Ну и что вы думаете, она действительно единственная? Нет конечно.
Но что приходится делать игроку, чтобы совершить вторую, третью и так далее попытку?
1. Обязательно сохраниться перед ящичком, ->
2. нажать эскейп после неудачной попытки, ->
3. выбрать сейв на который была сохранена игра перед попыткой, ->
4. дождаться загрузки игры.
И что, куча лишних действий и какое-то количество потраченного времени на ожидание загрузки сейва это хороший геймдизайн?
Создание игроку проблем для затыкания ущербности геймплея, это самое плохое, что может придумать геймдизайнер.
Надо или изменять геймплей, или уже оставить как есть, а не чинить игроку препятствий.
Fallout - Olympus
Способность "Воровство". (Причём, кое где в стремлении исправить геймплейные огрехи оригинала, разработчики Олимпуса только усугубили ситуацию.)
Раньше при воровстве открывался инвентарь NPC и можно было попробовать переложить вещь из его инвентаря в свой. Если вещь перемещалась в инвентарь персонажа, то воровство удалось, если нет, то NPC атаковал персонажа или ворчал. И это пример плохого геймдизайна.
Не было никакого смысла качать навык воровства, ибо даже с начальным уровнем можно было обчистить любые карманы, просто сейв/лоад нужно было делать больше раз.
Разработчики Олимпуса попробовали решить эту проблему добавив ещё одну проверку вероятности. Теперь ещё нужно много раз жать воровство - применить к NPC, пока не откроется инвентарь. То есть теперь мы ещё и инвентарь не с первого раза открываем, а тыкаем, тыкаем, тыкаем... А потом ещё и с инвентарём по той же схеме. Просто издевательство какое-то.
На самом деле проблема решается просто. Для каждого NPC устанавливается порог навыка вовровства, при котором персонаж может заглянуть в карманы и беспрепятственно всё оттуда забрать. Один раз тыкнули на NPC и знаем хватает у нас навыка или нет.
Ну, и конечно, возможность беконечно качаться. Кладём в рюкзак NPC десяток монеток, а потом по одной их крадём. Упёрли одну монетку - 10 опыта. Сохранились, продолжили...
Тоже можно было решить эту проблему просто. Если воровство у этого персонажа возможно, то получили опыт (10), и возможность взять вещи. Повторное заглядывание опыта не даёт.
Раньше при воровстве открывался инвентарь NPC и можно было попробовать переложить вещь из его инвентаря в свой. Если вещь перемещалась в инвентарь персонажа, то воровство удалось, если нет, то NPC атаковал персонажа или ворчал. И это пример плохого геймдизайна.
Не было никакого смысла качать навык воровства, ибо даже с начальным уровнем можно было обчистить любые карманы, просто сейв/лоад нужно было делать больше раз.
Разработчики Олимпуса попробовали решить эту проблему добавив ещё одну проверку вероятности. Теперь ещё нужно много раз жать воровство - применить к NPC, пока не откроется инвентарь. То есть теперь мы ещё и инвентарь не с первого раза открываем, а тыкаем, тыкаем, тыкаем... А потом ещё и с инвентарём по той же схеме. Просто издевательство какое-то.
На самом деле проблема решается просто. Для каждого NPC устанавливается порог навыка вовровства, при котором персонаж может заглянуть в карманы и беспрепятственно всё оттуда забрать. Один раз тыкнули на NPC и знаем хватает у нас навыка или нет.
Ну, и конечно, возможность беконечно качаться. Кладём в рюкзак NPC десяток монеток, а потом по одной их крадём. Упёрли одну монетку - 10 опыта. Сохранились, продолжили...
Тоже можно было решить эту проблему просто. Если воровство у этого персонажа возможно, то получили опыт (10), и возможность взять вещи. Повторное заглядывание опыта не даёт.