refactored the client into 3 separate process: the main game loop (primarily main.py and world_proxy.py), the terrain loader to handle terrain loading and manipulation (world_loader.py) and a server connection (basically a dumb pipe to send message between client/loader and the server (server.py)