Как Мы Сделали Нашу Маленькую Unity С Нуля



Как мы сделали нашу маленькую Unity с нуля

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

Он обеспечивает все важные базовые функции:

  • рендеринг;
  • работа с SDK;
  • работа с операционной системой;
  • с сетью и ресурсами.

Однако в ней не хватало того, за что так ценят Unity, — удобной системы организации сцен и игровых объектов, а также редакторов для них.

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



Что там сейчас

Теперь у нас есть некое подобие системы компонентов в Unity со всеми важными подсистемами и редакторами.

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

У нас есть визуальные объекты, которые хранятся в сценах.

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

  • Transform — преобразование узла;
  • Компонент — занимается рендерингом и может иметь только один компонент или не иметь его вообще.

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

    Ближайший аналог в Unity — Renderer;

  • Поведение – отвечает за поведение, и их может быть несколько.

    Это прямой аналог MonoBehaviour в Unity; в них написана любая логика;

  • Сортировка — это сущность, которая отвечает за порядок отображения узлов на сцене.

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

    Таким образом, сортировка позволяет передать управление порядком отображения внешнему коду.

Как и в Unity, программисты создают свои собственные компоненты, поведение или сортировку.

Для этого вам просто нужно написать класс, переопределить необходимые события (Update, OnStart и т.д.) и особым образом отметить нужные поля.

В UnrealEngine это делается с помощью макросов, но мы решили использовать теги в комментариях.

   

/// @category(VSO.Basic)

Теги: #Разработка игр #unity #Playrix
Вместе с данным постом часто просматривают: