Роль предварительного отбора

Как уже отмечалось выше, занимаясь предварительным отбором возможных вариантов решений, мы должны помнить о трех аспектах проблемы. Ниже приведены некоторые практические рекомендации, которые моїуг помочь вам не сбиться с правильного пути.
> Контекст. Принимая решения, связанные с контекстом проблемы, часто приходится учитывать архитектуру и техническую реализацию остального программного кода игры. Иными словами, прежде чем искать решение, нужно понять, как работает игровая механика, скрытая за теми или иными интерфейсами. Поскольку игры в подавляющем большинстве случаев имеют иерархическую архитектуру, необходимо представлять, что происходит на более высоких уровнях: с какими переменными мы можем работать напрямую и как можно снизить сложность решения, которое нам предстоит найти?
> Входы. На этой стадии мы выбираем входы, имеюшие отношение к стоящей перед нами задаче. Для этого достаточно часто можно рассматривать проблему с точки зрения человека: какая информация понадобилась бы человеку в подобной ситуации? Альтернативный подход заключается в том, чтобы исходить из номенклатуры переменных, необходимых программисту для решения задачи в программном коде.
> Выходы. К выбору выходов можно применить те же критерии, что и к выбору входов. Различие заключается в том, что выбор выходов, как правило, провести гораздо проще, чем выбор входов, поскольку в подавляющем большинстве случаев декомпозиция проблемы на последовательность примитивных операций — задача тривиальная. Если это не так, значит, мы не до конца разобрались в том, что же мы хотим смоделировать!
Поскольку все три перечисленных компонента взаимосвязаны, мы можем рас-; сматривать их на этой стадии по отдельности, чтобы упростить задачу предварительного отбора вариантов.