This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Вопрос как работает база данных инвентаря игрока?

chertx

Новый участник
4 Мар 2024
49
1
10
хочу сделать систему инвентаря на сервер, понимаю как работает создание клиентского перетягивания предметов по слотам (drag&drop), но не понимаю как с сервера добавлять игроку в инвентарь предметы и сохранять их в базе данных (сам предмет, разные его свойства (например литры бензина если это канистра бензина), слот в котором лежит этот предмет)
а так же как я понимаю нужно создать список всех предметов которые есть на сервере (но вот не понимаю нужно ли его создавать и на клиенте и на сервере идентичным или можно создать только на сервере?)
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,638
260
100
Для добавления предметов игроку в инвентарь и их сохранения в базе данных, вам нужно будет реализовать соответствующий серверный код. Вы можете создать базу данных, в которой будет таблица для хранения предметов в инвентаре каждого игрока. Серверный код будет обрабатывать запросы на добавление, удаление, обновление предметов в инвентаре, а также сохранение данных в базе.

Что касается списка всех предметов, то его достаточно создать только на сервере. Клиенту передается информация о доступных предметах через запросы к серверу или специальным образом при загрузке. В общем случае, клиенту не нужно знать обо всех доступных предметах заранее, только о тех, которые ему нужно показывать.

Если у вас возникнут еще вопросы по реализации инвентаря на сервере, не стесняйтесь задавать их.
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
4,496
2,199
208
36
она работает ровно так как ты её напишешь
сохранять в базе данных ты их можешь так как тебе угодно
хоть хочешь по табличке под каждый предмет заведи
обычно используют просто жсон строку со всеми показателями, которую уже разбирают на сервере
на клиенте обычно ничего не хранят - просто передают строку\массив с сервера, когда открывают инвентарь
 
Последнее редактирование:

enotit

Высший разум
High developer
BackEnd developer
13 Ноя 2020
1,749
564
187
22
Смотря что тебе нужно, если побыстрее, то да, жсоны пихаешь и кайфуешь. Однако существует такая штука как нормали бд (для реляционных).
Нужно изучить какие есть параметры, что тебе стоит хранить / передавать. Может у тебя основной костяк на меню и вай нот наименование айтома = таблица, если индексы навешать, то не сильно и жрать будет
 

XDeveluxe

⚡️BackEnd Developer
Команда форума
Moderator
High developer
BackEnd developer
30 Авг 2021
3,117
1,826
211
28
Сразу не рекомендую такой вариант.
При расширении - можете потерять все данные, удобства в восприятии данных - ноль.
Лучше иметь отдельную таблицу под инвентари (их Id и кому они назначены, например, уникальный Id персонажа) и отдельную таблицу под предметы (их Id и Id инвентаря, в котором они находятся).
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
4,496
2,199
208
36
ну эт самый просто варик просто для начинающих
в линеечке например мы целую пачку таблиц использовали для инвентаря и итемов



ну и да, так очевидно куда удобнее конечно
 

chertx

Новый участник
4 Мар 2024
49
1
10
слот в который игрок перетянул предмет сохранять каждый раз когда игрок перетягивает предмет по слотам? или можно отправлять евент сохранения слотов на сервер когда игрок покидает сервер?
 

Inoi

/dev/null
Команда форума
Moderator
VIP
15 Окт 2020
4,496
2,199
208
36
вообще что-либо сохранять в бд постоянно - моветон
сохраняют обычно раз в какое-то время, мб за исключением каких то суперважных отдельных итемов
уж тем более расположение итемов в фастслотах
 
Реакции: chertx

Alternant

Участник портала
11 Дек 2023
138
23
76
20
Хранишь в переменных персонажа и после сохраняешь. Лично у меня есть класс PersonInstance, который держит в себе все необходимые переменные(статик, деньги, инвентарь), которые запрашиваются по динамическому ID игрока. Каждый час и при выходе эти данные сохраняются в БД. В исключение крупные фин.операции, продажа недвижимости, донат и прочее
 

Similar threads