You should always use the client API.
gameId = obj.getGuid();
is the correct way to get your ID.
It is the correct way to set an attribute by using
This does set the Attribute on this object. I have a feeling (but I'd have to check with R&D) that the MxObject will keep the hash in sync with the contents of your object. If you try to set an attribute using your method (which is quite... let's say... dirty), the hash is not recalculated and will result in a 'corrupt' Mendix Object, that the Modeler does not accept. (Again, I am not sure, but that's my wild guess).
As Fabian points out, you might not have write permissions.
Lastly, a 560 is a server error. This means you should be able to see a stacktrace in your Modeler Console.
1. Always use the client api
2. Might be, that you don't have write permission on the attributes you want to change? (you can check that with .isReadonlyAttr() )