Developers Community
4.54K subscribers
665 photos
10 videos
3 files
1.76K links
Канал сообщества для разработчиков и всех, кто интересуется новыми технологиям.
____________
Developer Community Chat: @microsoftschool
Админчики: @alexgureev
Download Telegram
Forwarded from GameDev Architecture (Markdown)
Двустороннее взаимодействие с сервером в реалтайме

Обычно такой подход применяют только для синхронных игровых сессий.
Оно и понятно, как по другому-то?

Но существуют разные механики, требующие реалтаймого обновления.
Типичный пример — чат. Игры, в которых социальная составляющая сильна,
вряд ли обойдутся без него.

Сделать чат на REST API можно, но зачем? REST API подразумевает синхронную связь, а сама концепция чата подразумевает асинхронность.

Выход прост — использовать транспорт, поддерживающий двустронний асинхронный обмен сообщениями. Для разрабочика на Unity логично использовать C# и на сервере.

SignalR — довольно известная библиотека от #Microsoft. Предполагается ее использовать с ASP.Net.

К сожалению, Unity все еще на .Net Framework 3.5, что не позволяет использовать SignalR. Но есть порт под Unity.

Если вы используете последние версии Unity, то там есть экспериментальная поддержка .Net Framework 4.6. Поэтому можете попробовать запустить и оригинальную версию.

Работа с SignalR довольно проста:


// setup proxy
HubConnection connection = new HubConnection("http://localhost:58438/");
IHubProxy proxy = connection.CreateProxy("TestHub");

// subscribe to event
proxy.Subscribe("ClientPing").Data += data =>
{
JToken data = data[0] as JToken;
Console.WriteLine("Received push from server: [{0}]}", data["message"].ToString());
};

// start connection
connection.Start();


Больше информации — в официальной доке.

В следующем посте я расскажу какие паттерны можно использовать, имея такой канал общения с сервером.
TikTok and Fitness: The Rise of Wellness Trends on the Platform