К сожалению при всех преимуществах UE4, целый ряд направлений не имеет вообще никакой документации даже в оригинале, и очень слабо освещается в фанатских примерах. И очень часто обычно несложные вопросы очень трудно реализовать до того как общая концепция архитектуры не будет понята.
Собстно у меня возник подобный вопрос по написанию клиент-серверных приложений. Инфа по этой теме очень скудная и, что самое главное, почти нет реальных примеров разработки. Скорее только демонстрация технологий.
Сразу скажу - это не вопрос по репликации, RPC и передаче данных. С этим как раз проблем нет. Это вопрос с организацией приложений клиент-сервер и их разработки в UE4.
Опишу примерно эволюцию собственной мысли при разработке приложения по этому направлению.
1. Клиент-сервер в редакторе. Создаем приложение, указываем для него 3 игроков (к примеру). Жмакаем Play, запускается 4 окна. 1 сервер, 3 клиента. Очень удобно и демонстративно когда нам нужно потестировать репликации - но к реальной архитектуре игры это имеет мало отношения. Такое приложение мы можем даже упаковать и запускать в нужном режиме через ключи командной строки - но это не то...
2. Усложняем вариант. Делаем приложение с 2 кнопками на стартовой сцене (запуститься как сервер и подцепиться как клиент). По логике при нажатии первой приложение должно сделать "Browse" на игровую сцену. Другое приложение типа "клиент" при нажатии второй должно сделать "ClientTravel" на серверную карту. С логикой написания тут как бы проблем нет - но сразу возникает вопрос - как такую схему тестировать? UE4 не позволяет дважды запустить приложение, ни PIE Standalone, ни Launch не дают второй запуск, а PIE с количеством игроком больше 1 - делают автоконнект без твоей собственной логики. Нипанятна...
3. Идем дальше. У нас есть проект - мы хотим сразу чтобы потом не грузиться сделать Dedicated Server и клиенты. По архитектуре UE4 - и сервер и клиент у нас всегда один и тот же проект, который просто отрабатывает разные участки кода в зависимости от роли. Допустим мы нарисовали всю внутренюю логику проекта, теперь хотим запустить Dedicated Server и, допустим, клиента для того чтобы отдебажить результат. Вот тут мне уже сложно представить решение. Компилить сервер как "Debug GameServer", но что с клиентом? VS не даст нам откомпилить и запустить этот же проект второй раз когда он уже запущен и работает. Создавать 2 отдельных проекта - сервер и клиент? как это может подружиться с логикой репликации UE4?
Или может надо откомпилить сервер как готовое приложение и запускать его отдельно, а к нему цепляться клиентом откомпиленным в debug через другой target?
НУ то есть в этом месте я совсем путаюсь.
Может есть кто-то у кого есть подобный опыт организации проекта. Описание опыта организации буквально в 10 строчек могло бы сильно сдвинуть меня в области понимания с какой стороны нужно кусать все это...