1. Доработка системы задач: класс Task, новые задачи, проработка старых; 2. Доработка движка и приведение его структуры в порядок: - вынос всех функций карты в карту, объекты знают свою позицию и им этого хватит. взаимодействия с картой и другими объектами должно происходить только в методе движения, остальные методы должны абстрагироваться от карты; - вынос рендера в класс Render. Карта занимается только своими клеткам. Метод draw_map должен только готовить текстуру для Render, который будет ее рисовать; - мини-движок поиска пути. class Pathfinder, который хранит в себе кэши, выбирает оптимальный способ поиска пути для конкретной ситуации. Для этого нужно ещё раз протестировать все способы, привести к единообразию интерфейсов. Задокументировать. Возможно понадобится вынос поиска пути в отдельный движок на другом языке и многопоточностью; - привести в порядок Main Loop; - вынести хранение и обработку объектов из карты в ObjectManager; - сделать фундамент для MapManager, пока не развивать, но надо исходить из того что одновременно может рендериться несколько карт; 3. Оптимизация. - проверяем, есть ли объект в клетке только перед непосредственным перемещением в ячейку Cells, а не каждый calc_step; + (исправить визуальный баг, см комменты calc_step) - перестаём учитывать объекты в алгоритме поиска пути; - (попробовать ещё раз, подумать) - заранее передаем в алгоритм карту препятствий; +