UDP - это правильно, не так хорошо как SCTP конечно, но вполне неплохо. Однако, вам придётся реализовывать какой-нибудь алгоритм управления потоком (см
https://en.wikipedia.org/wiki/Network_congestion), что может быть непросто осилить.
С другой стороны, если вы действительно будете использовать возможности UE4 на клиенте - то писать придётся заметно меньше, так как там уже есть много чего - нужно будет просто использовать код.
Использовать файлы для хранения данных не рекомендую категорически - не пытайтесь изобрести свою базу данных, а именно это вы и собираетесь сделать. Взаимодействие с базой из анриала напрямую делать также не рекомендую, в силу того, что с таким решением могут возникнуть сложности при скейле под нагрузками.
Для хранения информации о персонажах и подобных вещах хорошо бы иметь отдельный слой архитектуры, желательно с формализованным и строгим API. При таком подходе можно легко организовать унифицированное взаимодействие различных подсистем вашей игры (включая и сами сервера игрового мира).