Видео недоступно для предпросмотра
Смотреть в Telegram
Шаг 13. Декомпозиция
На этой неделе отвлёкся на пару сайд-проектов, поэтому игрой занимался меньше, чем планировал. Тем не менее сделал важную часть - механизм комбинаций для розыгрыша карт. И по ходу словил хороший урок.
Задача была такая: написать тулзу, чтобы в движке я мог просто выбрать нужную комбинацию для карты, а система сама создавала логику и контролировала размещение кубиков.
Честно - делать это не хотелось. Комбинаций много, у каждой свои правила, ограничения и нюансы. Одно «идеальное» решение не складывалось в голове, из-за чего я всё больше откладывал задачу.
В какой-то момент понял, что пытаюсь проглотить слишком большую задачу целиком. В таком режиме легко ходить по кругу и раз за разом наступать на скрытые грабли.
Выход оказался простым - декомпозиция.
Я перестал думать о системе целиком и пошёл маленькими шагами:
1. Составил список всех комбинаций
2. Выбрал самые читаемые
3. Разбил их на логические группы
4. Запрограммировал одну простейшую комбинацию из самой простой группы
И внезапно всё стало на свои места. Реализация комбинаций начала складываться как пазл — одна за другой, без сопротивления.
В итоге сформулировал для себя подход, которым теперь буду пользоваться постоянно:
1. Разделить большую задачу на сферы
2. Выбрать самую простую
3. Разбить её на элементы
4. Реализовать самый простой элемент
Возможно, это очевидная и давно известная техника. Но когда применяешь её на практике, а не читаешь в умных книжках, ощущается совсем по-другому.
Отдельно всё усложнялось тем, что я сильно заморачиваюсь с UX. Какие решения по интерфейсу и взаимодействию я в итоге принял - расскажу на неделе.
На этой неделе отвлёкся на пару сайд-проектов, поэтому игрой занимался меньше, чем планировал. Тем не менее сделал важную часть - механизм комбинаций для розыгрыша карт. И по ходу словил хороший урок.
Задача была такая: написать тулзу, чтобы в движке я мог просто выбрать нужную комбинацию для карты, а система сама создавала логику и контролировала размещение кубиков.
Честно - делать это не хотелось. Комбинаций много, у каждой свои правила, ограничения и нюансы. Одно «идеальное» решение не складывалось в голове, из-за чего я всё больше откладывал задачу.
В какой-то момент понял, что пытаюсь проглотить слишком большую задачу целиком. В таком режиме легко ходить по кругу и раз за разом наступать на скрытые грабли.
Выход оказался простым - декомпозиция.
Я перестал думать о системе целиком и пошёл маленькими шагами:
1. Составил список всех комбинаций
2. Выбрал самые читаемые
3. Разбил их на логические группы
4. Запрограммировал одну простейшую комбинацию из самой простой группы
И внезапно всё стало на свои места. Реализация комбинаций начала складываться как пазл — одна за другой, без сопротивления.
В итоге сформулировал для себя подход, которым теперь буду пользоваться постоянно:
1. Разделить большую задачу на сферы
2. Выбрать самую простую
3. Разбить её на элементы
4. Реализовать самый простой элемент
Возможно, это очевидная и давно известная техника. Но когда применяешь её на практике, а не читаешь в умных книжках, ощущается совсем по-другому.
Отдельно всё усложнялось тем, что я сильно заморачиваюсь с UX. Какие решения по интерфейсу и взаимодействию я в итоге принял - расскажу на неделе.