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

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

Когда и как определить , если это событие произойдет? Если я определяю его будет , как определить , когда это произойдет?

Проблема, которую я вижу, заключается в том, что если вы подсчитаете вероятность сбоя при каждом тике, то есть 5% -ный шанс отказа за галочку , что означает, что у двух тиков есть больше чем 5% шанс - примерно 8%, я считаю. После того, как игра будет тикать 1000 или 1000000 раз, почти наверняка двигатель будет терпеть неудачу (вероятность 100%), когда только предполагается, что это «шанс 5%».

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

Когда мы смотрим на игровые элементы, они никогда не говорят «5% вероятность неудачи за кадр, за минуту, за игру и т. д. ». Что означает «x% шанс» действительно означает и как мы получаем компьютер, чтобы сообщить нам, когда и когда произойдет событие?

4 голоса | спросил codepants 18 Jpm1000000pmWed, 18 Jan 2017 20:35:10 +030017 2017, 20:35:10

2 ответа


1

В игровых предметах их эффекты, как правило, либо постоянны, либо применяются путем использования. Таким образом, это будет 5% -ный сбой при каждом использовании объекта. Таким образом, оружие не будет применяться, пока оно не будет использовано для атаки. Постоянные эффекты редко имеют шансы% неудачи, вместо этого они делают что-то вроде +1 на урон или -20% уклонение. Изменение статистики напрямую без случайности.

Другой вариант, применяемый с использованием или условие, прост. Давайте возьмем пример меча. У этого есть 1% вероятность взлома. Каждый раз, когда он что-то поражает, мы бросаем кубики, вычисляя 1-100, а затем, если это 1, тогда меч ломается.

Что касается времени, вы просто не проверяете, пока не пройдет требуемое время. Поэтому, если у двигателя есть 5% -ный шанс выхода из строя, если он работает в течение X раз, то просто не сверните кости до тех пор, пока не пройдет X времени.

Давайте скажем, что у нас есть космический корабль, и если вы запускаете двигатели с максимальной или максимальной скоростью на уровне 90% в течение 5 минут, есть вероятность 5% взрыва. В течение первых 5 минут программа не сбрасывает кости. По прошествии 5 минут он начинает катить кости каждый тик. Мы просто начинаем подсчитывать, когда они достигают 90% максимальной скорости, и останавливаются, когда они опускаются ниже 90%. Конечно, это открывает эксплойт, который позволяет им опускаться ниже 90%, чтобы сбросить счетчик. Но мы можем обойти это с некоторой кулдауном, возможно, остановив счетчик, в то время как скорость ниже 90% в течение этого периода.

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

Честно говоря, 5% неудач неоднозначно и зависит от того, как разработчик разработал систему. Это действительно способ сообщить пользователю, что есть шанс, что может произойти что-то плохое, и они могут сказать, что 2% -ный механизм отказа лучше, чем 5%. Средний пользователь действительно не должен знать, что игра проверяет это только раз в минуту, или когда они меняют скорость или направление. И для специального пользователя, у которого есть электронные таблицы, детализирующие каждый крошечный шанс или разницу между двигателями, вы можете похоронить его в документации или позволить им понять это самостоятельно.

ответил Imperial Justinian 18 Jpm1000000pmWed, 18 Jan 2017 21:12:39 +030017 2017, 21:12:39
0

5% вероятность неудачи очень высока. Я предполагаю, что в вашем симуляторе дольше летит полет, должно появиться больше разломов. Существует вероятность смещения. Яркий бросок монеты имеет 50% шанс головы или 1: 1 голова: орел. Если вы делаете 100 бросков, сколько голов вы видели? Может быть 0 или 100 или что-то среднее, редко 50:50. N. Талеб Более научное чтение Это та же самая проблема, с которой вы сталкиваетесь.

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

ответил Karel Tejnora 18 Jpm1000000pmWed, 18 Jan 2017 21:15:10 +030017 2017, 21:15:10

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132