TCP: The packets always arrive, and in order.
UDP: Maybe they arrive, or maybe they dont. And they might arrive in the wrong order. Who knows?
UDP is a bit faster, but if you are new to networking I would suggest TCP since it will save you a lot of problems. If you use UDP you will probably end up writing code to make sure the packets arrive in order, and maybe even make sure they arrive at all. (and TCP already do that...)
EDIT: And to answer the question:
In an action game you will probably need every packet, but you usually doesn't have to get them in the right order. If you go the UDP route, add a timestamp to your packet, and make the receiving end ignore packets that have an older timestamp than the last one it accepted.
I would use TCP. If you find/write some code that uses UDP and lets you specify if the packet should arrive in order/at all, or both, then by all means use it.
UDP: Maybe they arrive, or maybe they dont. And they might arrive in the wrong order. Who knows?
UDP is a bit faster, but if you are new to networking I would suggest TCP since it will save you a lot of problems. If you use UDP you will probably end up writing code to make sure the packets arrive in order, and maybe even make sure they arrive at all. (and TCP already do that...)
EDIT: And to answer the question:
In an action game you will probably need every packet, but you usually doesn't have to get them in the right order. If you go the UDP route, add a timestamp to your packet, and make the receiving end ignore packets that have an older timestamp than the last one it accepted.
I would use TCP. If you find/write some code that uses UDP and lets you specify if the packet should arrive in order/at all, or both, then by all means use it.