Войти
UnityФорумСеть

Вопрос по сокетам c#.

#0
3:22, 12 мая 2020

Доброго времени суток. Пробую написать свой сервер на c#, используя Socket, протокол TCP для движка Unity. Хочу попробовать создать приложение, которое будет отвечать за логику происходящего на сцене. Можно ли через приложение Winforms или WPF управлять логикой сервера? Можно ли через это приложение управлять объектами GameObject и их наследниками, коллизией, физикой и т.п.?


#1
3:35, 12 мая 2020

Конечно)
1. В Winforms при старте приложения открываете "слушающий" сокет.
2. На каждое принятое соединение создаете "сессию". сессии лежат в IList/IDictionary.
3. Рисуете табличку, в которой каждая строка - сессия из п2.
4. При клике на сессию рисуете форму с любыми кнопками/филдами на ваш вкус, клик по которым будет отсылать команды клиенту, а сообщения с клиента рендерить здесь же удобным способом
5. В клиенте соответственно сокет обращается к серверу, отправляет ему состояние на ваш вкус, а также принимает и исполняет команды вроде манипуляции GameObject  и т.п.

Бинарный протокол сходу пилить не стоит, т.к. муторно дебажить. Лучше JSON какойнить. Сериализаторы JSON, мэпящие его на классы через рефлекшн есть на гитхзабе.

Можно конечно заюзать готовые решения типа фотона или других, которых много на гитхабе, но вам же интересно самому разобраться?

#2
4:28, 12 мая 2020

kkolyan
Спасибо за развернутый ответ. Подскажите, правильно понимаю, что логика класса GameObject прописана в самом классе? Т.е. создаю два объекта в приложении, прикрепляю им коллизии и задав прямо в приложении координаты могу получить срабатывание события "столкновение"?

UnityФорумСеть

Тема в архиве.