Войти
Unreal EngineФорумBlueprints

Проблема с взаимодействием клиент-сервер

#0
(Правка: 14 апр. 2020, 8:19) 22:36, 13 апр. 2020

Здравствуйте, я тут решил попробовать создать мультиплеерные шашки, заодно и потренироваться с блупринтами. Но возникла проблема, как я понимаю, с передачей информации с клиента на сервер.
В самой игре игроки просто перетягивают мышкой фигурки по полю, без наворотов. С перемещением фигурок разобрался, все работало. Добавив события для сервера и мультикаст столкнулся с тем, что на сервере перемещать фигуры можно и это видно всем, а вот клиенты сначала просто перемещали фигуры только у себя, а теперь у них перемещения не работают совсем. Сначала подумал, что дело в блупринт интерфейсах, пробовал переписать все с кастами, но там такая же проблема. Понимаю, что похоже сделал ошибку где-то во взаимодействиях клиента и сервера, но все никак не пойму как по-правильному все это сделать, хелпаните пожалуйста

Вот таким образом у меня работает логика в блупринте игрока

nizgi_Player_1 | Проблема с взаимодействием клиент-сервер
nizgi_Player_2 | Проблема с взаимодействием клиент-сервер

Вот такая логика в классе фигурок, передаю сначала на сервер, а потом мультикастом всем

nizgi_Figure_1 | Проблема с взаимодействием клиент-сервер
nizgi_Figure_2 | Проблема с взаимодействием клиент-сервер

Ну и потом на евент тике, если проходят условия фигура принимает координаты зажатой мыши.


#1
(Правка: 1:59) 1:52, 18 апр. 2020

Не эксперт, но какие проблемы я вижу:

1. При клике, вы не отдаете координаты, чтобы сервер уже всем отсылал необходимые перемещения.
Вместо этого, сервер будет брать Player Controller 0 (всегда) и брать его координаты нажатия, когда мне кажется, что сервер и в помине не знает об мышке.
2. Если эти объекты расположены уже во время загрузки уровня, а не генерируются кодом, то лучше всего установить для такого актера Always Relevant, иначе, если сервер первее загрузится, и клиент не успеет, то сервер и клиент не будут знать друг о друге. С Always Relevant, вы гарантируете, что связь будет установлена (по край ней мере, без отказно работает)
3. Replication Movement не всегда работает (были какие-то косяки). По опыту, Replication Movement - прекрасно работает, с отключенным Net Load On Client. То-есть, если вы не создаете интерактивный 3д мир с коллизиями или актер будет просто каким-то фоном, то можете смело отключать Net Load On Client и включать Replication Movement. А движения скорее всего интерполируются.
Иначе, лучше реализовывайте перемещение фигур только у клиентов. А на сервере уже сразу можете выставлять в массиве, на каких ячейках шашки.

Unreal EngineФорумBlueprints