Backend in Python

While I was happy to use Playcraft for browser-side rendering of the game, I wanted something solid, fast and stable to maintain the current state of the game on the server end. I realized it didn't have to be JS-based and started looking into asynchronous Python and WebSockets support. I quickly landed on Twisted for event-driven, asynchronous engine and Autobahn completed the picture with easy but comprehensive support for the WebSockets protocol.

I'll also need something to open and process maps in TMX format, currently my eyes are on pytmxlib which does just that and nothing else. There are more commonly used alternatives, however these usually come tightly coupled with a rendering engine such as pygame which doesn't make sense as I want my server to be capable of running headless in production. For development however, a very simple method of picturing current state of the game will be useful - pygame might be just what I need for a debug renderer.

Final bit I need is a physics/collisions engine. Playcraft wraps around Box2d and even though at this stage I'm not sure if I'm going to use Playcrafts built-in physics at all or delegate all physics-related tasks to the backed, ideally I would use the same engine on both ends. Luckily there is a python SWIG-based wrapper for python which will offer high-performance physics engine and collision detection for the Archers! Game