Вашим играм не нужна State Machine
Вашим играм не нужна State Machine
11

В такие моменты мы и понимаем, насколько были ленивы, выбрав машину состояний. Ведь у нее квадратичная сложность увеличения количества поведений

Ну это же не совсем так. В данном случае теоретическая сложность не равно практическая сложность. Уж не знаю как у юнитистов, но вообще концепция стейт машины сама по себе не обязывает тебя декларировать переход из каждого состояния в каждое. Переходы можно всё ещё делать но как бы «в сырую» перезаписывая состояние, не описывая никаких специальных переходов. Так что стрелочки – они как бы есть, ведь ты всё ещё можешь делать переход из состояния в состояние. Но стрелочки как бы «невидимые» – потому что переход ты как-либо специально не декларируешь.

В итоге ты получаешь и гибкость, и компактность. У тебя нету квадратичной зависимости.

Но у юнитистов может быть и есть, не удивлюсь если юнитисты ебашут переходы на все случаи жизни – которые им нужны и не нужны, бездумно.

Ну и конечно отмечу, что использовать переходы напрямую перезаписывая состояние, это может быть не совсем по правилам написания стейт машин, и кто-то может даже сказать «говнокод». Ну если говнокод выглядит лучше и работает лучше, то может быть это не говнокод. Плохой программист учится правилам чтобы им следовать. Хороший программист учится правилам чтобы понимать когда их можно, а может быть даже нужно, нарушать.

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

1
Ответить