About Python, I asked someone (a tech admin in a forum) who uses Python very much, and is familiar with game programming. Here's his reply :
Python is a slow language? For what? Server-side or game engines? Both are completely incorrect.
For game engines, all Python does is wrap into lower-level languages written in C and C++, so the claim of Python being "slow" is false for game engines. In this way, your game loop is going to mostly be executing in low-level code that is remarkably fast. Python's overhead is small. If you have an AI routine or something processor intensive with Python, then you can simply rewrite that specific function into C or C++ and call it from Python. This is what Python excels at, providing powerful high level interfaces to low level code.
Now, for Python being slow for a game server, that is completely false as well. In fact, this is even worse. Here's the thing. What do game servers do? They write to a database, yes? That is an IO itensive task, so your IO is actually going to be the bottleneck here. You can resolve this IO bottleneck with greenlets, events, or some other massively concurrent approach, then your code flies. How many requests per second are they looking to do? Low level languages are only useful when you need to push into the 100,000s of requests per second. I'm sorry, but... This is not a level that most games can get to. Even then, Python could handle that load just fine - add hardware.
Finally... Link this list the next time you see a debate like that:
Please, scroll down to see the games that use Python. Of particular note is Eve Online, which uses stackless python to power it's massively multiplayer online servers.
With that I decide to use Python. I'm more familiar with it after all.
I don't know the most optimal way of doing movement/collision detection in a multiplayer game over the internet, so maybe someone can chime in. Movement wasn't as big of a deal for me, because my game is LAN only, and 4 players maximum. Players tell the server when they "start walking", "stop walking", "start Turning", "stop Turning". That way the client updates themselves and there is a lot less packets being sent just for movement. Most of the time, users will envoke auto-run, or be standing still in combat. But I also send absolute coordnates (from the server) where peoples positions are. I do this at a realitivly fast rate so if things get out of sync, there is a ruberbanding effect. But this usually doesn't happen very much at all.
I'm sure there is a better way to do this. Since my game has no "server" (one of the players hosts a session), My Collision detection was done on the client, and told the server about running into a building or a tree, etc.
That sounds good actually. If the collision detection is done in the server, there will be weird glitches due to lag right? I think the only risk of this is physic hack, which I don't really care about since it's just a personal project. Or am I wrong? I think that's the only disadvantage.