It's weird that you can't just click the game to launch it, what are you using for this? A file manager?
I'm using Dolphin, the KDE file manager. Different file managers handle working directories differently. I'm pretty sure Dolphin considers the active directory at the time the X server was started to be the working directory. In my case, this would be my home directory, but I wouldn't count on it. KDE is common enough that this will be problem for a lot of people.
The usual solution is to provide a launcher script that sets the directory and then actually launches the binary. You should be able to find a way to do it without too much trouble.
In my own projects, I have a function that locates the binary and sets the directory based on argv[0], but this relies on your program actually launching, which you currently can't do because you're shipping libraries.
Yeah, you can't run it from outside it's directory because of all the libs I provide. Do you know if there is a fix for it?
The launcher script mentioned above will fix this too.
I tried doing vsync many times with varying results, but even when it throttled the framerate, it never reduced the cpu-time eaten by the game. Do you know of any fix for that?
It depends very much on your thread structure, especially considering that you're doing networking. I usually just put the main thread to sleep for a certain amount of time each frame. This may be more complex depending on your networking code. If you're doing non-blocking socket IO and continually polling, then that's the code that's sucking up my CPU time.