[uNet] [Client/Server] Инвентарь персонажа

Общие вопросы о Unity3D

[uNet] [Client/Server] Инвентарь персонажа

Сообщение KanycTa 20 окт 2018, 14:39

Буду на сколько можно краток...

Пилил сетевую игру по примерам:
https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
https://developer.valvesoftware.com/wiki/Lag_compensation
https://developer.valvesoftware.com/wiki/Prediction
http://www.gabrielgambetta.com/client-side-prediction-server-reconciliation.html

Тут встал вопрос об игровых предметах, а точнее о том как реализовывать инвентарь, еще точнее как лучше хранить, манипулировать предметами в нём на серверной стороне?

На клиенте всё просто, есть к примеру скрипт InventoryManager который хранит, добавляет, удаляет предметы из инвентаря и выводит это всё в графическом виде а как быть с серверной стороной?
Аватара пользователя
KanycTa
UNIт
 
Сообщения: 107
Зарегистрирован: 25 июл 2018, 18:41
Откуда: г. Ульяновск
  • Сайт

Re: [uNet] [Client/Server] Инвентарь персонажа

Сообщение anomal3 20 окт 2018, 15:59

KanycTa писал(а):е а как быть с серверной стороной?

А как сетевое взаимодействие написано? Просто синхронизация картинки у клиентов?
Для сохранения можно использовать БД. Например используйте SQLlite. Допустим раз в 15 минут сохранять все объекты у всех персонажей. Или допустим при каждой добавленной вещи в инвентарь.
Вам пример нужен или теория?
anomal3
UNец
 
Сообщения: 34
Зарегистрирован: 09 мар 2017, 15:29

Re: [uNet] [Client/Server] Инвентарь персонажа

Сообщение KanycTa 20 окт 2018, 16:49

anomal3 писал(а):
KanycTa писал(а):а как быть с серверной стороной?

А как сетевое взаимодействие написано? Просто синхронизация картинки у клиентов?
Для сохранения можно использовать БД например SQLite


Использую uNet (LLAPI), держал направление по тутору http://gabrielgambetta.com/client-side-prediction-server-reconciliation.html всё вроде получилось... Клиент симулирует движение на своей стороне и отправляет буфер с нажатиями с интервалом, а на серверной стороне принимаются нажатия и проигрываются а после серверное состояние объекта рассылается всем клиентам. Клиент (отправляющий буфер нажатий) при приёме состояния сервера проверяет предсказанные состояния и если они неверны откатывается до последнего удачного предсказанного состояния и заного проигрывает нажатия... Так организуется плавность игры будто всё происходит в локальной сети (для управляемого клиентом объекта)

Пришлось копать код: https://github.com/GenaSG/UnityUnetMovement чтобы понять как реализовать...



Сохраняю инфу о каждом игроке в отдельном файле с определенным интервалом, сохраняю позицию, поворот, состояние персонажа (здоровье, сила и т.д.)

С сохранением инфы о предметах в инвентаре можно сохранить но как это сделать с минимальными потерями производительности? Не на каждый же объект вешать скрипт контролирующий инвентарь?
Аватара пользователя
KanycTa
UNIт
 
Сообщения: 107
Зарегистрирован: 25 июл 2018, 18:41
Откуда: г. Ульяновск
  • Сайт

Re: [uNet] [Client/Server] Инвентарь персонажа

Сообщение anomal3 20 окт 2018, 17:40

KanycTa писал(а):
anomal3 писал(а):
KanycTa писал(а):а как быть с серверной стороной?

А как сетевое взаимодействие написано? Просто синхронизация картинки у клиентов?
Для сохранения можно использовать БД например SQLite


Использую uNet (LLAPI), держал направление по тутору http://gabrielgambetta.com/client-side-prediction-server-reconciliation.html всё вроде получилось... Клиент симулирует движение на своей стороне и отправляет буфер с нажатиями с интервалом, а на серверной стороне принимаются нажатия и проигрываются а после серверное состояние объекта рассылается всем клиентам. Клиент (отправляющий буфер нажатий) при приёме состояния сервера проверяет предсказанные состояния и если они неверны откатывается до последнего удачного предсказанного состояния и заного проигрывает нажатия... Так организуется плавность игры будто всё происходит в локальной сети (для управляемого клиентом объекта)

Пришлось копать код: https://github.com/GenaSG/UnityUnetMovement чтобы понять как реализовать...



Сохраняю инфу о каждом игроке в отдельном файле с определенным интервалом, сохраняю позицию, поворот, состояние персонажа (здоровье, сила и т.д.)

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

На счёт производительности не подскажу, как быстрее. Дам пример. Варез запрещен!
Тестировал на 30 игроков, всё сохраняет прекрасно и без багов. Кстати тоже используется UNet
anomal3
UNец
 
Сообщения: 34
Зарегистрирован: 09 мар 2017, 15:29

Re: [uNet] [Client/Server] Инвентарь персонажа

Сообщение programmist_derevo 21 окт 2018, 00:07

anomal3 писал(а):
KanycTa писал(а):
anomal3 писал(а):На счёт производительности не подскажу, как быстрее. Дам пример.
Тестировал на 30 игроков, всё сохраняет прекрасно и без багов. Кстати тоже используется UNet

Объясните тупому, это вот так просто платный ассет вы выложили на обменник?))) Вроде ж низя :)
Аватара пользователя
programmist_derevo
UNец
 
Сообщения: 38
Зарегистрирован: 02 фев 2017, 18:13

Re: [uNet] [Client/Server] Инвентарь персонажа

Сообщение anomal3 21 окт 2018, 10:01

programmist_derevo писал(а):
anomal3 писал(а):
KanycTa писал(а):
anomal3 писал(а):На счёт производительности не подскажу, как быстрее. Дам пример.
Тестировал на 30 игроков, всё сохраняет прекрасно и без багов. Кстати тоже используется UNet

Варез запрещен так пойдёт?
И это не последняя версия с магазина.
anomal3
UNец
 
Сообщения: 34
Зарегистрирован: 09 мар 2017, 15:29

Re: [uNet] [Client/Server] Инвентарь персонажа

Сообщение seaman 21 окт 2018, 12:38

так пойдёт?

не пойдет...
Объясните ...

Оскорблять тоже не надо.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10