Главная Юзердоски Каталог Трекер NSFW Настройки

Gamedev

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 6 2 4
Как вы делаете предметы в играх? jamer 15/04/24 Пнд 01:22:23 945610 1
изображение.png 42Кб, 682x522
682x522
Сап двач, делаю jrpg, естественно у меня должно быть куча предметов в игре. В чем собственно проблема, я не хочу делать предметы по общим шаблонам. Понятно, будут и такие, условно там маленькая и большая аптечка. Но хочется иметь возможность добавлять уникальный функционал. Думал, как это сделать, но на ум приходит только вызов коллбека вроде же это так называется?. После инициализации предмета я могу прописать ему функцию действия и потом ее вызывать. Вроде все круто, есть общий шаблон и при желании я могу добавлять уникальный функционал. Но возникает проблема, а как мне потом хранить эти предметы? Например при сейве игры. Я могу сериализовать свойства, окей, но что делать с функцией? Еще есть вариант держать файл в автозагрузке, где будут определяться все предметы, но это колхоз какой-то, держать все объекты в озу. Может я усложняю и есть варик сделать проще и эффективнее? Пока только такой вариант приходит на ум

Использую я godot если что, но по сути проблема более общая, так что жду советы от всех.
jamer # OP 15/04/24 Пнд 01:23:42 945611 2
Пока писал тред, понял, что можно хранить в сериализованном объекте уникальное имя функции, а потом доставать уже только функции из отдельного файла. Но тоже звучит как-то странно
Аноним 15/04/24 Пнд 11:19:52 945635 3
Чет ты залупы намутил, делаешь ресурсовые айтемы, делаешь слоты инвенторя, делаешь инвентарь. Сам айтем только хранит базовые данные, по типу сколько в стаке может быть, стакается нет, иконка и т.п. Слот инвенторя отвечает за смену, добавление и удаления у себя айтема, если добавляемый айтем такой же, то просто добавляет количество этого айтема в слоте и т.п. Сам инвентарь уже отвечает за слоты, проверяет на наличие пустых слотов и т.п. Если тебе нужно заюзать айтем, то за это отвечает уже отдельный обработчик, как раз в нем и должна быть прописана вся логика для юзабельных айтемов, сначала запрашиваешь ид у айтема, потом матчишь его, и выполняешь то что нужно. Никая блядь лишняя логика не должна быть в слоте и тем более в айтеме.
Аноним 15/04/24 Пнд 11:46:46 945638 4
>>945635
Инвентарь у меня так и работает, в каждый слот просто добавляется инфа из предмета. Вопрос в том, как организовать эти обработчики. То есть я правильно понял во втором после, что я должен по id предмета доставать нужную функцию из отдельного файла?
Аноним 15/04/24 Пнд 12:29:10 945647 5
image.png 51Кб, 460x565
460x565
>>945638
У тебя должен быть один обработчик в котором и будут все функции.
Условно у тебя есть класс плеер, у него есть инвентарь, допустим по нажатию кнопки 1 у тебя должен юзаться предмет из первого слота, получается у тебя должна быть у плеер функция которая отследит нажатие, возьмет ид у предмета, заматчит его, и выполнит то что нужно. Вообще это не обязательно должен быть ид, скорее даже желательно что бы вместо него был тип предмета чтоб каждый айдишник не вписывать в матч. Короч что то наподобии пикрила должно получиться.
Аноним 15/04/24 Пнд 18:37:02 945686 6
>>945611
Да, это самый простой вариант - к каждому предмету прикрепить скрипт с коллбэками типа on_use, on_examine, on_drop
Поумнее - разделить айтемы на классы (оружие, лекарства, квестовые предметы и т. п.) и хранить только данные для них
Ответить в тред Ответить в тред

Check this out!

Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов