GAMEDEV_ARCHITECTURE Telegram 59
Двустороннее взаимодействие с сервером в реалтайме

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

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

Сделать чат на 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();


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

В следующем посте я расскажу какие паттерны можно использовать, имея такой канал общения с сервером.



tgoop.com/gamedev_architecture/59
Create:
Last Update:

Двустороннее взаимодействие с сервером в реалтайме

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

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

Сделать чат на 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();


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

В следующем посте я расскажу какие паттерны можно использовать, имея такой канал общения с сервером.

BY GameDev Architecture




Share with your friend now:
tgoop.com/gamedev_architecture/59

View MORE
Open in Telegram


Telegram News

Date: |

Read now Earlier, crypto enthusiasts had created a self-described “meme app” dubbed “gm” app wherein users would greet each other with “gm” or “good morning” messages. However, in September 2021, the gm app was down after a hacker reportedly gained access to the user data. Private channels are only accessible to subscribers and don’t appear in public searches. To join a private channel, you need to receive a link from the owner (administrator). A private channel is an excellent solution for companies and teams. You can also use this type of channel to write down personal notes, reflections, etc. By the way, you can make your private channel public at any moment. Ng was convicted in April for conspiracy to incite a riot, public nuisance, arson, criminal damage, manufacturing of explosives, administering poison and wounding with intent to do grievous bodily harm between October 2019 and June 2020. The Standard Channel
from us


Telegram GameDev Architecture
FROM American