Perfectionism: std::vector<Position> _trajectory as field of class TileEngine

Every time, when you fill empty vector, you get many reallocations.
I.e. after 100 push_back() (just 6 tiles) you get 13 reallocations.
Therefore best solution is use reserve(). Best use reserve() is one time reserve().
When you move units, performance will be increased by 5-10%.

Every time, when you fill empty vector, dies one kitty.