I'm uncertain about some of the design decisions in GameKit, with regard to games. For example, GameKit allows you to transparently send data from one peer to another, even if they are not connected (it will be routed through the host or other connected peers). While this is a nice overlay network feature, it is in general not required for games and can easily lead to high latencies and other problems, especially if the programmer is not aware of and careful to avoid it.
It's going to be interesting to compare the performance of GameKit versus a native TCP/UDP based approach. I'm developing such an interface at the moment in parallel for one of our next Limbic Software games, and hope to be able to give some benchmarks soon.
Back to coding.