Makes sense. In that case, I'd name it something like setWithInviteDictionary, since it's specific to that JSON format.

I also usually prefer the model being able to take care of its own initialization, but I also liked having the service-specific code separated and easily replaced, especially when that initialization code was totally insane. Now that I'm getting real JSON back (instead of having to parse HTML tables), I've been toying with the idea of having a DGS serializer object that was in charge of building these games. I haven't quite made that decision yet, though :-)

For now, I'd prefer this code in DGS.m. While it's nice to have the game responsible for its own creation, it's inconsistent enough with how things are currently being done that I could see it causing confusion. It'll be easier to replace with something better if today's behavior is all in the same place.