Magatino, Ну, во-первых массивы, векторы и циклы... не?

Во-вторых в Art Of War 2 движок "массивный", то есть, замечал ведь, что юниты там двигаются строго по клеточкам? Ну вот, в этом всё и дело, юниты там двигаются по массиву чисел(правда одномерный он или двухмерный я не знаю, хотя это не важно, принцип один и тот же, гг), и столкновения там проверяются через массив, например, стоит юнит в самом левом верхнем углу карты, в массиве это нулевой индекс и его значение 0(а положение юнита в массиве хранится в отдельной переменной), а справа от юнита расположен допустим непроходимый камень, в массиве это уже первый индекс(не забываем, индексы в массивах нумеруются с нуля) и его значение 1. И когда мы хотим юнит подвинуть вправо, то проверяется, есть ли в будущей позиции юнита препятствие? Если есть, то просто не двигаем юнита, если нет то двигаем))

таким образом и проверяется столкновение.
Ну, а впрочем в "немассивных" играх, а "свободных", так сказать, столкновение проверяется как раз через сравнение координат ибо по-другому больше никак не сделать)