Страница 1 из 1

Физика на сервере и отдельные локации в UNet

СообщениеДобавлено: 05 июн 2017, 12:22
siriusspark
Привет всем.

В процессе написания авторитарного сервера на UNet LLAPI (низкоуровневой UNet-архитектуре) возникла пара вопросов.

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

И теперь одно но! Это для одной локации. А когда локаций несколько? Как тогда просчитывать физику одновременно для всех, точнее где? Сцена ведь на сервере одна загружена, или я чего то не знаю или не понимаю? Объединять на севере все локации в одну? Или запускать отдельную копию сервера для каждой из локаций? Кто знает и может подсказать как оно делается?

Re: Физика на сервере и отдельные локации в UNet

СообщениеДобавлено: 05 июн 2017, 16:11
IDoNotExist
siriusspark писал(а):Или запускать отдельную копию сервера для каждой из локаций? Кто знает и может подсказать как оно делается?

"Оно" обычно на юнити не делается.

Re: Физика на сервере и отдельные локации в UNet

СообщениеДобавлено: 05 июн 2017, 23:06
siriusspark
Почему ж нет? Низкоуровневый API UNet'а вполне позволяет написать свой грамотный авторитарный сервер. Ну и собственно, если даже и нет, какие у вас предложения?

Re: Физика на сервере и отдельные локации в UNet

СообщениеДобавлено: 06 июн 2017, 00:40
Ert Donuell
Сцена может подгружать соседние. На этой сцене Вы двигаете коллайдер. Коллайдеры объектов с соседних сцен двигаются вручную, по переданнм пакетам. Так, скажем, ваш игрок не пройдёт сквозь игрока с соседней сцены и наоборот. При пересечении границы, разделяющей сцены, игрок перекидывается на новую сцену, и теперь она им управляет.

Re: Физика на сервере и отдельные локации в UNet

СообщениеДобавлено: 06 июн 2017, 05:13
Woolf
Низкоуровневый API UNet'а вполне позволяет написать свой грамотный авторитарный сервер


На одном потоке? Вы шутите?

Re: Физика на сервере и отдельные локации в UNet

СообщениеДобавлено: 06 июн 2017, 09:44
siriusspark
Ну хорошо, а что вы предлагаете? Были мысли в сторону node.js, но к нему не так то просто прикрутить физику.

Re: Физика на сервере и отдельные локации в UNet

СообщениеДобавлено: 06 июн 2017, 09:53
IDoNotExist
siriusspark писал(а):Ну хорошо, а что вы предлагаете? Были мысли в сторону node.js, но к нему не так то просто прикрутить физику.

Зачем вам физика на сервере?

Re: Физика на сервере и отдельные локации в UNet

СообщениеДобавлено: 06 июн 2017, 12:10
maksimov
siriusspark писал(а):Все верно?

Да.

siriusspark писал(а):И теперь одно но! Это для одной локации. А когда локаций несколько?

Тогда запускайте для каждой локации по процессу, который будет выступать в роли "мастер-клиента", и пишите "лобби-сервер", отвечающий за коннект, авторизацию и матчмэкинг.

siriusspark писал(а):Или запускать отдельную копию сервера для каждой из локаций?


siriusspark писал(а):Кто знает и может подсказать как оно делается?

Unity3d - это инструмент для разработки клиентского приложения. Поэтому, как правило, "серверную физику" просчитывают на одном из клиентов (мастер-клиенте).

siriusspark писал(а):Ну хорошо, а что вы предлагаете?

Всё упирается в вопрос, что вы хотите получить в результате. Для разных целей подходят разные решения.

Вот тут хорошо описаны все возможные подходы по реализации физики на авторитарном сервере:
https://doc.photonengine.com/en/onpremi ... ive-server

Re: Физика на сервере и отдельные локации в UNet

СообщениеДобавлено: 06 июн 2017, 20:47
siriusspark
IDoNotExist писал(а):Зачем вам физика на сервере?


Затем что у меня онлайн гоночная игра с продвинутой физикой авто. Неохота чтобы из-за возможных различий просчета физики на разных клиентах победа в гонке могла достаться не тому кто на самом деле победил и всякое такое.