Moi je trouve ton projet tres intéressant.
Pour ce qui est de la détection de collisions, tout dépend de la façon dont tu stockes ta map en mémoire.
En théorie, ça devrait etre un grand tableau 2D, ou chaque élément du tableau est le "type" de la case.
Le principe est celui du tilemapping (ce qu´emploie RPG Maker d´ailleurs), a savoir que ce ne sont que des carreaux régulierement placés les uns a coté des autres.
Le grand tableau dont je te parle stocke le type de chaque carreau.
A partir de la, si tu t´organises bien, il est facile de calculer les collisions, tout simplement en regardant sur quel carreau est ton perso, en en récupérant le type, et en disant que - par exemple - le type 23 est un arbre, et que ce type est un type "mur".
J´ai un exemple de petit rejeton appelé "promenade" ou tu te ballades avec un charset RPG maker, dans un tout petit monde fait de murs. La source est fournie.
Regarde ma carte, mon site, mon tuto C++, rubrique "§ 2.A.2 : promenade"