20
Ноя
2020

Обработка препятствий

Самая страшная подпрограмма в принце — обработка препятствий. Изначально написал ее Евгений, когда обучал принца бегать по лабиринту. Сначала бегать, потом прыгать, потом слезать-залезать и так далее. На каждом этапе добавлялось проверок на то, какие где расположены объекты, можно ли за них зацепиться и надо ли… Потом в эту подпрограмму (OBST) уже я начал добавлять всякие проверки. Потом вдруг выяснилось, что некоторые движения невозможно реализовать, так как они были изначально неправильно попилены на части. Пришлось пилить дополнительно. Добавлять проверок. Женя уже тогда называл все это не иначе чем «спагетти». Да, страшное там дело в итоге получилось. И самое фиговое, что весь этот макаронный трешак вызывается на КАЖДОМ кадре игры, так как в любой момент принц может провалиться, напороться на стену и т.д. А значит, это все дает нихилый вклад в пожирание быстродействия. Пару раз я уже пытался оптимизировать OBSTacle, но там тронешь одно — рушится все )) Принц начинает сходить с ума, прыгать внутрь стен, проваливается в ПЗУ… Отвратительно себя ведет.

Но пришла мне в голову идея, как все это разом упростить и ускорить. Пока что идея мне нравится, посмотрим, что получится. А то бывает, что красивая идея на самом деле работает медленнее, чем миллион проверок, которые на самом деле срабатывают далеко не все и не всегда и в итоге работают быстрее 🙂

Для начала я решил нарисовать блок-схему имеющейся системы обработки препятствий. Рисовал часа два.

Вот что получилось:

Влезло почти все, что было в исходнике OBST1. Я порадовался. А потом вспомнил, что есть еще файл OBST2…. Рисовать его уже негде, так что придется обойтись тем, что есть.

Итак, завтра я полностью сломаю Принца 🙂 Если заработает новая версия и она будет быстрая, это будет круто. Если же круто не будет — придется вернуть старые спагетти.

 

Share

You may also like...

2 комментария

  1. YRabbit:

    Эта бок схема — ужас, летящий на крыльях ночи:)
    Если перевнуть всё с ног на голову и вместо «Принц бежит вправо, проверить что там» и заставить саму обстановку реагировать… «В меня вбегает Принц, что ему вернуть?» 🙂

Добавить комментарий

Ваш адрес email не будет опубликован.