This this demo, I've also been working on improved AI movement. In the demo, they are brain dead and will get stuck on the walls all the time. Now I've implemented A* pathfinding which lets them get from point A to point B easily enough, but it's fairly expensive and inelegant. Since the A* is done on the map grid while movement is continuous, they will walk an "L" shape instead of just taking the diagonal, and A* is a little too expensive to have all of them recalculate every frame, so their targets can fall behind the player's actual location. I'm working on some improvements to this. First, the enemies now scan ahead, looking for the furthest tile on the A* path which can be reached by straight-line movement. Next, I will be implementing a direct line-of-sight test on the player to see if an enemy can move directly toward the player prior to performing any A* search. Lastly, I'll need a more intelligent means of deciding when to recalculate A* paths since currently it's done randomly. Also, handling the new diagonal wall tiles for A* is tricky and currently they are simply considered entirely blocking.
I am also looking at ways of providing Mac and Linux distributions of this. I might give pyInstaller a try for a future release.