- Бег, это как ходьба. Только быстрее! Far Cry 3: Blood Dragon
Изначально предполагалось, что данный проект будет местом, в котором будут собраны теория и практика реализации игровых механик и этот пост знаменует собой следующий этап на этом пути. Он посвящён первой библиотеке, реализующей специфическую, но довольно популярную фичу загрузочных экранов, а именно подсказки.
Чтобы закрыть тему с примерами симпатичная The Legend of Zelda Breath of the Wild:
В очень большом количестве игр это буквально первая механика, которая встречает игрока уже на экране загрузки игры. В дальнейшем подсказки встраивают на экране загрузки уровня, дабы игрок не заскучал, хотя предпочтительнее использовать что-то более интерактивное, как, например, практика комбо ударов в Bayonetta. И даже если новое поколение консолей обещает нам моментальную загрузку уровней, то от загрузки ресурсов по сети мы в любом случае не избавимся в ближайшее время, так что нам ещё придётся полюбоваться подсказками и там. Очевидно, что эта очень маленькая, но чрезвычайно полезная и информативная чать игры, которая помогает влиться в игровой процесс, создать нужное настроение, а порой и запомниться на долгие годы, как в Far Cry 3: Blood Dragon, подсказки из которой использованы для начала этого поста.
Обычно данная механика не содержит какой-либо специфической реализации и просто последовательно выводит строчки из заранее сформированного списка. Однако, светлые головы гейм дизайнеров вполне могут сгенерировать идею обучения через них специфической механике для временного эвента. Исходя из этих мыслей и составим требования для библиотеки.
Гейм дизайн:
Программирование:
Реализацию, а также настройку и полноценное описание, можно найти по адресу tulenber/KhtHints
Лёгкое встраивание и обновление обеспечивается за счёт включения её в качестве git подмодуля(Глава официальной книги про работу с подмодулями), но никто не запрещает просто скопировать папку в проект.
Конфигурирование происходит посредством json-файла в виде TextAsset и с использованием функции Resources.Load(), соответственно файл должен располагается в папке Resources, в данном случае локальной.
Так как хотелось достичь отсутствия внешних зависимостей, то для реализации Manager класса использовался отдельный Singleton, созданный по схеме из поста Unity и Singleton.
Текущая реализация не покрывает все возможные идеи со стороны геймдизайна. Например, подсказки из The Legend of Zelda Breath of the Wild, приведённые в начале статьи, включают в себя не только текст, но и заголовок. Однако, библиотека вполне подходит как набор базового функционала, который легко встроить и расширить, что и ставилось изначальной задачей. Осталось несколько вопросов к текущей реализации, которые необходимо проверить и поправить, а также хотелось бы перевести её на схему работы с Asset Bundles, но эта тема для отдельной статьи. Пока! =)