Magic, Wоrd & Swоrd#22 Технические обновления проекта. Редактирование карт и локализация

Что это за пост?

Недавно закончился онлайн фестиваль "keep calm, do games" в рамках которого вели дневник разработки нашего игрового проекта. Как видите это уже 22 пост и если вам интересно, что мы делаем, то милости прошу в мой блог, там есть что почитать :).

Если коротко, то мы разрабатываем пошаговую стратегию с карточным боем и возможностью игрока влиять на глобальную карту боя. Это напоминает гибрид Hereos of Might and Magic, Hearthstone, Civilization и Populous. Не могу сказать, что конечный проект будет точной копией приведённых в пример. Однако, много идей было подчерпано оттуда.

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

Реализована локализация

Теперь проект поддерживает переключение в локализации для текста. Реализовано всё простым образом. Написан скрипт, который отвечает за мгновенное изменения текста на всех текстовых объектах в игре.

Пример прикладывания скрипта решение разработано Алексеем Клычниковым
Пример прикладывания скрипта решение разработано Алексеем Клычниковым

В связке с этим скриптом в проекте присутствует "словарик", отвечающий за всё текстовое наполнение в игре.

Пример содержания "словарика" Алексей Клычников
Пример содержания "словарика" Алексей Клычников

У каждого текстового поля в игре, есть "текст по умолчанию". Когда мы запускаем игровой проект и в нём создаются текстовые поля, то скрипт выполняет запрос о том, какой язык сейчас стоит. Если "Русский", то ок - язык остаётся по умолчанию. Ежели английский, то в "словарике" выполняется поиск строки, где русскоязычный текст полностью совпадает с текущим текстом в игре. Далее выбирается значение из разделителя относящегося к текущей локализации, которые разделены между собой знаком ";". В нашем случае английский язык идёт после второго знака. И значения заменяются на нужное.

Очень надеюсь, что верно понял Алексея, когда он объяснял мне принцип работы данной штуки :)

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

Реализован конструктор игральных карт

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

Работает он так:

Контектное меню решение разработано Алексеем Никитенко
Контектное меню решение разработано Алексеем Никитенко

Функционал вынесен в контекстное меню движка по правому клику мыши. Создаём там Spell. И у нас появляется объект, с такими вот штуками:

Свойства объекта Алексей Никитенко
Свойства объекта Алексей Никитенко

Здесь мы можем ситуацию и "состояние", которое будет происходить при разыгрывании карты. Сейчас видно:

  • Что происходит при разыгрывании карты (боевой клич)
  • Цель на которую будет разыгрывание
  • Что будет происходить (например накладывается божественный щит)
  • Условие, когда данный спелл заканчивается (например когда бафф действие до конца хода)

Состояния также создаются у нас отдельно через контекстное меню

Magic, Wоrd & Swоrd#22 Технические обновления проекта. Редактирование карт и локализация

Здесь мы можем задать условия событий: в начале хода, при определённых условиях, в конце хода и т.д. А далее выбрать что происходит: наносится урон, восстанавливается здоровье, увеличивается какой-либо из показателей и так далее :)

В общем прикольная штука. Если вам интересно о том как будет происходить бой в игре, можно посмотреть эти статьи:

Ссылки на нас

1010
15 комментариев

Локализация в собственном формате Настройки игровых данных в ассетах 2020 год

https://assetstore.unity.com/packages/tools/visual-scripting/game-data-editor-charon-95117
либо
https://habr.com/ru/post/262901/

3

Мы инди) собственно одна из причин ведения дневника - это возможность получить опыт откуда либо ещё. Спасибо за ссылки

2

А чем примеры, приведённые по ссылкам, лучше игровых данных в ассетах (с текстовым файлом то понятно)? Как я в гугл-таблице сделаю ссылку на префаб? В конце концов, если есть своё автоматизированное решение на SO-ассетах, то по-моему это как раз наилучший способ хранения на текущий момент. Буду рад услышать альтернативное мнение)

Я вас понял, обязательно почитаю. Общий игровой концепт, который вы описали мне очень близок как игроку. Буду следить за проектом. Единственный совет: не хочу обидеть, но подобные статьи, где вроде и про техническую сторону, но на самом деле нет, лучше доверьте программисту писать или не пишите вообще. Просто это воспринимается странно, абсолютно примитивные базовые возможности юнити вы подаете, как какую-то особую техническую разработку(Wat!). Причем без технических подробностей собственно=) Короче читается странно, не понятно о чем пост=)

1

Спасибо за рекомендацию) век живи век учись :)

ты так вовремя влез между инфой по ue5 )

Случайно) хотя кстати анонсу UE5 очень рад