sinon, il existe plein de variantes pour tester les collisions :
je te conseille FORTEMENT ( en 2d et 3d) de garder les boites englobantes AABB ( de ne pas les pencher en fait)
tester si 2 rectangles se touchent est tres facile.
Pour les décors, ça marche a peu pres pareil, sauf que des optimisations sont souvent mises en place, pour éviter, a chaque frame, de tester la collision entre ton gars, et TOUS les murs du monde 
il y a la collision Octree qui est bien, la BSPtree qui est un peu mieux.
Mais ce que je te conseille, et qui est tout aussi bien ( qui utilise un peu + de mémoire mais bon...) c´est un Voxel.