logo
LIS PUBLICA
☰
  • Новое
  • Горячее
  • Авторское
  • Лучшее
  • Обсуждаемое
VariusSoft
VariusSoft Опубликовано 2 недели назад
  • [моё]
  • [авторское]
  • GameDev
  • Программирование
  • Dungeons & Dragons
  • DnD 5

Dangeon Warder Panel

Вступительная часть

Всем доброго здравия, дорогие друзья!

Этим постом я начинаю серию публикаций о том, как я разрабатываю систему для ведения интерактивный НРИ. В тегах указана пятая редакция Подземелий, но на самом деле речь о любой НРИ. Привязки к конкретным правилам нет, подразумевается, что все необходимые действия (типа бросков кубиков) игроки будут совершать ручками за столом. А программа нужна только для визуализации перемещений, отображения карт и создания показательных боевых ситуаций. Ну и автоматическая выдача опыта, но это опционально и об этом потом.

И так, начнём с самых азов. На чём всё это безобразие будет работать?
На Unity. Почему? Да потому что на ней достаточно дёшево реализуется общение с ГПУ, а оно нам тут понадобится.

Полностью рассказывать о том, как и что я сделал смысла не вижу, но буду делиться какими интересными выкладками и, возможно, кусками кода, если они кому-то нужны.

Что мы сейчас имеем:
1. Система приключений
2. Внутри каждого приключения есть система игровых сессий
3. Внутри сессий и приключений есть возможность редактирования базы НИП, заданий, предметов и локаций

Кстати, UI в окне приключения реализован, как мне кажется, достаточно элегантно: он строится динамически, и в него легко буквально одной строчкой можно добавить новые разделы, которые сразу же отрисуются и кнопочкой и панелькой.

Для этого у меня создан класс SectionsManager, который висит в памяти приложения как Singleton. Он хранит в себе информацию о том, какие разделы мы будем использовать. Добавлять их туда можно через конфиги или через код, это уже вопрос того, кому как удобно.
А потом есть код, отвечающий чисто за UI и он ждёт от этого менеджера команду, когда тот всю необходимую информацию соберёт и скажет, что вот сейчас уже можно рисовать

    private void Awake()
{
    SectionsManager.GetInstance().IsReadyToRender += Render;
}

private void Render()
{
    Sequence seq = DOTween.Sequence();
    foreach (IMenuSection section in SectionsManager.GetInstance().Sections) {
        SectionButton button = Instantiate(sectionButtonPrefab, transform);

        RectTransform rt = button.GetComponent<RectTransform>();
        CanvasGroup cg   = button.GetComponent<CanvasGroup>();
        
        cg.alpha = 0f;
        button.transform.localScale = Vector3.zero;

        button.Init(section.GetName(), () => { section.Show(transform.parent); });

        seq.AppendCallback(() =>
        {
            cg.DOFade(1f, 0.3f).SetEase(Ease.OutQuad);
            button.transform.DOScale(1f, 0.4f).SetEase(Ease.OutBack);
        });

        seq.AppendInterval(0.1f);
    }
}

Конечно, каждую секцию нужно предварительно настроить и сохранить как префаб, совсем магии тут нет, но зато управление такими секциями становится максимально простым. Не захочет мастер пользоваться функционалом заданий, зачем ему занимать память приложения и заграмождать интерфейс ненужным функционалом. Он его отключит, приложение его выгрузит и забудет до тех пор, пока Мастер снова не захочет им воспользоваться.

Понятия не имею, интересно ли это вообще хоть кому-то, но я искренне надеюсь, что среди пользователей сайта есть люди неравнодушные к программированию, геймдеву и НРИ.

Посему жду комментариев, вопросов, критики, чего угодно.

Всем хороших игр!

Читать дальше...
11
+11 / -0
8
51
Colonel_Brom
Colonel_Brom Опубликовано 2 недели назад

"чего угодно."

А можно тогда я задам вопрос программисту. Просто как загуглить свою идею, я даже не знаю:) Есть у меня одна любимая старая игра по Звёздным войнам. "Рыцари старой республики" Весьма известная в своё время. Игровое меню оформлено в виде эдакого инфопланшета из вселенной ЗВ. Так как это классическая РПГ в меню есть вкладочка со списком всех активных квестов.

Тыкаешь во вкладочку любого квеста, читаешь что тебе нужно сделать. Когда квест выполнен, он перемещается в подввкладочку "Выполненные квесты"

Мне нравится стиль оформления, цветовая гамма, удобство этого меню. И пришла такая идея, а можно ли сделать простое мобильное приложение - ещё точнее ежедневный планировщик дел, которое будет являться копией вот этого игрового меню. Так же с левой стороны список твоих "квестов", только уже ИРЛ. Например "Сделать пост на Лиспублике", "Позвонить в УК по поводу стояка", так же с описанием деталей справа:) А как задачу выполнишь - перенесёшь в "выполненные"?

Возможно это технически? Что для этого нужно изучить?

+
1
+1 / -0
-
[ раскрыть ветку ]
Kilo_suslika
Kilo_suslika Опубликовано 2 недели назад

А есть ли шансы, что ты будешь выкладывать описания реальных сессий?

+
1
+1 / -0
-
[ раскрыть ветку ]
Войти

Вход

Регистрация

Я не помню пароль

Войти через Google
Порог горячего 14
  • AlNiKo
    AlNiKo
    Жму хуй
    +1
  • AlNiKo
    AlNiKo
    Хуже пидораса
    +2
  • Brainy
    Brainy
    Ты знаешь правило))
    +1
Правила сайта
Пользовательское соглашение
О ПД
Принципы самоуправления
©2025 Varius Soft