Как реализовать асинхронный сервер TCP C#?
Новое поколение создателей "своих 10к ммо серверов" подросло? :) ну ок
Тср или удп выбирается в основном по критерию насколько динамичная будет эта "новая эпичная сага". Если стрелялка, то удп скорость компенсирует качество. Если это "убийца вов, л2" то тср, там важно чтобы действия клиента были доставлены от и к серверу. А затем конечно самое сложное - не бросить это дело через месяц оставаясь без прогресса и наблюдая лаги и глюки. Чтобы сделать игру плавной придется делать адаптивную логику которая будет учитывать задержки сети как на клиенте так и на сервере. Легче всего сделать сначала клиент который будет бегать независимо от сервера, а затем постепенно добавлять туда шаг за шагом контроль со стороны сервера, отточить движение, затем взаимоотношение с миром (удачи с синхронизациец физики), бой итд. 
Вобшем не ты первый, не ты последний. Ждем шедевр. Я если че буду десять тысяч первый игрок ;)
P.S. по теме :) . смотри в сторону архитектуры на основе пакетов и очередей. Только так ты выстроишь масштабируемое взаимоотношение клиент-сервера которое не будет загинаться от 20 одновременных подключений
Наверное вам нужно реализовать сервер на основе UdpClient