Челенж по выполнению заданий от пикабушников №1

@Dragnair

Реквестирую:
Генератор рандомного дерева навыков для Rpg.
Мелкие пассивки и ключевые навыки, что за навыки пофиг, лишь бы строились более менее осмысленно.

Этот запрос показался мне самым понятным с точки зрения постановки задачи, поэтому взялся за него. Я делал на гейм-обжектах, но в принципе и UI нарисовать таким макаром можно.

Челенж по выполнению заданий от пикабушников №1 Gamedev, C-shapr, Generator, Unity, Гифка, Длиннопост

графика, конечно, так себе. Но вроде функционал готов.

Легендочка:

синий - это рут обжект (по задумке какая-то отправная точка, но ничто не мешает заменить на обычный скилл)

зелёный - активный скилл

красный - пассивный скилл, зависящий от этого скила.

Вся эта штука спокойно масштабируется в любое количество шагов.

Челенж по выполнению заданий от пикабушников №1 Gamedev, C-shapr, Generator, Unity, Гифка, Длиннопост
Челенж по выполнению заданий от пикабушников №1 Gamedev, C-shapr, Generator, Unity, Гифка, Длиннопост
Челенж по выполнению заданий от пикабушников №1 Gamedev, C-shapr, Generator, Unity, Гифка, Длиннопост

Есть ещё некоторые косметические недоделки: начальная точка расположения всегда справа, но для этого можно добавить рандомизатор, что разнообразит рисунок дерева в целом; нет графики; ничего не юзабельно, само собой :D

Управляется всё это дело вот такой вот штукой:

Челенж по выполнению заданий от пикабушников №1 Gamedev, C-shapr, Generator, Unity, Гифка, Длиннопост

Префабы рут объекта (центрального), главного скила + его цвет, пассивного скила + его цвет, связи + цвет

MaxBranches - это вектор 2, минимальное кол-во веток из узла и максимальное количество веток (Random.Range выбирает из этого диапазона для каждого узла)

SkillDistance - расстояние от одного скила до другого (это флоат, в юнитёвских единицах)

TreeSteps - кол-во шагов в каждой ветке (если макс брэнч выпадет 0 - ветка прервётся)

MaxPassiveSkill - это вектор 2, минимально кол-во пассивных скилов (красных квадратиков) и максимальное.

SubSkillDistance - расстояние от центра активного скила (зеленого), до центра пассивного (красного).


Код получился длинным, аж на 130 строк, но основной кусок здесь

Челенж по выполнению заданий от пикабушников №1 Gamedev, C-shapr, Generator, Unity, Гифка, Длиннопост

Есть ещё косяк с хранением всего этого дела. А именно: я передаю инфу через пару листов, для пошаговой генерации. И голова уже не варит, как это организовать правильнее :D

Челенж по выполнению заданий от пикабушников №1 Gamedev, C-shapr, Generator, Unity, Гифка, Длиннопост

Графически, конечно, не очень впечатляет, но в целом работает. Дерево генерится, всё хорошо. Кроме времени генерации ) Большие на 10+ шагов деревья просаживают фпс до 15 ^_^

Челенж по выполнению заданий от пикабушников №1 Gamedev, C-shapr, Generator, Unity, Гифка, Длиннопост

Спасибо за отзывчивость. К сожалению все запросы я просто физически не успею выполнить, а тема станет бессмысленной, если не будет предложений. Поэтому предлагайте. Кто больше лайков наберёт - того и тапки для следующего челенжа.

Лига Разработчиков Видеоигр

6.6K постов22.1K подписчиков

Добавить пост

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

Автор поста оценил этот комментарий

Я тут запустил, и неплохо так генерируется (пришлось немного поковырять настройки, потому что с ходу генерация не работала). И если запулить вот такое дерево, то оно генерируется в среднем за 250мс у меня, а дальше фпс на максимуме, без проблем.

Иллюстрация к комментарию
раскрыть ветку (1)
Автор поста оценил этот комментарий

Смотря когда ты пулил, я перенёс в апдейт из цикла, теперь каждый шаг дерева в новом фрейме генерится. Пики ушли, даже на 16 шагах стало плюс-минус 30 фпс.


Попробуй накрутить пассив скил я его в два круга расчитывал (16 квадратиков). Будет побольше нагрузон :D Можешь спулится, я запушил всю сцену. Там уже всё настроено, только в генераторе на сцене потягать ползунки-настройки. Если есть желание, кншн.

Автор поста оценил этот комментарий

А выложите код (или проект весь) в гит, так хоть может более корректно народ сможет помочь с кодом и подходом.
Я вот удивился насчёт малого фпс, и про "2 листа", но с утра голова не очень соображает, и никак в предложенном коде не увидел их (или не понял про что была речь). Мне интересно посмотреть как это было сделано, и возможно подкинуть какую-то идею.

раскрыть ветку (1)
Автор поста оценил этот комментарий

https://github.com/MrMouseSE/skillTree/blob/master/Assets/rp...


проблема фпс в том, что в старте я иничу создание 1.5тысяч префабов :) При глубине дерева в 12 шагов. 2 листа - это исходный лист в цикле для создание следующей итерации скилов и новый лист из получившихся скилов, который нужно передать обратно.

показать ответы
1
Автор поста оценил этот комментарий

Не забудь : взял память-отдай.На ui и прочих гавнофреймфорках это в порядке вещей.А велосипед придумывать не надо.Легион этих систем.

раскрыть ветку (1)
Автор поста оценил этот комментарий

да я смотрел по памяти, вроде не утекает... Но в целом подход с двумя листами меня печалит. Правда мозгов не хватает уже придумать как сделать. По-хорошему надо вместо цикла через апдейт делать. Тогда и тормозов не будет и дерево красиво "постепенно" загенерится.

показать ответы
1
Автор поста оценил этот комментарий

Такое уже можно накрутить, на то что в посте. Добавить метки при генерации и дальше ссылаться на них.

раскрыть ветку (1)
Автор поста оценил этот комментарий

не совсем. Для того, чтобы накрутить - надо было сделать между ветками мосты. Я думал над этим, но пока делала забыл :D

1
Автор поста оценил этот комментарий

Ну вот глянь на их дерево развития и систему навыков и камней...

раскрыть ветку (1)
Автор поста оценил этот комментарий

я не очень понимаю к чему это?

показать ответы
3
Автор поста оценил этот комментарий

Мил человек, ты про- path of exile, вообще слышал что то?

раскрыть ветку (1)
Автор поста оценил этот комментарий

кроме того, что это игра? Нет :D

показать ответы