Я создаю игру, которая позволяет игроку контролировать «поток мощности» между 10 контурами.Mathmatics для балансировки «нескольких цепей»
Каждая из 10 схем настраивается индивидуально, а общая сумма должна всегда равняться 100%.
Например, прекрасно сбалансированная ситуация была бы все 10 схемы на 10% (10х10 = 100)
Edit 2: Если то, что я пытаюсь сделать здесь знают, как другие, чем «балансирование» вещей, Прошу прокомментировать, и я буду исследовать их.
Теперь плеер также имеет возможность блокировки цепей, так что уровень мощности не может быть изменен другими цепями, но он все равно может быть изменен напрямую.
EDIT 3: Иногда запрашиваемая сумма не может быть возможно достичь (например, пример 3 и 6) в этих ситуациях ближайший возможный результат будет результат
EDIT: Видя, что мой пост получает вниз голоса я буду включать то, что я уже пытался
- Сумма изменения разделенного схемами, запрашивающих изменение добавление к цепям запрашивающих изменения и сняты цепи не меняется - проблема с этим методом был негативные и позитивные изменения на одна и та же время может уравновешиваться и приводить к «тупиковым» ситуациям, в которых не происходит никаких изменений.
- Циклическая цепь путем добавления и принятия по необходимости. Проблема с этим методом заключается в том, что он редко сбалансирован правильно.
- Применять вычитания и добавления сначала, а затем сбалансировать все (таким образом, сумма становится равной 100), проблема в том, что мощность будет заканчиваться там, где она не должна быть с цепями, которые должны быть в 0, заканчиваются небольшими количествами мощности.
Чтобы упростить мой вопрос, может работать только с 5 схемами.
Мне нужна помощь в разработке математики для расчета следующего. После 20 или около того попыток я думаю, что я слишком усложняю это, поскольку я продолжаю заканчивать 200 строк сценариев или это действительно очень сложно?
Пример 1: Добавление Пример
20 20 20 20 20 Start values
+10 +10 0 0 0 Change
30 30 3.3 3.3 3.3 After first iteration
50 50 0 0 0 After x iterations (eg key held down)
Пример 2: Вычитание Пример
20 20 20 20 20 Start values
-10 -10 0 0 0 Change
10 10 26.6 26.6 26.6 After first iteration
0 0 33.3 33.3 33.3 After x iterations (eg key held down)
Пример 3: Блокировка + Сложение (L заблокирован)
L
2.5 90 2.5 2.5 2.5 Start values
0 0 +50 0 0 Change
0 90 10 0 0 After first iteration
0 90 10 0 0 After x iterations (eg key held down)
Пример 4: Блокировка + вычитание (L заблокировано)
L
2.5 90 2.5 2.5 2.5 Start values
0 -10 0 0 0 Change
5 80 5 5 5 After first iteration
25 0 25 25 25 After x iterations (eg key held down)
Пример 5: Мульти Lock + Вычитание (L заблокирован)
L L
2.5 90 2.5 2.5 2.5 Start values
0 -10 0 0 0 Change
5.8 80 2.5 5.8 5.8 After first iteration
32.5 0 2.5 32.5 32.5 After x iterations (eg key held down)
Пример 6: Балансирование изменения от несбалансированного старта (Это математика может быть немного выключена)
2.5 90 2.5 2.5 2.5 Start values
+10 +10 +10 0 0 Change
16.7 66.6 16.7 0 0 After first iteration
33.3 33.3 33.3 0 0 After x iterations (eg key held down)
Можете ли вы объяснить, чего вы хотите достичь? Я не могу понять ваши примеры. Например. напр. 3, третья колонка имеет 10 после добавления от 50 до 2,5. Почему это?Сначала я думал, что вы хотите разрешить игроку менять любую схему и распределять изменения одинаково на остальных цепях. Но, похоже, это не так. –
Привет, Нико, спасибо за ответ. В третьем примере игрок попытался добавить 50 в 3-ю схему, однако вторая схема заблокирована и в настоящее время имеет 90%. Поскольку он заблокирован, 3-я схема может собирать в общей сложности 10% от разблокированных цепей, поскольку от заблокированной цепи ее не разрешается. Вы правы в том, что хотите распределить оставшиеся одинаково по всем схемам, но это нужно делать с ограничением блокировок. Я отредактирую свое сообщение, чтобы объяснить, что запрошенные изменения могут быть не всегда возможны и что они могут быть ограничены в этих случаях. –