Какой вариант разделения ответственности лучше?

Доброго времени суток. Такая ситуация: есть некое устройство в игре, которое может потреблять некую мощность и генератор, который может ее производить. Уровень потребления может меняться от min до max и 0 (выкл), есть управление из GUI, например.
Устройству поступила команда работать на 20 МВт, а доступно от генератора только 15МВт. Есть два варианта действий:
  • Устройство выбросит исключение. Значит, условный интерфейс должен самостоятельно проверять достаток энергии или по крайней мере "спросить" у распределителя мощности, а хватит ли, и если да, то дать юзеру сдвинуть ползунок подальше.
  • Устройство автоматически избежит перегрузки и поставит себе максимально возможное питание, в данном случае 15МВт, ну и какое-нибудь событие PowerLevelChanged вызовет, конечно. GUI по этому событию обновится, в результате сдвинуть ползунок дальше игрок не сможет - его будет отбрасывать назад.


Аналогично и с вкл/выкл - можно просто не включать, если доступная мощность меньше min, а можно выкинуть исключение "чего включаешь, мощи нет".

В проекте возникла путаница этих двух подходов - в одном месте кидаю исключение, в другом "отмалчиваюсь" - а как лучше с точки зрения принципов проектирования и т.д.? Сам склоняюсь ко второму подходу, т.к. он кажется проще и лаконичнее (например, GUI будет "самобалансироваться" без всяких дополнительных проверок с его стороны), но стало интересно, как люди делают.
  • Вопрос задан
  • 144 просмотра
Решения вопроса 1
Nekto_Habr
@Nekto_Habr
Чат дизайнеров: https://t.me/figma_life
Зависит от типа игры. Если это экономическая стратегия, с акцентом на управление ресурсами И электричество один из учитываемых по количеству ресурсов, - то всегда нужно давать пользователю выбор, как им распорядиться, никакой автоматики. Если количество электричества не учитывается - можно устроить полную автоматику, чтобы устройство само им распоряжалось. Как пример, игра PlanetBase - нужно поддерживать колонию на чужой планете и строить в том числе электрогенераторы и электронакопители. Пользователь может отключать потребителей, и это всё, что он может делать - если электричества начнет не хватать, то подключенные потребители сразу обесточиваются, а когда генераторы возобновляют работу - все подключенные потребители автоматически начинают сосать энергию из аккумуляторов. Сделано так, потому что электричество не учитывается как ресурс (учитываются разные продукты, руда, металл, пластик, то есть строй-материалы, но не электричество)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@lega
Если "компромисс" допустим, то 2-й вариант, если нет, то 1-й. Вообщем зависит от задачи.
Ответ написан
Комментировать
AtomKrieg
@AtomKrieg
Давай я поищу в Google за тебя
Делать вам надо так как прикажет геймдизайнер
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы