Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

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

В этом уроке объясняются основные термины, которые вы увидите повсюду в редакторе: scene, entity, component, asset, entity template, transform, rigid body, character component, Python component, logic brick, timeline и runtime.

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

Общая картина

Большинство проектов в Cave строятся на нескольких повторяющихся идеях:

Концепция Простое значение
Scene Уровень, меню, тестовая зона или игровое пространство.
Entity Объект внутри сцены.
Component Функция, добавляемая к сущности.
Asset Переиспользуемый контент проекта, хранящийся в Asset Browser.
Entity Template Переиспользуемая настройка сущности, аналог префаба.

Например, представьте деревянный ящик на уровне:

image.png

  • Уровень — это Scene.
  • Ящик, размещенный на уровне — это Entity.
  • Положение ящика хранится в его Transform.
  • Видимая модель обрабатывается Mesh Component.
  • Коллизии могут обрабатываться Rigid Body Component.
  • Модель, материал и текстура, используемые ящиком, — это Assets.

Если вы хотите повторно использовать эту настройку ящика на многих сценах, вы можете сохранить её как Entity Template.

Scene

Scene — это коллекция сущностей.

Сцены могут использоваться для:

  • Игровых уровней.
  • Меню.
  • Тестовых карт.
  • Прототипных комнат.
  • Пространств для катсцен.

Только активная сцена редактируется в основном 3D-виде. При тестировании игры Cave запускает сцену как игровой процесс, а не просто содержимое редактора.

При экспорте или тестировании проекта в режиме runtime, настройки проекта определяют, какая сцена используется как стартовая. Вы можете изменить это во вкладке Settings.

Entity

Entity — это объект в сцене.

Сущности могут быть видимыми или невидимыми. Они могут быть простыми или сложными.

Примеры сущностей:

  • Игровой персонаж.
  • Дверь.
  • Камера.
  • Источник света.
  • Триггер.
  • Кнопка UI.
  • Точка спауна.
  • Папка для организации.

Сама по себе сущность — это в основном контейнер. То, что она может делать, зависит от компонентов, добавленных к ней.

Component

Компонент добавляет поведение или данные к сущности.

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

Например:

Сущность Возможные компоненты
Стена Transform, Mesh, Rigid Body.
Игрок Transform, Character, Camera, Python.
Дверь Transform, Mesh, Rigid Body, Python или Logic Bricks.
Точечный свет Transform, Light.
Кнопка UI UI Element.

Это одна из самых важных идей в Cave: сущности — это контейнеры. Компоненты наделяют их возможностями.

Также важно упомянуть, что вы можете создавать различные типы объектов, используя несколько сущностей в иерархии дочерних сущностей.

Именование Entity

При создании новой сущности Cave предлагает разные начальные типы, такие как Folder, Empty, Mesh, Point Light, Camera, UI Element, Text и Button.

Это не совсем разные миры. Это удобные отправные точки.

Например:

  • Empty — базовая сущность с трансформом.
  • Сущность Mesh подготовлена для отображения меша.
  • Сущность Point Light подготовлена для работы как источник света.
  • Сущность Camera подготовлена для рендеринга вида.
  • Folder — сущность, используемая в основном для организации.

Чаще всего компоненты можно добавлять, удалять или редактировать позже, поэтому стартовый тип — просто удобное сокращение.

Transform

Transform сообщает Cave, где находится сущность и как она ориентирована.

Он включает в себя:

  • Положение.
  • Вращение.
  • Масштаб.

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

Asset

Asset — это переиспользуемый контент проекта, хранящийся в Asset Browser. Важно отметить, что хотя Entity внутренне считается Asset, Asset и Entity — не одно и то же.

Например:

  • Меш-ассет — это данные модели. Меш-сущность — это объект, размещённый в сцене, использующий этот меш-ассет.
  • Материал — ассет, определяющий внешний вид поверхности. Меш-сущность может ссылаться на этот материал.
  • Python-скрипт — ассет, содержащий код. Python-компонент может использовать этот скрипт.

Это разделение мощное, потому что один ассет можно переиспользовать много раз. Если десять ящиков используют один и тот же материал, редактирование материала обновит их всех.

Entity Template

Entity template — это переиспользуемая настройка сущности. Посмотрите на скриншот ниже. Entity Template Assets выделяются зелёной линией под миниатюрой:

image.png

Если вы знакомы с другими движками, можно думать об этом как о префабе.

Entity template может хранить:

  • Иерархию сущностей.
  • Компоненты.
  • Настройки компонентов.
  • Ссылки на ассеты.
  • Дочерние сущности.

Это полезно для всего, что вы хотите переиспользовать:

  • Враги.
  • Подбираемые объекты.
  • Двери.
  • Реквизит.
  • Транспорт.
  • Виджеты UI.
  • Игровые объекты.

Вместо того чтобы заново строить один и тот же объект снова и снова, вы создаёте его один раз как entity template и размещаете его экземпляры там, где нужно.

Rigid Body

Rigid body придаёт сущности физическое поведение. Он используется, когда объекту нужны коллизии или физическое движение.

Примеры:

  • Ящик, который блокирует игрока.
  • Мяч, который может катиться.
  • Дверь с коллизией.
  • Стена, через которую игрок пройти не может.

Rigid body — часть физического движка. Вы используете их, когда объекты должны взаимодействовать физически с миром.

Character Component

Character component используется для движения персонажа. Это отличается от обычного rigid body, потому что персонажу обычно нужны особые поведения:

  • Ходьба.
  • Скольжение вдоль стен.
  • Работа с наклонами.
  • Прыжки.
  • Реакция на управление игроком.

Для игрока или NPC character component обычно лучше, чем пытаться заставить обычный физический объект вести себя как персонаж.

Когда мы говорим о Character Component в Cave, мы имеем в виду его Character Physics, а не игровую логику (например, движение).

Теги и свойства

Теги и свойства помогают идентифицировать и настраивать сущности.

  • Тег — это метка, которая помогает скриптам или логике находить и классифицировать объекты.
  • Свойства — редактируемые значения, доступные в редакторе. Они позволяют настраивать поведение без переписывания кода каждый раз.

Например, у врага могут быть такие свойства, как:

  • Скорость ходьбы.
  • Здоровье.
  • Дистанция атаки.
  • Цель патруля.

Хорошее использование свойств упрощает настройку вашей игры.

Свойства не ограничены Entity: сцены, Logic Bricks и другие ассеты тоже могут их иметь.

Когда мы говорим о свойствах в Cave, мы имеем в виду именно такие свойства, которые доступны через Python-словарь в коде. Они почти всегда доступны и в редакторе.

Python Component

Python component позволяет сущности выполнять логику на Python.

Это полезно, когда нужно создать своё поведение, например:

  • Открыть дверь.
  • Двигать платформу.
  • Обрабатывать ввод игрока.
  • Спавнить объект.
  • Обновлять текст UI.
  • Вызывать события.

Python компоненты — один из основных способов программирования геймплея в Cave.

Python Code Component

Python Code component используется, когда код хранится непосредственно в компоненте, а не ссылается на отдельный скрипт. Это удобно для быстрых тестов, небольших поведений или прототипов.

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

Logic Brick

Logic bricks — визуальный способ построения логики. Они полезны, когда нужно поведение без прямого написания Python-кода.

Если вы знакомы с Blueprints из Unreal, logic bricks похожи по концепции: вы соединяете логику визуально, а не пишете всё в текстовом виде.

Они особенно удобны для создания любых видов логики без необходимости писать Python, например, игровые события, поведение объектов, соединение систем, триггеры и т.д.

Вы изучите их подробнее позже в этом руководстве.

Timeline

Timeline — ассет для создания авторских последовательностей. Timeline может анимировать или запускать события во времени.

Они полезны для:

  • Катсцен.
  • Перемещений камеры.
  • Скриптовых событий.
  • Координированных игровых последовательностей.

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

Важно: Timeline не предназначены для редактирования отдельных анимаций, например анимации ходьбы персонажа. Для этого следует использовать специализированное программное обеспечение (DCC), например Blender, а затем импортировать анимацию в Cave.

Player и игровой runtime

  • Cave Editor — это место, где вы создаёте проект.
  • Cave Player — это runtime, который запускает игру.

При нажатии Play в редакторе Cave запускает вашу сцену в режиме, похожем на игру, внутри редактора. При тестировании в виде отдельного runtime Cave запускает игру в отдельном окне плеера.

Финальная экспортированная игра запускается как player/runtime сборка, а не как редактор. Это разделение важно, потому что некоторые вещи предназначены только для редактора (для отладки и/или разработки вашего проекта), в то время как другие — часть самой игры.

Самое важное соотношение

Если вы запомните из этого урока только один момент, запомните его:

Сцена содержит сущности, сущности содержат компоненты, а компоненты часто используют ассеты.

Это основа проекта на Cave.