UDP vs TCP
The main difference between TCP and UDP, as this programmer discovered, relates to quality of realtime service.<p>Times to use UDP over TCP<p><pre><code>  * When you need the lowest latency
  * When LATE data is worse than GAPS (loss of) in data.
  * When you want to implement your own form of error correction to handle late/missing/mangled data.
</code></pre>
TCP is best when<p><pre><code>  * You need all of the data to arrive, period.
  * You want to automatically make a rough best estimate use of the available connection for /rate/ of transfer.
</code></pre>
For a videogame, having a general control channel to the co-ordination server in TCP is fine.  Having interactive asset downloads (level setup) over TCP is fine.  Interactive player movements /probably/ should be UDP.  Very likely with a mix of forward error correction and major snapshot syncs for critical data (moving entity absolute location, etc).