Tagged: GameDev

22
Сен
2021

🎮 Разрабатываем конфигурируемый плагин для Unreal Engine 4 с нуля

Статья проведёт читателя по процессу создания собственного плагина от и до, покажет, как сделать плагин конфигурируемым через редактор движка, а также даст несколько советов по работе с плагинами.

Прежде чем начать…
Рекомендуем прочитать нашу статью про модули в UE. Это не критически важно для понимания статьи о плагинах, однако в значительной степени упростит её восприятие и сразу ответит на многие вопросы, которые могут возникнуть по мере прочтения текста.

Также предполагается, что читатель базово знаком с C++ и блюпринтами, в частности, с библиотеками BP-функций [1].

Как связаны между собой плагины и модули

Плагины [2] могут состоять из одного или нескольких модулей, а могут не иметь модулей вообще. Плагин более высокоуровневая структура, нежели модуль. В отличие от модулей, плагины могут содержать контент. Плагины можно продавать в Epic Marketplace, модули – нет.

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

Существует два типа плагинов: игровые и плагины движка. Последние содержат функциональность, которая может быть использована в разных проектах, а игровые плагины специфичны для конкретного проекта. Из-за этого они могут зависеть от плагинов движка, в то время как обратная зависимость недопустима. При этом в своей функциональности игровые плагины и плагины движка абсолютно идентичны: всё, что могут одни, могут и другие.

Создаём основу плагина

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

Предположим, что у вас уже есть проект* на C++ и ваша IDE открыта. Предположим также, что вы решили разработать игровой плагин, а не плагин движка. Заметьте, что в статье мы будем использовать UE 4.27.0 без исходного кода.

Примечание*
Для создания плагина, в котором нет модулей (и кода на C++ соответственно), необязательно, чтобы сам UE-проект был на C++, но мы сосредоточимся именно на плагинах, содержащих C++.

Примечание
Для написания кода мы будем использовать JetBrains Rider for Unreal Engine, однако вы можете установить любую другую подходящую для UE IDE, например, Microsoft Visual Studio.

Перейдем в директорию, где находится проект. Теперь в папке Plugins создадим директорию для нашего плагина, который будет называться SupremePlugin. Директория должна быть одноимённой.

Создадим следующие файлы и поддиректории:

Содержимое директории нашего плагина.
Содержимое директории нашего плагина.

Много всего, правда? Расскажем обо всём по порядку:

SupremePlugin.uplugin [3] дескриптор плагина, который должен иметь имя <PluginName>Plugin.uplugin. В нашем случае его содержимое таково:

<PluginName>Plugin.uplugin
        {
  "FileVersion" : 3,
  "Version" : 1,
  "VersionName" : "1.0",
  "FriendlyName" : "Supreme Plugin",
  "Description" : "A dumb plugin",
  "Category" : "Other",
  "CreatedBy" : "Proglib",
  "CreatedByURL" : "https://proglib.io",
  "DocsURL" : "",
  "MarketplaceURL" : "",
  "SupportURL" : "",
  "EnabledByDefault" : true,
  "CanContainContent" : false,
  "Installed" : false,
  "Modules" :
  [
     {
        "Name" : "SupremePlugin",
        "Type" : "Runtime",
        "LoadingPhase" : "Default"
     }
  ]
}

    

Большинство полей говорят сами за себя, но мы разберём несколько самых важных:

  • EnabledByDefault – должен ли плагин быть включен сразу после установки.
  • CanContainContent – определяет, может ли плагин содержать ассеты.
  • Installed – определяет, был ли плагин установлен поверх или является частью движка/проекта:
Влияние <code class="inline-code">Installed</code> на отображение плагина в редакторе.
Влияние Installed на отображение плагина в редакторе.
  • Modules – одно из самых важных полей – список модулей плагина. Здесь мы указываем единственный модуль нашего плагина.
Примечание
Подробный разбор синтаксиса этой части дескриптора плагина мы приводили в статье про модули.

Файл SupremePlugin.Build.cs описывает единственный модуль плагина – SupremePlugin. Мы не будем подробно останавливаться на его синтаксисе (т.к. разбирали его в статье про модули), а лишь приведём его содержимое:

SupremePlugin.Build.cs
        namespace UnrealBuildTool.Rules
{
  public class SupremePlugin : ModuleRules
  {
     public SupremePlugin(ReadOnlyTargetRules Target) : base(Target)
     {
        PublicDependencyModuleNames.AddRange(
           new string[] //Зависимости нашего модуля
           {
              "Core",
              "CoreUObject",
              "Engine",
		 “DeveloperSettings”
           }
        );
     }
  }
}

    

Хедер SupremePlugin.h ничего не содержит, в то время как SupremePlugin.cpp содержит определение нашего модуля (подробнее об этом мы также говорили в статье про модули):

SupremePlugin.h
        #include "SupremePlugin.h"
#include "Modules/ModuleManager.h"

IMPLEMENT_MODULE(FDefaultModuleImpl, SupremePlugin)

    

Наконец, пара .h/.cpp-файлов SupremeNativeFunctionLibrary задаёт “полезную нагрузку” нашего плагина – библиотеку BP-функций SupremeNativeFunctionLibrary, с единственной функцией DoSomethingUseful(), которая, по легенде, делает что-то полезное.

SupremeNativeFunctionLibrary.h
        #pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "SupremeNativeFunctionLibrary.generated.h"

UCLASS()
class SUPREMEPLUGIN_API USupremeNativeFunctionLibrary : public UBlueprintFunctionLibrary
{
  GENERATED_BODY()

public:
  UFUNCTION(BlueprintCallable, meta=(Category="Supreme Functionality"))
  static void DoSomethingUseful();
};
    
SupremeNativeFunctionLibrary.cpp
        #include "SupremeNativeFunctionLibrary.h"

void USupremeNativeFunctionLibrary::DoSomethingUseful()
{
  UE_LOG(LogTemp, Log, TEXT("Kinda useful functionality"));
}
    

Теперь достаточно собрать и запустить проект и в редакторе блюпринтов станет доступной функция DoSomethingUseful().

Использование BP-функциональности из нашего плагина.
Использование BP-функциональности из нашего плагина.
Примечание
Если ваша IDE не видит созданные файлы плагина, в Проводнике Windows кликните правой кнопкой мыши на файле .uproject и выберите Generate Visual Studio Files (даже если работаете не в Visual Studio).

На данный момент в редакторе наш плагин отображается с иконкой по умолчанию:

Отображение плагина в редакторе.
Отображение плагина в редакторе.

Чтобы заменить иконку, необходимо создать папку Resources в корне плагина и добавить в неё изображение с именем Icon128.png, с разрешением 128×128.

Чтобы создать плагин, используя редактор движка, достаточно открыть панель Plugins и нажать New Plugin. Здесь вам будет предложено выбрать один из нескольких типовых шаблонов для будущего плагина, ввести имя и базовую мета-информацию:

Мастер создания плагинов встроенный в редактор.
Мастер создания плагинов встроенный в редактор.

Конфигурация плагина

Предположим, что нас не устраивает, что DoSomethingUseful() выводит сообщение, которое нельзя изменить без изменения кода. В таком случае для плагина стоит добавить конфигурацию, через которую можно будет изменять подобные параметры.

Конфигурация в UE происходит через обычные UObject’ы с UProperty, помеченными с помощью спецификатора Config. Всё, что необходимо сделать – это создать класс для конфигурации, который содержал бы необходимые поля.

В нашем случае класс будет полностью описан в хедере. Создадим хедер SupremePluginSettings.h([4], [5], [6]):

SupremePluginSettings.h
        #pragma once

#include "Engine/DeveloperSettings.h"
#include "SupremePluginSettings.generated.h"

//Здесь Config указывает имя файла, в котором будет храниться конфигурация
//DefaultConfig говорит движку перезаписывать Default*.ini-файлы [4], а не создавать поверх них локальные файлы конфигурации
//Соответственно, конфигурация данного класса будет храниться в DefaultGame.ini
UCLASS(Config=Game, DefaultConfig, meta=(DisplayName="Supreme Plugin Settings"))
//Если бы USupremePluginSettings был унаследован напрямую от UObject [5], а не от UDeveloperSettings [6], то тогда бы он не был доступен для редактирования в Project Settings в редакторе
class SUPREMEPLUGIN_API USupremePluginSettings : public UDeveloperSettings
{
    GENERATED_BODY()
public:

    UPROPERTY(Config, EditAnywhere, Category = "Main")
    FString Message; //Свойство, которое будет содержать необходимое сообщение
};

    

Теперь значение Message можно редактировать через Project Settings в редакторе:

Конфигурирование плагина через настройки проекта
Конфигурирование плагина через настройки проекта

Остаётся лишь каким-либо образом получить значение поля Message в нашей DoSomethingUseful(). Это можно сделать, используя систему CDO (Class Default Object). Её подробное рассмотрение выходит за рамки статьи, но вот ссылка на документацию для интересующихся.

Обновим SupremeNativeFunctionLibrary.cpp:

SupremeNativeFunctionLibrary.cpp
        #include "SupremeNativeFunctionLibrary.h"
#include "SupremePluginSettings.h"

void USupremeNativeFunctionLibrary::DoSomethingUseful()
{
  FString Message = GetDefault<USupremePluginSettings>()->Message; //Получение значения Message через CDO USupremePluginSettings
 
  UE_LOG(LogTemp, Log, TEXT("%s"), *Message);
}

    

Отключение плагина без открытия проекта

В случае, если ваш плагин падает и не даёт открыть редактор, а значит не позволяет отключить самого себя, существует способ отключить плагин без использования GUI. Для этого откройте .uproject и в разделе Plugins добавьте запись с необходимым плагином и полем Enabled, установленным в false:

Фрагмент .uproject-файла.
        ...
"Plugins" : [
  {
     "Name": "SupremePlugin",
     "Enabled": false
  }
],
...

    

Вывод

Плагины в UE могут содержать несколько модулей, а могут не содержать модулей вообще. В отличие от модулей, плагины могут нести с собой ассеты и распространяться на Epic Marketplace. Плагин более высокоуровневая единица абстракции, нежели модуль.

***

На Unreal Engine сделаны многие современные игры, поэтому движок однозначно рекомендован к изучению всем интересующимся геймдевом. На самостоятельное освоение всех его возможностей потребуются не один год, но есть и более короткий путь. Обратите внимание на курс факультета разработки игр на Unreal Engine 4 образовательной онлайн-платформы GeekBrains. Вы освоите сам движок, научитесь программировать на Blueprints и C++ и сможете самостоятельно создавать игры с нуля. Занятия ведут эксперты-разработчики российских технологических компаний, а успешно окончившие курс студенты получат диплом о профессиональной переподготовке, несколько проектов в портфолио и помощь в трудоустройстве.

22
Сен
2021

🎮 Разрабатываем конфигурируемый плагин для Unreal Engine 4 с нуля

Статья проведёт читателя по процессу создания собственного плагина от и до, покажет, как сделать плагин конфигурируемым через редактор движка, а также даст несколько советов по работе с плагинами.

Прежде чем начать…
Рекомендуем прочитать нашу статью про модули в UE. Это не критически важно для понимания статьи о плагинах, однако в значительной степени упростит её восприятие и сразу ответит на многие вопросы, которые могут возникнуть по мере прочтения текста.

Также предполагается, что читатель базово знаком с C++ и блюпринтами, в частности, с библиотеками BP-функций [1].

Как связаны между собой плагины и модули

Плагины [2] могут состоять из одного или нескольких модулей, а могут не иметь модулей вообще. Плагин более высокоуровневая структура, нежели модуль. В отличие от модулей, плагины могут содержать контент. Плагины можно продавать в Epic Marketplace, модули – нет.

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

Существует два типа плагинов: игровые и плагины движка. Последние содержат функциональность, которая может быть использована в разных проектах, а игровые плагины специфичны для конкретного проекта. Из-за этого они могут зависеть от плагинов движка, в то время как обратная зависимость недопустима. При этом в своей функциональности игровые плагины и плагины движка абсолютно идентичны: всё, что могут одни, могут и другие.

Создаём основу плагина

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

Предположим, что у вас уже есть проект* на C++ и ваша IDE открыта. Предположим также, что вы решили разработать игровой плагин, а не плагин движка. Заметьте, что в статье мы будем использовать UE 4.27.0 без исходного кода.

Примечание*
Для создания плагина, в котором нет модулей (и кода на C++ соответственно), необязательно, чтобы сам UE-проект был на C++, но мы сосредоточимся именно на плагинах, содержащих C++.

Примечание
Для написания кода мы будем использовать JetBrains Rider for Unreal Engine, однако вы можете установить любую другую подходящую для UE IDE, например, Microsoft Visual Studio.

Перейдем в директорию, где находится проект. Теперь в папке Plugins создадим директорию для нашего плагина, который будет называться SupremePlugin. Директория должна быть одноимённой.

Создадим следующие файлы и поддиректории:

Содержимое директории нашего плагина.
Содержимое директории нашего плагина.

Много всего, правда? Расскажем обо всём по порядку:

SupremePlugin.uplugin [3] дескриптор плагина, который должен иметь имя <PluginName>Plugin.uplugin. В нашем случае его содержимое таково:

<PluginName>Plugin.uplugin
        {
  "FileVersion" : 3,
  "Version" : 1,
  "VersionName" : "1.0",
  "FriendlyName" : "Supreme Plugin",
  "Description" : "A dumb plugin",
  "Category" : "Other",
  "CreatedBy" : "Proglib",
  "CreatedByURL" : "https://proglib.io",
  "DocsURL" : "",
  "MarketplaceURL" : "",
  "SupportURL" : "",
  "EnabledByDefault" : true,
  "CanContainContent" : false,
  "Installed" : false,
  "Modules" :
  [
     {
        "Name" : "SupremePlugin",
        "Type" : "Runtime",
        "LoadingPhase" : "Default"
     }
  ]
}

    

Большинство полей говорят сами за себя, но мы разберём несколько самых важных:

  • EnabledByDefault – должен ли плагин быть включен сразу после установки.
  • CanContainContent – определяет, может ли плагин содержать ассеты.
  • Installed – определяет, был ли плагин установлен поверх или является частью движка/проекта:
Влияние <code class="inline-code">Installed</code> на отображение плагина в редакторе.
Влияние Installed на отображение плагина в редакторе.
  • Modules – одно из самых важных полей – список модулей плагина. Здесь мы указываем единственный модуль нашего плагина.
Примечание
Подробный разбор синтаксиса этой части дескриптора плагина мы приводили в статье про модули.

Файл SupremePlugin.Build.cs описывает единственный модуль плагина – SupremePlugin. Мы не будем подробно останавливаться на его синтаксисе (т.к. разбирали его в статье про модули), а лишь приведём его содержимое:

SupremePlugin.Build.cs
        namespace UnrealBuildTool.Rules
{
  public class SupremePlugin : ModuleRules
  {
     public SupremePlugin(ReadOnlyTargetRules Target) : base(Target)
     {
        PublicDependencyModuleNames.AddRange(
           new string[] //Зависимости нашего модуля
           {
              "Core",
              "CoreUObject",
              "Engine",
		 “DeveloperSettings”
           }
        );
     }
  }
}

    

Хедер SupremePlugin.h ничего не содержит, в то время как SupremePlugin.cpp содержит определение нашего модуля (подробнее об этом мы также говорили в статье про модули):

SupremePlugin.h
        #include "SupremePlugin.h"
#include "Modules/ModuleManager.h"

IMPLEMENT_MODULE(FDefaultModuleImpl, SupremePlugin)

    

Наконец, пара .h/.cpp-файлов SupremeNativeFunctionLibrary задаёт “полезную нагрузку” нашего плагина – библиотеку BP-функций SupremeNativeFunctionLibrary, с единственной функцией DoSomethingUseful(), которая, по легенде, делает что-то полезное.

SupremeNativeFunctionLibrary.h
        #pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "SupremeNativeFunctionLibrary.generated.h"

UCLASS()
class SUPREMEPLUGIN_API USupremeNativeFunctionLibrary : public UBlueprintFunctionLibrary
{
  GENERATED_BODY()

public:
  UFUNCTION(BlueprintCallable, meta=(Category="Supreme Functionality"))
  static void DoSomethingUseful();
};
    
SupremeNativeFunctionLibrary.cpp
        #include "SupremeNativeFunctionLibrary.h"

void USupremeNativeFunctionLibrary::DoSomethingUseful()
{
  UE_LOG(LogTemp, Log, TEXT("Kinda useful functionality"));
}
    

Теперь достаточно собрать и запустить проект и в редакторе блюпринтов станет доступной функция DoSomethingUseful().

Использование BP-функциональности из нашего плагина.
Использование BP-функциональности из нашего плагина.
Примечание
Если ваша IDE не видит созданные файлы плагина, в Проводнике Windows кликните правой кнопкой мыши на файле .uproject и выберите Generate Visual Studio Files (даже если работаете не в Visual Studio).

На данный момент в редакторе наш плагин отображается с иконкой по умолчанию:

Отображение плагина в редакторе.
Отображение плагина в редакторе.

Чтобы заменить иконку, необходимо создать папку Resources в корне плагина и добавить в неё изображение с именем Icon128.png, с разрешением 128×128.

Чтобы создать плагин, используя редактор движка, достаточно открыть панель Plugins и нажать New Plugin. Здесь вам будет предложено выбрать один из нескольких типовых шаблонов для будущего плагина, ввести имя и базовую мета-информацию:

Мастер создания плагинов встроенный в редактор.
Мастер создания плагинов встроенный в редактор.

Конфигурация плагина

Предположим, что нас не устраивает, что DoSomethingUseful() выводит сообщение, которое нельзя изменить без изменения кода. В таком случае для плагина стоит добавить конфигурацию, через которую можно будет изменять подобные параметры.

Конфигурация в UE происходит через обычные UObject’ы с UProperty, помеченными с помощью спецификатора Config. Всё, что необходимо сделать – это создать класс для конфигурации, который содержал бы необходимые поля.

В нашем случае класс будет полностью описан в хедере. Создадим хедер SupremePluginSettings.h([4], [5], [6]):

SupremePluginSettings.h
        #pragma once

#include "Engine/DeveloperSettings.h"
#include "SupremePluginSettings.generated.h"

//Здесь Config указывает имя файла, в котором будет храниться конфигурация
//DefaultConfig говорит движку перезаписывать Default*.ini-файлы [4], а не создавать поверх них локальные файлы конфигурации
//Соответственно, конфигурация данного класса будет храниться в DefaultGame.ini
UCLASS(Config=Game, DefaultConfig, meta=(DisplayName="Supreme Plugin Settings"))
//Если бы USupremePluginSettings был унаследован напрямую от UObject [5], а не от UDeveloperSettings [6], то тогда бы он не был доступен для редактирования в Project Settings в редакторе
class SUPREMEPLUGIN_API USupremePluginSettings : public UDeveloperSettings
{
    GENERATED_BODY()
public:

    UPROPERTY(Config, EditAnywhere, Category = "Main")
    FString Message; //Свойство, которое будет содержать необходимое сообщение
};

    

Теперь значение Message можно редактировать через Project Settings в редакторе:

Конфигурирование плагина через настройки проекта
Конфигурирование плагина через настройки проекта

Остаётся лишь каким-либо образом получить значение поля Message в нашей DoSomethingUseful(). Это можно сделать, используя систему CDO (Class Default Object). Её подробное рассмотрение выходит за рамки статьи, но вот ссылка на документацию для интересующихся.

Обновим SupremeNativeFunctionLibrary.cpp:

SupremeNativeFunctionLibrary.cpp
        #include "SupremeNativeFunctionLibrary.h"
#include "SupremePluginSettings.h"

void USupremeNativeFunctionLibrary::DoSomethingUseful()
{
  FString Message = GetDefault<USupremePluginSettings>()->Message; //Получение значения Message через CDO USupremePluginSettings
 
  UE_LOG(LogTemp, Log, TEXT("%s"), *Message);
}

    

Отключение плагина без открытия проекта

В случае, если ваш плагин падает и не даёт открыть редактор, а значит не позволяет отключить самого себя, существует способ отключить плагин без использования GUI. Для этого откройте .uproject и в разделе Plugins добавьте запись с необходимым плагином и полем Enabled, установленным в false:

Фрагмент .uproject-файла.
        ...
"Plugins" : [
  {
     "Name": "SupremePlugin",
     "Enabled": false
  }
],
...

    

Вывод

Плагины в UE могут содержать несколько модулей, а могут не содержать модулей вообще. В отличие от модулей, плагины могут нести с собой ассеты и распространяться на Epic Marketplace. Плагин более высокоуровневая единица абстракции, нежели модуль.

***

На Unreal Engine сделаны многие современные игры, поэтому движок однозначно рекомендован к изучению всем интересующимся геймдевом. На самостоятельное освоение всех его возможностей потребуются не один год, но есть и более короткий путь. Обратите внимание на курс факультета разработки игр на Unreal Engine 4 образовательной онлайн-платформы GeekBrains. Вы освоите сам движок, научитесь программировать на Blueprints и C++ и сможете самостоятельно создавать игры с нуля. Занятия ведут эксперты-разработчики российских технологических компаний, а успешно окончившие курс студенты получат диплом о профессиональной переподготовке, несколько проектов в портфолио и помощь в трудоустройстве.

21
Сен
2021

🎮 С++ или Blueprint: на чем лучше писать игры с использованием Unreal Engine 4?

Создание игр всегда захватывает, но требует от программиста хорошего знания матчасти. Какой язык программирования стоит выбрать для движка Unreal Engine 4? С++ или Blueprint? Попробуем разобраться.

Преимущества использования С++ для разработки игр
Самая главная причина выбора «плюсов» – Unreal Engine 4 (UE4) написан на них. Знание его фундамента позволит максимально эффективно использовать возможности движка. Помимо этого у С++ есть немало возможностей для геймдева. Это компилируемый язык с кучей всевозможных настроек, поддержкой ООП и управлением мельчайшими деталями кода.

Одно из основных преимуществ С++ кроме гибкости – управление памятью. Для новичка это достаточно сложно, но позже самоличное управление сборщиками мусора покажет великолепные результаты и позволит повысить производительность игры.


Преимущества UE4

Именно движок определяет максимальные возможности игры. UE4 – весьма привлекательный выбор:

  • UE4 бесплатен для коммерческого использования с условием: когда доход от игры превысит $1 000 0000, потребуется отдать 5% в качестве роялти.
  • Огромная библиотека моделей, как в магазине EGS, так и на сторонних сайтах. Не все они бесплатны.
  • Возможность создать действительно красивую игру. Например, Assetto Corsa Competizione (ACC) использует оригинальный движок UE4, виды там красивые, особенно ночные гонки.
  • Хорошая работа с фотореалистичной и прочей next-gen графикой. Та же ACC в качестве примера.
  • Поддержка кроссплатформенности (Fortnite в качестве примера).
  • Лёгкость входа в разработку. Сначала интерфейс может показаться сложным, но в нём разобраться несложно.
  • Куча всевозможных обучающих материалов (в том числе бесплатных).
  • Blueprint. «Чертежи» позволяют очень быстро набросать прототип или даже создать полноценную игру. Использовать С++, Blueprints или всё вместе – вопрос, который будет долго занимать мысли программиста до наработки солидного опыта.

Технические особенности движка

  • Если в С++ (ConstructorHelpers) что-то загружается, то оно грузится при старте модуля. Даже если объект не используется, память он будет потреблять.
  • Работа с искусственным интеллектом. Дерево поведения, сбор данных окружающей среды для моделирования поведения – отличные инструменты для полноценной разработки ботов.
  • Материал зависит от текстур, а итоговый меш зависит от материала. Поэтому можно загрузить кирпич из 8 вершин, которые притянут за собой 4К текстуры (если они есть).
  • Из-за этих же зависимостей вызов функции Blueprint повлечёт за собой загрузку всего Blueprint.

Бонусы от совмещения С++ и Blueprint

В сравнении с Blueprint, С++ имеет несколько особых преимуществ. С помощью этого языка программирования можно менять исходный код движка, базовые классы проекта и менять производительность сложных математических расчётов. Всё остальное можно так или иначе реализовать с помощью Blueprint.

  • С++ предлагает возможность прописывания каждого действия игры в любой ситуации, что увеличивает ваши возможности, но иногда приводит к ошибкам. Blueprint же позволит упростить разработку (например, создать кнопку для открытия двери) или поможет в создании полноценной игры далёким от программирования людям.
  • В движок встроен «помогающий» С++, как его называют разработчики. Эта вариация представляет собой упрощённый вариант, направленный на максимально быстрое вхождение в геймдев. Несмотря на возможность писать классический код на С++, разработчики утверждают, что максимальный результат будет достигнут с использованием встроенной вариации. Даже с учётом помощника, потребуются минимальные знания программирования.
  • Благодаря отличному взаимодействию Blueprint и С++ можно использовать оба языка. На С++ программист будет создавать системы и/или строительные блоки из которых позже не умеющий программировать товарищ по команде соберет нужную часть игры. Однако лучше всего создавать проект С++, даже если планируются только Blueprint. Связано это с тем, что проект на Blueprint тяжело переконвертировать в проект на С++. Одна из проблем – перенос переменных.
  • Всегда есть реальные примеры кода на С++ с их реализацией на UE4.

Проблемные места при разработке игр

Если убрать логические ошибки и прочие копания внутри программного кода, то проблемы в геймдеве общие:

  • Первоначально следует описать свою игру, хотя бы в собственной голове. При рабочем плане писать код значительно проще.
  • Каждую новую идею следует фиксировать и анализировать.
  • Правильные приоритеты. Вопреки распространенному заблуждению новичков, сначала проще разработать что-то большое (например, игровой мир), а только потом уделять внимание мелочам (персонажам и самым маленьким игровым объектам).
  • Логичный и понятный баланс. При этом, он должен быть понятным не только разработчикам, но и игрокам.

Есть также несколько специфичных для UE4 проблем:

  • Оптимизацию следует проводить в начале разработки. Как минимум для того, чтобы позже её не пришлось начинать с нуля.
  • Количество объектов, включая травинки, листочки и прочее, следует определять заранее – это позволит сразу выбрать нужный инструмент. Например, для драки на 10 человек Blueprints нужно использовать с осторожностью и не пренебрегать оптимизацией анимации. Начиная со 100 объектов, Blueprint лучше использовать точечно, а если количество единиц перевалило за 1000, от Blueprint стоит отказаться полностью и пользоваться только оптимизированным С++.
  • Анимация часто становится проблемой, замедляющей игру. Чтобы ее избежать, нужно использовать оптимизацию fast-path (у таких объектов появляется иконка молнии).
  • В С++ нет зависимостей. Если нужно вызвать метод класса, он вызывается без проблем. Однако в конструкторе не стоит загружать ассеты, потому что для каждого AActor создаётся и default-версия, для которой тоже вызывается конструктор. Лучше всего логику писать на С++, а всякие настройки, материалы и эффекты – в Blueprint. Это сохранит много ресурсов.
  • Отдельная проблема в разнице тика Blueprint и таймере С++. Есть timer manager (содержащий массив таймеров), который триггерит таймеры подходящее время. При этом если таймер не меньше 0,016, то он будет дешевле по ресурсам, поскольку тикающий актор обрабатывается особым образом. К тому же пока не тикнут все тикающие акторы, общий тик не произойдёт.
  • Таймер отрабатывает не каждый свой тик, за этим следит менеджер таймеров.
  • Из-за пула FTickableGameObject, во время тика программа проходит по всем функциям, проверяет их состояние и формирует стек вызова. Если ещё и в акторе добавить tick, то он автоматически добавит оверхед, даже если ничего не происходит. Это усложняет код.

Заключение

На UE4 есть 2 варианта создания приложения: Blueprint и С++. Если взять чистую реализацию без смешивания языков, то С++, ценой удорожания разработки, предлагает гибкость, прирост производительности, создание сложных ИИ (например, для RTS) и онлайн-возможности игры. Использование Blueprint в чистом виде едва ли возможно для создания сложных ресурсоемких игр, зато он хорош для новичков. Оптимальный вариант, как всегда, лежит где-то посередине – наилучшего результата можно достигнуть, если команда использует и Blueprint и С++. Каждый инструмент хорош для своих задач.

***

На Unreal Engine 4 сделаны многие современные игры, поэтому движок однозначно рекомендован к изучению всем интересующимся геймдевом. На самостоятельное освоение всех его возможностей потребуются не один год, но есть и более короткий путь. Обратите внимание на курс факультета разработки игр на Unreal Engine 4 образовательной онлайн-платформы GeekBrains. Вы освоите сам движок, научитесь программировать на Blueprints и C++ и сможете самостоятельно создавать игры с нуля. Занятия ведут эксперты-разработчики российских технологических компаний, а успешно окончившие курс студенты получат диплом о профессиональной переподготовке, несколько проектов в портфолио и помощь в трудоустройстве.

Дополнительные материалы:

19
Авг
2021

🎮 30 ресурсов для изучения Unreal Engine 4: книги, каналы, сообщества и курсы

Unreal Engine 4 – популярный у начинающих и опытных разработчиков игровой движок, который можно использовать бесплатно. Изучить его с нуля самостоятельно – непростая задача для новичка. Попробуем вам в этом помочь.

Преимущества UE4 в геймдеве

  • Один из главных плюсов движка – бесплатность. Конечно, есть коммерческие библиотеки графических объектов и прочее, но их никто не заставляет использовать.
  • Минимальный порог входа и активное развитие. Epic Games интегрирует в UE4 ценные сторонние идеи.
  • Быстрое прототипирование (и быстрая разработка) благодаря системе визуального скриптинга Blueprint и встроенным системам для графики. Та же Particle System позволяет за пару кликов сделать снежную или дождливую погоду.
  • Поддержка со стороны Epic Games. Компания предлагает курсы, лекции и даже гранты на развитие игр. При этом деньги за коммерческий успех они потребуют только в том случае, если прибыль от него превысит $1 млн. Да и возьмут всего 5%.
Есть важный момент: для программирования игр на UE4 используется С++, поэтому придется изучить этот язык, либо использовать Blueprints.

Учиться можно несколькими способами. Если позволяют финансы, пройдите курс одной из коммерческих образовательных онлайн-платформ, где преподаватели за ручку проведут от старта до финиша. Другой вариант – самообразование. Расскажем про оба.

Онлайн-курсы

Англоязычная платформа Udemy – одна из самых популярных в мире. Здесь можно найти большое количество курсов по Unreal Engine. Рассмотрим несколько для примера:

  • Create Multiplayer Games with C++. В создании этого курса принимали участие специалисты Epic Games. Упор делается на разработку многопользовательских игр.
  • Unreal Multiplayer Master. Авторы углубленного курса по многопользовательским играм рассказывают о подключении к Steam API, проблемах в компьютерных сетях и прочих проблемах ММО.
  • Unreal Engine Blueprint – курс тех же авторов, что и предыдущий. Программа посвящена технологии Blueprint без использования С++.
  • Introduction to Unreal Engine 4 – курс по созданию игровой системы умений.
  • Unlocking the Unreal Engine Material Editor – сосредоточенный на материи для игр курс: смешивание текстур, создание шейдеров, цветовой гаммы и прочего.

Книги


В книги первым делом следует отнести официальную документацию от Epic Games, а также список бесплатных лекций от создателей движка.

Разработка игр на Unreal Engine 4 за 24 часа


Бестселлер Адама Кусона, Райана Даулингсока и Клинтона Крамплера вкратце описывает все необходимые шаги по созданию игры. Более подробную информацию по интересующим темам придётся искать отдельно.

Unreal Engine 4.x Scripting with C++ Cookbook


Учебник Джона Дорана, Уильяма Шерифа и Стефана Уиттла сфокусирован на С++ через рассказы про UE4. В нём разобраны все шаги по созданию полноценной игры.

Mastering Game Development with Unreal Engine 4


У книги Мэтта Эдмондса есть минус – некоторые части кода в тексте отсутствуют, поэтому придётся их искать отдельно.

Перечислим еще несколько интересных вариантов:

Сообщества и прочие полезные ресурсы

Некоторые ресурсы трудно отнести к курсам или книгам:

  • uedev – это сборник с переводами документации движка. Внутри каждой статьи есть ссылки на источники с дополнительной информацией по теме.
  • UEngine – русскоязычное сообщество UE4. Есть видеоуроки, есть форумы для обсуждения.
  • Официальный форум UE – потребуется знание английского, но здесь доступна свежая информация о движке и можно сразу же обсуждать обновление.
  • Русское сообщество UE в ВК – есть видеоуроки про конкретные функции движка. Здесь, например, доступна неплохая подборка обучающих материалов.
  • GitHub Gist об UE4 – подборка полезных материалов.

Youtube


  • Официальный канал UE на английском языке. Полезное видео о ста трюках UE4.
  • Cyberstars – русскоязычный канал о создании игр.
  • Институт максизма-ленинизма. Несмотря на название, авторы канала получили грант Epic Mega Grant и действительно учат создавать игры на UE4. Есть материалы и про UE5.
  • Joe Garth – канал работника Grytek и создателя Brushify.io учит работать на UE4, а его сайт – сборник бесплатных графических ассетов. Получил грант Epic Mega Grant.
  • Unreal Engine Rus – канал на русском языке о возможностях UE4. Последнее видео вышло 2 года назад, поэтому самой актуальной информации здесь нет.
  • CreateGames – русскоязычный канал про UE4. Он заброшен, но опубликованная информация по-прежнему актуальна.
  • Channel Zero – русскоязычный канал разработчика игры “Затерянные земли”. Каждое видео идёт в виде стрима, которые проводятся довольно часто.
  • Unreal Sensei – есть и одноимённый сайт. На канале доступны курсы о работе с UR4, в том числе по быстрому рендеру света. Сейчас автор переключился на UE5.
Разработка игр на UE4 может показаться сложной новичку: это максимально универсальное решение, поэтому от объема свалившейся на вас информации будет пухнуть голова. Стоит немного привыкнуть, и процесс обучения станет проще, а благодаря огромному количеству библиотек (в т.ч. бесплатных) среду разработки нетрудно заточить под себя.

***

На самостоятельное освоение продукта потребуются не один год, но есть и более короткий путь. Обратите внимание на курс факультета разработки игр на Unreal Engine 4 образовательной онлайн-платформы GeekBrains. Вы освоите сам движок, научитесь программировать на Blueprints и C++ и сможете самостоятельно создавать игры с нуля. Занятия ведут эксперты-практики из российских технологических компаний, а успешно окончившие курс студенты получают дипломы о профессиональной переподготовке, несколько проектов в портфолио и помощь в трудоустройстве.

05
Авг
2021

🎮 Путь в профессию: младший игровой программист дает советы новичкам

Артём Драпун – младший программист в белорусской IT-компании, занимающейся аутсорсингом в сфере игрового ПО. Он попал в профессию сравнительно недавно, что делает его опыт современным, а значит и повторимым.

28
Июл
2021

🎮 Не только программирование: какие специалисты нужны в геймдеве?

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

Вкратце о геймдеве и требованиях

Геймдев – сокращение от Game Development (разработка игр). Для этого требуется минимум 3 специалиста: художник, программист и геймдизайнер:

  • Геймдизайнер разработает геймплей, уровни и всё то, что задержит внимание игрока.
  • Программист задаст условия игрового мира и пропишет все нужные действия в нем.
  • Художник всё это красиво оформит.
Ещё нужно создать план разработки игры, распределить обязанности и продать эту игру пользователям в конце концов. Для этого команде потребуются и другие специалисты.

Игровые программисты

От других программистов создатели игр не отличаются. Им потребуется знание нужного стека технологий, включая игровой движок, и соответствие конкретным требованиям компании. Один из популярнейших языков для игровых программистов – С++. Пригодятся Python и Lua для написания внутриигровых скриптов.

В больших проектах программисты делятся по узким специализациям:

  • Ведущий программист – лидер команды разработчиков, управляющий процессом написания кода.
  • Программист игровой механики занимается (простите за тавтологию) реализацией всех возможностей игровых механик. Например, разрушаемостью игрового мира и использованием различных обломков в качестве оружия.
  • Программист графического движка занимается отображением визуальных эффектов.
  • Программист ИИ работает с виртуальными ботами. Он создаёт им “мозги” в виде триггеров, условий, моделей поведения и прочим.
  • Программист UI создаёт интерфейс пользователя для взаимодействия с игровым миром.
  • Программист инструментов создаёт внутренние продукты, облегчающие дальнейшую разработку игры.
  • Сетевой программист актуален только для игр с поддержкой сетевого взаимодействия. Именно этот человек отвечает за пинг, обновления, мультиплеер и прочее.
Для начала нужен план и концепция игры, и тут в дело вступает геймдизайнер.

Геймдизайнеры

От этих ребят полностью зависят впечатления пользователя от игры и длительность проведённого в ней времени. Игровые механики, проработанный лор, задания, логические связи внутри мира и прочее – это всё придумывают геймдизайнеры.

Естественно, одно из главнейших требований к геймдизайнеры – любовь к играм. Как можно придумать хорошую игру, если её создатель ни разу сам не играл?

Ближайший аналог геймдизайнера или даже его прообраз – игровой мастер настольных игр.

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

  • Ведущий геймдизайнер создаёт ключевые особенности игры, распределяет задачи внутри команды.
  • Дизайнер игровой механики сотрудничает с программистом игровой механики. Именно он придумывает возможности внутри мира. Желательно знание основ программирования, чтобы понимать в общих чертах реализацию механик.
  • Дизайнер уровней продумывает и создаёт уровни/локации/карты игрового мира.
  • Дизайнер интерфейса прорабатывает визуальное удобство использования программы.
  • Сценарист – создатель всего игрового мира. Этот человек продумывает историю игрового мира, прописывает диалоги, задания. Он же создаёт смысловое наполнение пути главного героя (путевые вехи, развилки сюжета). Потребуется художественное мастерство, владение языком и некоторым талантом.
У нас есть концепция мира и его смысл, а также прописаны механики. Однако вместо игры по-прежнему чёрный экран. Нужен кто-то, способный запустить “Большой Взрыв”.

Художники


Эти ребята превращают игровой мир в то, что мы видим. Вроде бы задачи несложные – нарисовать пару “задников”, пририсовать модельки и в продакшн. На самом деле всё серьёзнее. Во-первых, потребуется талант в рисовании. Во-вторых, способность к обучению: придётся поглощать знания о техниках рисования, какие-то концепты и прочее. В-третьих, терпение и ментальная выносливость. Специализации у художников следующие:

  • Арт-директор – глава художественного отдела. Следит за выполнением задач, раздаёт их и поддерживает коллег.
  • 2D-художник – собирательное название художников в графических редакторах (Photoshop и т.д.). Они создают текстуры, эскизы, концепт-арты, заставки и прочее. При желании тут можно выделить и более мелкие специализации:
  1. Концепт-художник отвечает за прообраз будущей игры. Предварительные наброски, те же концепт-арты и прочее.
  2. Художник по текстурам создаёт текстуры для дальнейшего использования по материалам от концепт-художника.
  3. Художник бэкграундов рисует задний фон игры.
  • 3D-художник создаёт объёмные объекты игры. Зачастую он использует материалы 2D-художников. Тоже включает 3 мини-специализации:
  1. Моделер персонажей отвечает за вид игровых персонажей и всю их визуализацию: одежду, оружие, доспехи и прочее. В зависимости от предпочтений, могут делиться на “органиков” (занимаются живыми существами) и “неоргаников” (создают различную технику и прочее).
  2. Моделер окружения создаёт локации игрового мира.
  3. Аниматор приводит все нарисованные и созданные объекты в движение. Как персонажи двигаются, дерутся, как разрушается мир – это вотчина аниматора.
Баги убьют всё удовольствие, даже если игра спланирована и нарисована идеально. Тут в дело вступают тестеры.

Тестировщики


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

Помимо креативности от этих специалистов требуется знание методик тестирования, умение документировать все баги и терпение.

Картинка есть, баги выловлены, мир красивый и логичный, но всё равно чего-то не хватает.

Звукоинженеры, композиторы, актеры


Точно. Для создания и углубления атмосферы потребуется звуковое сопровождение. Звуки играют важную психологическую роль и увеличивают вовлечённость пользователя: боевые мелодии включают внимание игрока и делают события более насыщенными, а расслабляющие звуки позволят ему отдохнуть и полюбоваться видами игрового мира. Выделим специализации и здесь:

  • Композитор создаёт основную музыку игры. Мелодии главного меню, боя, отдыха, музыку во время основных событий.
  • Звукоинженер с помощью готовых образцов звука создаёт нужные варианты.
  • Актёры озвучивания – эти люди отдают свои голоса персонажам. Для них очень важна артистичность.
Игра полностью готова, теперь ее нужно продать.

Маркетологи

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

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

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

Администраторы серверов

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

Комьюнити-менеджеры

У каждой онлайн-игры, если она пришлась кому-то по сердцу, создаётся своё сообщество. Для них существуют форумы, сервера Discord и прочие способы обратной связи. С игроками от лица компании работают комьюнити-менеджеры. Они собирают фидбек и передают его в соответствующий отдел. Предложения по игре, указания на различные недочёты и прочее. Требуется и стрессоустойчивость, и умение работать с людьми.

Заключение

Создание завершённой и проработанной игры – трудоёмкий процесс, даже если нужно разработать простой кликер. Не всегда знаменитые игры пишутся целой командой, иногда для этого достаточно одного человека (Тайнен Сильвестр и его RimWorld), но так бывает довольно редко.

В разработке игры важно цельное видение завершённого проекта и возможность найти единомышленников. Попасть в геймдев можно, но стоит учитывать следующие факторы:

  1. Чем меньше команда, тем больше ролей нужно совмещать и больше знаний требуется.
  2. В больших командах требуют наличие серьёзного опыта работы по специальности.
  3. Работу можно найти и без опыта, но придётся стучаться в инди-компании и готовиться к работе за еду или небольшую зарплату.
***

Если вы только начинаете путь в профессии, а к программированию или менеджменту душа не лежит, попробуйте начать с рисования. Навыки художника в той или иной степени требуются представителям почти любой артистической профессии в сфере геймдева. Стоит обратить внимание на курс «2D-художник игр» образовательной онлайн-платформы GeekBrains. Занимаясь всего два раза в неделю за 10 месяцев вы освоите востребованную творческую специальность и сможете начать карьеру. Во время обучения с вами будут работать опытные преподаватели-практики и личный наставник. Успешно завершившие курс студенты добавят шесть проектов в портфолио, а также получат диплом о профессиональной переподготовке и помощь с трудоустройством.

24
Июл
2021

🎮 Какие языки программирования используют разработчики игр?

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

21
Июл
2021

🍏 Разработка мобильных игр для iOS: с чего начать, что изучать и какие инструменты использовать

Платформа Apple пользуется огромной популярностью – это привлекает начинающих разработчиков мобильных игр. Разбираемся, какие инструменты придется изучить новичку, чтобы создать очередной хит для AppStore.

19
Июл
2021

🎮 2D или 3D: какое направление выбрать начинающему разработчику игр на Unity?

В этой статье мы рассмотрим основные отличия между 2D- и 3D-разработкой на Unity и разберемся, что лучше подойдет для начинающего осваиваться в сфере GameDev программиста.

Разработка игр – это увлекательное и перспективное направление для программистов. За последние несколько лет игровая индустрия стремительно развивалась, и теперь кажется, будто все делают видеоигры. Если у вас есть интересная идея или вы решили выбрать GameDev в качестве основной профессии, почему бы не попробовать? Игровой движок Unity может быть неплохим началом. Unity отлично подходят для новичков, потому что это одна из лучших платформ для создания игр небольшого и среднего размера.

Дополнительные материалы
Если вы еще не определились с выбором движка и инструментов для разработки игр, рекомендуем ознакомиться со статьей «GameDev: с чего начать разработку игр?». Какие навыки нужны, чтобы стать профессиональным Unity-разработчиком, вы можете узнать из гайда «Разработка игр на Unity: с нуля до профессионала».

Основные отличия 2D- и 3D-разработки

2D или двумерная графика работает с изображением, сформированным в двух измерениях – высоте и ширине. Объектом 3D является изображение, сформированное в трех измерениях: ширине, высоте и глубине. 3D позволяет оценить размер объекта и расстояние до него.

Движение


Игры 2D выполняются в плоском линейном движении. Даже если ваш персонаж бежит в разных направлениях, в конце концов вы ведете его к конечной точке, как в Марио. Развитие персонажа происходит со сменой всего экрана.


В отличие от 2D-игр, трехмерные игры имеют более глубокую графику, позволяющую персонажу перемещаться свободно и без ограничений, как в GTA: Vice City.

Физическая среда
Двумерное игровое пространство состоит из единственного слоя, где ваш персонаж может двигаться и взаимодействовать с предметами. 3D-среда многослойна и позволяет взаимодействовать с глубиной. Благодаря этому трехмерная среда визуально привлекательна. Трехмерный мир позволяет глубже погрузиться в игровую реальность.

Производство

Поскольку создание 3D-игры – сложный процесс, он требует больше времени и затрат. Организация данных, средства проектирования, рендер – все это намного сложнее чем в 2D-игре. Создавая 3D-среду, нужно двигаться шаг за шагом осторожно, особенно когда дело касается физики. Одна-единственная ошибка может заставить вашего персонажа застрять в текстурах или бесследно исчезнуть.

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

Стили 2D- и 3D-игр в Unity

Создавая новый проект в Unity, вы можете начать его в режиме 2D или 3D. На практике в одной игре могут сочетаться элементы как 2D, так и 3D.

Полное 3D


В 3D-играх используется трехмерная геометрия, при этом материалы и текстуры визуализируются на поверхности объектов. Камера может свободно перемещаться внутри сцены. 3D-игры визуализируют сцену с использованием перспективы, поэтому по мере приближения к камере объекты кажутся крупнее.

Дополнительные материалы
Начать разбираться в 3D-моделировании и Unity 3D поможет статья из «Библиотеки программиста».

Ортографическое 3D

3D-игры с использованием ортогонального вида
3D-игры с использованием ортогонального вида

Иногда в играх используется трехмерная геометрия, но вместо перспективы – ортогональная камера. Такой прием также называют «2.5D».

Полный 2D

Во многих 2D-играх применяются графика, называемая спрайтами. Они отображаются на экране в виде плоских изображений, а камера всегда расположена в одной и той же плоскости.

Дополнительные материалы
Как сделать собственный уровень при помощи готового пакета 2D Game Kit вы можете прочитать в статье «Основы разработки игр на Unity».

2D-геймплей с 3D-графикой


Некоторые 2D-игры применяют 3D-геометрию для окружающей среды и персонажей, но ограничивают игровой процесс двумя измерениями. Камера может отображать вид с боковой прокруткой, а персонаж будет двигаться только в двух измерениях, но сама игра по-прежнему использует трехмерные модели и перспективу для камеры. В таких играх 3D-эффект служит скорее стилистическим, чем функциональным целям. Этот тип игры также называют «2.5D».

2D-геймплей и графика с эффектом параллакса


Это еще один популярный стиль 2D-игр, использующий 2D-графику, но с перспективой камеры для получения эффекта параллакса прокрутки. Это сцена в стиле «картонный театр», где вся графика плоская, но расположена на разном расстоянии от камеры.

Разница между 2D и 3D в Unity

В Unity разница между 2D и 3D обусловлена типом проекта, а также зависит от объектов и камеры, которую вы используете для создания игры.

Ортогональная камера не имеет эффекта перспективы. Куб, рассматриваемый ортогональной камерой с одной стороны, будет выглядеть квадратом.

Для 2D- и 3D-проектов в Unity используется два основных вида объектов:

  • спрайты – простые 2D-объекты,
  • сетки, которые состоят из вершины и нескольких массивов треугольников.

Оба типа объектов можно использовать как в 2D-, так и в 3D-проектах, но физика их взаимодействия будет отличаться. Нельзя с помощью CircleCollider2D заставить мяч отскочить от коробки с помощью BoxCollider.

Плюсы и минусы подходов

В целом плюсы и минусы 2D- и 3D-разработки игр на Unity непосредственно проистекают из специфики направления:

  • 3D-игры более зрелищны, лучше погружают в игровую реальность и предоставляют разработчику целый спектр дополнительных возможностей. В то же время они более трудозатратны, требуют больше внимания к физике и игровым объектам, а также больше вычислительных мощностей для рендеринга и сборки игры.
  • Игровые 3D-проекты обычно делают большие команды разработчиков, что ускоряет процесс, но требует дополнительных усилий на координацию действий. 3D-направление более перспективно для профессионала в сфере GameDev.
  • С другой стороны, 2D-игры дают возможность сосредоточиться на художественных деталях, истории и геймплее, не тратя много усилий на работу с трехмерной физикой и моделями.

Многие инди-игры сделаны разработчиками в одиночку за довольно небольшое время, при этом они получают не меньшую популярность за счет индивидуальной атмосферы и неповторимых деталей. Если вы не готовы сделать GameDev своей основной профессией, а просто решили попробовать себя в этом направлении или реализовать небольшой проект, стоит остановиться на 2D, так как этот подход потребует меньше сил и ресурсов для реализации.

***

Если вы хотите погрузиться в профессию всерьез, стоит обратить внимание на «Курс по разработке компьютерных игр на Unity» образовательной онлайн-платформы GeekBrains. Он позволит вам с нуля освоить популярный движок и на практике реализовать 2D- и 3D-игры разных жанров для ПК и смартфонов.

24
Июн
2021

🎨 Как научиться создавать графику для игр в 2021 году: 88 полезных ссылок для 2D-художника

Тесно в чужих рамках и хотите погрузить мир в свою фантазию? Предлагаем лучшие курсы, телеграм-каналы и книги для начинающих 2D-художников, а также два пути развития: «просто попробовать» и для тех, кто хочет гарантированно найти работу.

17
Июн
2021

🎮 Разработка игр на Unity: 10 важных советов для начинающих

Unity – одна из самых популярных платформ для создания игр, а также приложений дополненной и виртуальной реальности. Вы точно слышали о таких продуктах, как Rust, PokemonGo или Firewatch. Они стали культовыми и создавали их именно в Unity. Разбираемся, на что нужно обратить внимание осваивающему движок с нуля новичку.

1. Освойте необходимые для старта навыки

Для начала работы в Unity вам нужно знать хотя бы один из перечисленных языков программирования: C#, JavaScript или Boo. Будет отлично, если вы владеете еще и 3Ds max. Это сильно вам поможет в написании игры.

2. Изучите основы дизайна

Отличный пользовательский опыт (UX) невероятно важен для создания приятного геймплея. Игроков могут расстроить меню и интерфейсы, которые слишком сложны для навигации, а также чрезмерно или недостаточно проработаны. Лучше всего, чтобы все было просто, интуитивно понятно и соответствовало внешнему виду вашей игры.

Независимо от того, создаете ли вы мобильную гипер-казуальную или полностью захватывающую 3D-игру, правильные звуки в нужное время являются важной частью игрового процесса. Звуки могут даже служить неявным руководством для пользователя, помогая ему перемещаться по уровням или давая подсказки о результатах действий персонажа. Самое главное, звуковое оформление задает настроение и атмосферу вашей игры.

3. Освойте инструменты (плагины) для разработки игр

Для себя я выделил ТОП-3 полезных каждому разработчику инструмента:

  • Graphy – это идеальный, простой в использовании и многофункциональный счетчик кадров в секунду, монитор статистики и отладчик для вашего проекта на Unity. Отладчик позволяет вам установить одно или несколько условий, выполнение которых приведет к желаемым последствиям, таким как снимок экрана, приостановка работы редактора, печать сообщения на консоль и т. д. Можно даже вызвать метод из собственного кода.
  • Lunar Unity Mobile Console – это высокопроизводительная и легкая в управлении консоль тестирования и отладки Unity для iOS/Android.
  • Odin Inspector and Serializer – единственный полностью платный плагин в топе, но он того стоит. OdinSerializer очень хорошо сравнивается со многими популярными библиотеками сериализации с точки зрения производительности и распределения мусора, обеспечивая при этом превосходный набор функций для использования в Unity. Графики производительности в этом разделе профилируются в двоичном формате.

4. Освойте Blender и Maya


Blender и Maya – наиболее мощные из доступных инструментов. Они занимают ведущие позиции в графике и анимации. Эти приложения повышают гибкость игровой разработки и в конечном итоге помогают сделать игру качественнее. Для самого движка Unity эти приложения очень важны.

5. Подучите терминологию

Индустрия игр достаточно быстро развивается, и в сфере их разработки давно появилась собственная терминология. Например, retargeting – это применение созданной для одной модели анимации к другой модели, а rigging – процесс построения скелетной иерархии сочленений костей для вашего меша (что такое «меш», попробуйте узнать сами). Для ознакомления с профессиональным жаргоном стоит прочесть «Unity Руководство: Словарь терминов анимации и Mecanim».

6. Учтите распространенные ошибки новичков


Даже у самых опытных разработчиков случаются ошибки. Выделим несколько из них:

  1. недооценка фазы планирования;
  2. работа с неоптимизированными моделями;
  3. построение взаимозависимой архитектуры кода;
  4. игнорирование потерь производительности;
  5. игнорирование проблем со сборкой мусора;
  6. отсутствие оптимизации использования памяти и хранилища;
  7. общие ошибки физики;
  8. тестирование всей функциональности вручную.

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

7. Используйте обучающие материалы для новичков

Из обучающих материалов по Unity я порекомендую книгу «Unity 3.x Game Development Essentials». В ней вы найдете нужную для создания игры с нуля информацию.


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

8. Подумайте о маркетинге и рекламе

Обойтись без этого невозможно: маркетинг очень важен. Чтобы люди играли в вашу игру, они должны знать о существовании продукта. К счастью, есть много простых способов продать свою разработку. Использование социальных сетей – один из способов, и он может быть абсолютно бесплатным. Публикуйте скриншоты и видео, используйте соответствующие хэштеги и проявите себя в качестве дизайнера видеоигр. Если вы связаны с людьми, которые активно продвигают игры или участвуют в их разработке, и у вас есть значительная база подписчиков, вы можете получить много инсталляций.

9. Изучите мнения экспертов

В широком мире разработки игр информации предостаточно. Если вы не будете осторожны, вы можете оказаться в море информации настолько глубоком, что вам будет трудно держать голову над водой. Обучающие видеоролики-отличный способ узнать новую информацию, не чувствуя себя подавленным. Мы собрали пять лучших учебных пособий по Unity от создателей YouTube, чтобы помочь вам ознакомиться с инструментами и мышлением разработки игр. Смотрите, слушайте и учитесь у профессионалов Unity. Чтобы начать разработку, вам необходимо иметь хотя бы базовые знания программирования. В частности, для движка Unity нужно знание языка C#. То есть должно быть понимание основ ООП, основных структур данных. Если говорить про среды разработки, то это могут быть как MS Visual Studio, так и другие сторонние решения, где вам удобно будет писать код.
Александр Саваткин, Senior Developer в компании Alawar

10. Пройдите обучение на курсах

Если вы только начинаете путь в профессии, обратите внимание на курс факультета разработки игр на Unity образовательной онлайн-платформы GeekBrains. В нем уделяется большое внимание практике, а студенты в процессе обучения реализуют 2D- и 3D-игры разных жанров для ПК и смартфонов. С таким багажом можно идти на собеседование с потенциальным работодателем, тем более платформа предлагает студентам бесплатные карьерные консультации и помогает подобрать соответствующие их навыкам вакансии.

01
Июн
2021

🎮 Разработка игр Unreal Engine 4: 10 советов начинающим

Изучения игрового движка Unreal Engine 4 с нуля – задача не из простых. Разбираемся, на чем следует сосредоточиться в первую очередь.

Движок Unreal Engine 4 – довольно сложная программа для создания игр, кинематографических сред и визуализаций. Несмотря на обилие документации, руководств и туториалов, новичку не всегда ясно, с чего начать ее изучение. Разберемся, на каких моментах следует сосредоточиться в первую очередь.

1. Установите UE 4


Для правильной загрузки и установки Unreal Engine 4 следуйте инструкциям, описанным в этом руководстве, предварительно убедившись, что оборудование компьютера соответствует спецификациям.

Рекомендуемая конфигурация:

  • Настольный ПК или Mac;
  • Операционная система: Windows 7 64-bit или Mac OS X 10.9.2 и выше;
  • Процессор: Intel или AMD с тактовой частотой 2.5 ГГц и выше
  • Видеокарта: NVIDIA GeForce 470 GTX или AMD Radeon 6870 HD и более производительные:
  • Оперативная память: 8 ГБ.

Минимальные требования гораздо ниже благодаря гибкой настройке графики.

Другие доступные платформы: Linux, iOS и Android. Имеется встроенная поддержка VR для Oculus Rift, поддержка Xbox One и PlayStation 4.

2. Определите цель изучения движка

Определитесь, что вы хотите сделать при помощи игрового движка. Для чего собираетесь изучить UE4? Вариантов использования масса, но наиболее популярные желания новичков выделить нетрудно:

  • Создать игру;
  • Заняться архитектурной визуализацией;
  • Заняться разработкой игрового окружения;
  • Создать игровые уровни;
  • Заняться анимацией и кинематографией.
Хвататься за все сразу – плохая практика. В начале пути стоит выбрать единственный вариант, погрузиться в него с головой, чтобы изучить все досконально.

3. Составьте план проекта (опишите этапы создания игры в UE4)


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

  1. Разработка основной идеи. Сюжет.
  2. Концепт-арт: визуальный стиль игры (рисунки, цифровая живопись, фотоотсылки).
  3. Концепция игрового процесса: как будет проходить игра, игровая механика.
  4. Создание прототипа игрового процесса (Blueprint или C++): простая программа с интегрированной базовой механикой и элементами-заполнителями.
  5. Доработка механики (создателю всегда есть что добавить).
  6. Создание трехмерной статической сетки (3D-модели, UV-развертка, текстурирование, материалы, экспорт и импорт).
  7. Работа с анимацией и эффектами.
  8. Дизайн уровней (прототипирование BSP, скрипты, ИИ, игровое тестирование, детализация, освещение).
  9. Оптимизация и производительность.
  10. Упаковка и релиз.
Многие из этих шагов пересекутся во время производства, а тестирование и исправление ошибок будут фоновым этапом разработки на протяжении всего проекта.

4. Определите этапы создания среды в UE4

Теперь давайте рассмотрим, что нужно для создания пользовательской трехмерной игровой среды с помощью Unreal Engine 4:

  1. Создание 3D-модели: высокополигональная и низкополигональная сетки.
  2. Оптимизация текстур.
  3. Создание LOD (уровня детализации).
  4. Разработка собственных коллизий.
  5. Экспорт пакета 3D-моделирования.
  6. Импорт статических мешей (базовых единиц, используемых для создания геометрии мира).
  7. Экспорт и импорт всех текстур и материалов в UE4.
  8. Разукрашивание текстур.
  9. Создание прототипа.
  10. Настройка Blueprint для игровой механики (при необходимости).
В зависимости от среды, некоторые действия из этого списка могут не потребоваться.

5. Изучите основные понятия и операции

Чтобы приступить к разработке первого проекта, вам необходимо освоить базовые вещи:

  1. Работу с навигацией в окне просмотра.
  2. Использование Content Browser.
  3. Работу с объектами и статическими сетками.
  4. Использование BSP для блокировки макета уровня.
  5. Вставку и использование источников света (направленный свет, прожекторы, точечные светильники).
  6. Управление сценой.
  7. Работу с Lightmass Importance Volume, Player Start, Fog.
  8. Масштаб и пропорции.
  9. Тестирование из редактора.

Изучите основные понятия (термины):

  1. Мир – список загружаемых в игру уровней.
  2. Уровень – определяемая пользователем зона игровых действий.
  3. Объекты – базовые строительные блоки Unreal Engine. Через них реализована вся функциональность движка.
  4. Актер – любой Объект, помещенный на уровень и поддерживающий 3D-преобразования (перемещение, вращение, масштабирование).
  5. Пешка – подкласс Актеров, управляемых игроком или искусственным интеллектом (ИИ).
  6. Персонаж – подкласс Пешек, управляемых игроком.
  7. Классы описывают поведение и свойства конкретных Объектов и Актеров, используемых в игре.
  8. Компоненты – добавляемая Актеру функциональность.

6. Главное – режим!


Подберите, удобный для себя, подход к изучению движка. Для начала достаточно часа в день. Вы можете постепенно наращивать темп, но час – это минимум. Если вы хотите добиться результатов, занимайтесь усердно в одно и то же время. В этом деле очень важна система!

Важно: Ключом к изучению любого игрового движка (особенно UE4) является установка добровольных ограничений. Не переусердствуйте со временем занятий и объемом материала, чтобы не перегореть на старте!

7. Начните с малого

Не пытайтесь сразу сделать большую игру. Ваша цель при разработке первого проекта – изучить функциональность, а также основы и принципы использования игрового движка. Рекомендуется начинать с разработки небольшой игровой среды со стартовым контентом. Это может быть отдельная комната, коридор или созданная при помощи Starter Content внешняя территория.

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

8. Изучите шаблоны

При разработке первого проекта на Unreal Engine 4 обязательно используйте один из встроенных игровых шаблонов. Это не просто примеры, а скорее концептуальные решения – на их основе строится логика вашего приложения. Стоит изучить каждый из примеров досконально, не боясь что-то испортить. Вы можете его сломать, загрузить и сломать снова, пока не поймете суть происходящего.

Доступно более 10 вариантов: «Шутер от первого лица», «Шутер от третьего лица», «Сверху вниз», «Шаблон с боковой прокруткой» и др. Использование любого из них даст вам понимание базовой игровой механики, а добавив собственные изменения, вы можете развить функциональность. Не бойтесь экспериментов, тренируйте свои навыки и набирайтесь опыта!

9. Освойте Blueprint


Blueprint – это язык визуальных сценариев внутри UE4. Он сделает всю работу за вас и подключит настраиваемое поведение к проекту. Это означает, что можно создать скрипт для большей части игрового процесса и игровой механики внутри редактора без необходимости писать и компилировать код на C++. Можно создать игру, используя только Blueprint.

Изучите базовые функции Blueprint для создания интерактивных элементов игрового процесса:

  • Перемещение платформ;
  • Открытие и закрытие дверей;
  • Включение и выключение света;
  • Причина и следствие (взаимодействие с предметами в игре);
  • Активация определенных событий или действий при загрузке уровня или при появлении игрока;
  • Добавление взаимодействия с помощью кнопки или текста на экране.
Blueprint чрезвычайно эффективен, поэтому его необходимо изучить всем начинающим разработчикам и геймдизайнерам. Если вы хотите стать художником по игровому окружению, дополнительно потребуется пакет 3D-моделирования (Maya LT, Maya, 3dsMax, Modo, Blender). Дизайнеру уровней, программисту или художнику по текстурам он не особо нужен.

10. Используйте интернет-ресурсы для обучения

В процессе изучения Unreal Engine 4 у вас наверняка возникнут вопросы. Ответы на них можно искать не только в документации:

Если вы зашли в тупик, не стесняйтесь просить помощи у более опытных разработчиков. При этом не забывайте золотое правило: обращайтесь к ним с конкретными вопросами, только если вы исчерпали все возможные варианты решения проблем. Не отнимайте время у профессионала на то, что вы можете сделать сами.

***

На Unreal Engine 4 сделаны многие современные игры, поэтому движок однозначно рекомендован к изучению всем интересующимся геймдевом. На самостоятельное освоение всех его возможностей потребуются не один год, но есть и более короткий путь. Обратите внимание на курс факультета разработки игр на Unreal Engine 4 образовательной онлайн-платформы GeekBrains. Вы освоите сам движок, научитесь программировать на Blueprints и C++ и сможете самостоятельно создавать игры с нуля. Занятия ведут эксперты-разработчики российских технологических компаний, а успешно окончившие курс студенты получат диплом о профессиональной переподготовке, несколько проектов в портфолио и помощь в трудоустройстве.

25
Май
2021

🎮 Как зарабатывать на играх или зачем изучать игровую аналитику в 2021 году?

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

Игровая аналитика – явление относительно молодое. Еще 10 – 15 лет назад для отслеживания поведения игроков не хватало вычислительных мощностей и аналитических возможностей. Сейчас решения принимаются на основе реальных данных – угадывать интересы пользователей уже не нужно. Новый подход изменил отрасль разработки игр: альфа-тестирование, контроль качества выпускаемого продукта и управление игровым сообществом.

Что такое игровая аналитика?

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

Каковы основные метрики аналитики?


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

  • Клиентская метрика – вся связанная с привлечением и удержанием клиентов информация. Это данные для маркетологов, притом наиболее важные из них – DAU (ежедневная активность пользователя) и ARPU (средний доход, приходящийся на одного пользователя).
  • Метрики сообщества – сосредоточенные на поведении и развитии сообщества показатели. К этой категории относятся всевозможные социальные взаимодействия, переписка в игровом чате, а также обмен сообщениями в игре и в социальных сетях.
  • Метрики производительности – показатели, отражающие производительность приложения и возможные сбои. Сюда входит время ответа удаленного сервера, продолжительность загрузки игры или частота кадров во время выполнения квеста. Все, что может помочь разработчику улучшить информационные системы проекта.
  • Метрики игрового процесса – показатели, регистрирующие взаимодействие между пользователем и программой внутри игры. Например, проведенное на заданном уровне время или сколько раз персонаж умирал во время его прохождения. Эти метрики дают нам возможность оценить качество выполнения сценариев.
Поначалу игровая аналитика может показаться инструментом маркетологов, направленным на повышение монетизации игры. На самом деле она необходима и для обеспечения комфортных игровых условий: он позволяет понять поведение игроков на основе фактических данных.

Примеры использования игровой аналитики:

  • Зная, где и когда игрок застревает, легко настроить сложность игры.
  • Имея информацию о самых популярных игровых товарах, можно грамотно рассчитать цены на них.
  • Определив средний возраст пользователей вашего продукта, легко адаптировать для них игровой контент.

Почему это важно?

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

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

Для эффективного анализа придется собрать много реальных данных.

Какие показатели необходимо отслеживать?


Здесь возникает серьезная проблема: мы не можем отслеживать все. У каждого контролируемого потока данных есть своя стоимость обработки. Необходимо учитывать работу серверной стороны и отвечающих за сбор информации людей. Чтобы не нести убытков, придется выяснить, какие показатели наиболее важны. Характер и количество необходимых метрик полностью меняется от проекта к проекту в зависимости от жанра и масштаба игры. Например, связанные с сообществом и монетизацией показатели не имеют большого значения в однопользовательских играх.

К счастью, небольшим командам не нужно отслеживать большие объемы данных, как это делают крупные компании. Грамотный контроль следующих моментов сбалансирует игровой прогресс:

  • Время выхода из игры;
  • Средняя продолжительность сеанса;
  • Сколько уровней игрок сумел пройти;
  • Момент, когда игрок удаляет ваше приложение.

Проанализировав данные, вы сможете найти разочаровывающий пользователей контент.

Связанная с игровым процессом аналитика очень глубока, поскольку даже в самой простой игре используется большое количество переменных. У объектов есть положение, состояние и еще ряд параметров. На сбор информации и анализ результатов потребуется много времени – хорошим решением будет объединить похожие по форме наборы данных в группы.

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

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

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

Профессия игровой аналитик: за что платят деньги?


Аналитик игрового проекта – человек, помогающий разработчикам игры, и правая рука дизайнера, решения которого он описывает и объективно оценивает. Функции игрового аналитика зависят от размера компании, но в общем случае сводятся к решению двух основных задач: поиску узких мест и точек роста проекта.

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

Под анализом игры обычно понимают следующее:

  • Проектирование системы сбора данных;
  • Внедрение аналитики в проекты;
  • Мониторинг влияния обновлений и расчет метрик;
  • Отчет о результатах обновления;
  • Поиск возможных проблем, включая планирование экспериментальных нововведений, их организацию, расчет и интерпретацию результатов;
  • Формулирование гипотез на основе отчетов.

Зарплата специалиста в области игровой аналитики находятся в диапазоне от 70 000 до 200 000 рублей в зависимости от уровня специалиста, если верить опубликованным на hh.ru описаниям вакансий.

Чтобы стать игровым аналитиком, необходимо:

  • Понимание геймдизайна и процесса разработки игр;
  • Знание основ Python;
  • Знание языка структурированных запросов SQL;
  • Знание основ статистики;
  • Знание основ визуализации данных;
  • Знание маркетинговой аналитики и методов анализа игровых метрик;
  • Умение работать с большими данными.

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

***

Заинтересовались, но не знаете с чего начать? Обратите внимание на факультет игровой аналитики образовательной онлайн-платформы GeekBrains. Здесь вы получите все необходимые навыки для начала карьеры: геймеры смогут превратить хобби в работу мечты, начинающие специалисты лучше изучат отрасль, а практикующие гейм-дизайнеры научатся создавать более продуманные игры. Благодаря практическим занятиям на примере реальных игровых продуктов вы не только получите нужный для старта в профессии опыт, но и сможете добавить интересные кейсы в портфолио. Эксперты-практики с большим стажем откроют перед вами двери в профессиональный мир Gamedev, а HR-специалисты помогут с трудоустройством. Удачи в обучении!

15
Апр
2021

🎮 Основы разработки игр на Unity

Лучший способ заняться игровым дизайном – сразу же начать. Разбираемся, как сделать собственный уровень при помощи готового пакета 2D Game Kit и на его примере изучаем создание игр в Unity.

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

Мы уже рассказывали, как научиться разработке на Unity. В написанной совместно с онлайн-университетом GeekBrains статье мы рассмотрим пошаговое создание собственной игры с использованием 2D Game Kit.

2D Game Kit

Unity подходит не только для сложных трехмерных игр или работы с виртуальной и дополненной реальностью – движок прекрасно справляется и с 2D-классикой. Мы начнем с простого и разберемся в его игровой механике на примере 2D Game Kit – набора инструментов, шаблонов и настроек для быстрой разработки. По сути пакет представляет собой готовую игру-платформер, для которой можно создавать новые уровни, а также менять свойства существующих.

<span>2D Game Kit</span>
2D Game Kit

Приступим.

Установка и создание проекта

<span>Unity Hub</span>
Unity Hub

Для начала нужно скачать и установить Unity Hub – это лаунчер, который упрощает управление проектами и версиями Unity. Затем придется зарегистрироваться в экосистеме и создать Unity ID. Выберите лицензию Personal (персональную) и отметьте галочкой подходящий вариант применения: Unity позволяет использовать движок бесплатно для некоммерческих целей, а также компаниям с годовым доходом меньше $100 000.


После активации лицензии можно установить последнюю LTS-версию Unity с необходимыми параметрами из раздела Installs. Выберите платформы, на которых должна запускаться игра, и дождитесь окончания инсталляции.


N.B. На слабых машинах процесс может занять довольно длительное время – запаситесь печеньками и кофе.


Когда Unity уже установлена, нужно создавать проект. Вы можете взять его из раздела Learn, выбрав там 2D Game Kit или добавив его в ваши Assets на сайте (не забудьте предварительно залогиниться под своим Unity ID).



Создание новой сцены и карты уровня

2D Game Kit позволяет автоматически создать новую сцену по умолчанию. Она уже содержит персонажа Эллен, небольшую платформу, интерфейс здоровья, а также все нужное для передвижения и атаки. Для этого откройте проект и выберите раздел Kit Tools –> Create New Scene в верхнем меню.



2D Game Kit использует функцию Tilemap в Unity, которая поможет быстро и легко нарисовать уровень. Все уже настроено, так что можно сразу приступить к работе. В верхнем меню выберите Window –> 2D –> Tile Palette, и у вас откроются две палитры плиток, которые позволяют рисовать уровни.



Разработчику доступно два стиля спрайтов Grassy Rocks и Alien Structure. Выберите тот, который больше нравится, и начните рисовать карту. Визуальные инструменты похожи на обычный графический редактор, так что проблем с ними не возникнет. Блоки можно рисовать, редактировать или стирать.

Когда карта будет готова, можно сразу перейти в окно Game визуального редактора и нажать Play, чтобы посмотреть результат. Управление классическое: A, D, S, Space для прыжка. O, K – выбор оружия.


Двери и движущиеся платформы


В меню проекта внизу нужно найти раздел Prefabs –> Interactables, где находится ряд игровых атрибутов. Возьмем для начала движущуюся платформу и перетащим ее в нашу сцену. После этого она автоматически появится в иерархии сцены в левом окне редактора. Если выбрать ее, то возле платформы в визуальном редакторе появится красная пунктирная линия, обозначающая путь ее движения.

Мы можем перетащить ее в любое место. Путь платформы можно сделать сложнее, заставив ее двигаться по кругу. Для этого нужно воспользоваться кнопкой Add Node в окне инспектора, который находится справа. Добавьте несколько точек-нод и соедините их, сменив флажок BACK_FORTH на LOOP в строке Looping инспектора панели. Стоит обратить внимание, что большая часть свойств всех игровых объектов меняется в инспекторе.


Попробуем также добавить дверь: на ее примере мы разберемся, как настраивать взаимосвязь между сценариями разных объектов. Находим ее там же в разделе Prefabs –> Interactables и перетаскиваем в редактор.

Чтобы открыть дверь, добавим нажимную панель на полу: она обозначена как Pressure Pad. В инспекторе панели найдем раздел Pressure Pad (Script), в одном из окон которого есть раздел On Pressed (). Добавим там новое действие при нажатии Runtime Only и в открывшееся поле перетащим из иерархии сцены нашу дверь, которая Door.


Теперь в соседнем окне с надписью No Function выберем из выпадающего списка Animator –> Play (string). Напишем в появившемся поле DoorOpening. Это готовый скрипт для из раздела Art –> Animations –> AnimationClips –> Interactables со сценариями для существующих объектов.


Телепортация

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


В настройках телепорта мы видим раздел Transition Point (Script), в котором в соответствующих окнах можно выбрать телепортируемый объект (в нашем случае Elen) и тип телепортации (Same Scene), перетащить из раздела иерархии точку назначения в Destination Transform (это будет второй телепорт), а также указать условие перемещения – при входе (On Trigger Enter) или при нажатии кнопки действия (E Interact Pressed). Также телепортироваться можно в другие сцены, например, для перехода между уровнями игры через настройку TransitionDestination, которая находится в Scene Control.

Враги

У нас есть два готовых врага в наборе: Chomper и Spitter. Их можно найти в окне проекта в Prefabs –> Enemies.


Оба они контролируются компонентом Enemy Behavior в инспекторе. Вы можете использовать этот компонент для настройки таких свойств, как скорость врага, поле зрения (FOV), здоровье и многое другое. Добавив одного из них в сцену, можно поменять настройки обнаружения персонажа, дальность и угол зрения, скорость движения и реакции.


Урон и украшения

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


Перетащив ящик на сцену, нажимаем в инспекторе Add Component и добавляем Damager. Первоначально он не будет совпадать с силуэтом ящика, поэтому его нужно вручную подогнать под размер объекта. Также зададим размер наносимого урона, а в разделе HittableLayers укажем врагов в качестве цели, чтобы случайно не повредить себя.


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

В разделе проекта Art –> Sprites –> Environment есть множество украшений, которые можно добавить в сцену. Пакет 2D Game Kit вообще содержит кучу готовых кастомизируемых объектов. Поскольку Unity поддерживает импорт собственных спрайтов, изображений и объектов, простор для фантазии почти безграничен.

Сборка игры

Будем считать, что сцена уже готова и вы хотите протестировать ее вне редактора в виде отдельной игры. Чтобы не добавлять в проект созданные по умолчанию в 2D Game Kit сцены, стоит слегка изменить стартовые настройки. Их можно найти в разделе Scenes под названием Start. Откройте в редакторе объект TransitionStart, и выберете свою сцену в строке New Scene Name.


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


Перейдем в меню работы с файлами к разделу Build Settings, где нужно выбрать необходимые сцены: Start, UIMenus, Loading и созданная вами. Ниже мы выбираем платформу, под которую будем собирать проект (при необходимости можно добавить поддержку требуемой архитектуры). Проверьте или измените настройки в разделе Player Settings и нажмите Build. Выберите папку назначения и дождитесь окончания сборки.

Игра готова, можно тестировать и делиться ею с друзьями.

Заключение

Мы лишь познакомили читателей с основами интерфейса Unity на примере комплекта 2D Game Kit. Более подробные руководства на английском языке легко найти в соответствующем разделе официального сайта Unity. Также рекомендуем ознакомится с инструкцией по созданию 2D пин-понга на Unity.

***

Надеемся, этот материал помог вам разобраться с интерфейсом движка и воодушевил на развитие в области геймдева. Если вы только начинаете изучать эту интересную индустрию, стоит обратить внимание на курс факультета разработки игр на Unity онлайн-университета Geekbrains. В нем уделяется большое внимание практике, а студенты в процессе обучения реализуют 2D- и 3D-игры разных жанров для ПК и смартфонов. С таким багажом можно идти на собеседование с потенциальным работодателем, тем более университет предлагает студентам бесплатные карьерные консультации и помогает подобрать соответствующие их навыкам вакансии.

03
Мар
2021

📱 Как начать разрабатывать мобильные игры для Android?

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

01
Окт
2020

Инженер DevOps компании Wargaming Сергей Макаренко рассказывает о лучших технологиях, проектах, недостатках профессии и работе в крупной международной компании.

В предыдущих статьях о DevOps мы писали о том, Чем занимается DevOps-инженер? Обзор базовых практик и Как и зачем становиться DevOps-инженером. Другие публикации по DevOps доступны по ссылке: https://proglib.io/tag/DevOps.

В этом материале Сергей Макаренко (LinkedIn) рассказал о своем профессиональном пути.

Почему DevOps

Я учился в СПБГПУ на факультете технической кибернетики. Работал в разных отраслях: бизнес-консалтинге, IT-аутсорсинге, банковской и телевизионной сферах, телекоме, гемблинге, в индустрии компьютерных игр, в госкомпании.

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

Какого-то явного желания быть в должности именно инженера DevOps у меня никогда не было, скорее стремление делать свою работу хорошо, не опираясь на то, как эта должность называется. Мне нравится решать сложные задачи и делать работу сервисов лучше, а работу коллег – проще и эффективнее.

О текущей работе

Изначально мне было интересно, как оно – в геймдеве? Поэтому я выбрал компанию Wargaming – это разработчик и издатель популярных компьютерных игр: World of Tanks, World of Tanks Blitz, World of Warships и многих других. Ради работы переехал в Беларусь. Компания помогла мне с релокацией: сопровождала процесс переезда на всех этапах.

Причина такого выбора – большая, известная и интересная в плане задач компания, поэтому я работаю на нее уже 2 года. Численность сотрудников Wargaming превышает 5000 человек в 17 филиалах по всему миру. Самый большой офис расположен в Минске, здесь трудится более 2200 человек. Мое подразделение называется Platform, мы производим общие для всех игр сервисы.

Иллюстрация с сайта pixabay.com
Иллюстрация с сайта pixabay.com

Кто такой инженер DevOps

DevOps – это прежде всего методология, но в какой-то момент на рынке труда появилась и должность инженера DevOps. Есть люди, которые не согласны с самим существованием таких специалистов. Проблема еще и в том, что явной нормативной базы или общепринятого понимания круга обязанностей инженера DevOps не существует – как, например, в Google сделали для термина SRE.

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

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

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

Следовательно инженер DevOps – тот, кто сможет эффективно наладить весь процесс с помощью внедрения конкретных практик, путем обсуждений, построения необходимой инфраструктуры, написания кода.

О рабочем дне

Мой обычный день без дежурства выглядит примерно так:

  • Разбор того, что пришло за ночь: сообщений в почте и мессенджерах, сработавших триггеров и инцидентов (при этом инциденты, которые ночью были критичными, скорее всего уже были решены дежурным инженером);
  • Корректировка плана на день;
  • Stand-up митинг с проектной и/или структурной командой, частью которой я являюсь;
  • Решение различных задач согласно плана на день:
  1. Решение каких-либо проблем на стейджинг- или продакшн-окружениях с тем, чтобы они больше не повторялись;
  2. Улучшение процессов/инфраструктуры для различных систем и сервисов;
  3. Курирование в том или ином виде каких-либо проектов;
  • Различные встречи при их наличии;
  • Написание плана на следующий день.

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

Иллюстрация с сайта pixabay.com
Иллюстрация с сайта pixabay.com

О рабочих проектах и ошибках

В Wargaming я начинал с улучшения работы стейджинг-окружений и встраивания новых сервисов, которые были внедрены в существующую инфраструктуру.

Один из последних крупных проектов, в которых мне довелось участвовать перезапуск World of Tanks в Китае. Требовалось за короткое время развернуть все необходимые сервисы, выполнить интеграции с китайскими партнерами, изменить существующие технические и организационные процессы.

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

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

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

Плюсы и минусы профессии DevOps-инженера

Из плюсов можно отметить, что данная профессия позволяет непрерывно развиваться и сразу видеть, какую пользу ты приносишь.

Из минусов – зачастую работа может быть сопряжена с большим количеством стрессов, но к этому со временем привыкаешь.

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

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

10 лучших технологий DevOps

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

CI/CD (Pipeline as Code)

Инфраструктура как код

Контейнеризация и оркестрация

Облачные сервисы

Observability и мониторинг

Service mesh

Централизованное логирование и трейсинг

API gateways

Feature toggle

Микросервисы и микрофронтенды

Полезные книги, курсы и каналы на YouTube

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

  • Дженнифер Дэвис и Кэтрин Дэниелс «Философия DevOps. Искусство управления IT».
  • Джин Ким, Джордж Спаффорд, Кевин Бер «Проект “Феникс”. Роман о том, как DevOps меняет бизнес к лучшему».
  • Джин Ким, Патрик Дебуа, Джон Уиллис, Джез Хамбл «Руководство по DevOps».
  • Бетси Бейер, Дженнифер Петофф, Крис Джоунс «Site Reliability Engineering. Надежность и безотказность как в Google».

Об этих и других полезных для DevOps-специалистов книгах мы писали в материале – ТОП-10 книг из библиотеки специалиста DevOps.

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

Отчеты об индустрии DevOps:

От частной глобальной технологической компании ThoughtWorks(англ.)

От американской исследовательской компании DevOps Research and Assessment (DORA)(англ.)

Полезные Тelegram-каналы: devopsminsk и devops_deflope.

Каналы на YouTube с записями с различных конференций: CNCF, DevOpsDays, Ontico, Jugru.

***

DevOps – сложная и неоднозначная сфера. Судя по истории героя этой статьи, вам понадобится потратить немало времени, чтобы стать востребованным специалистом. Для освоения новой профессии или повышения квалификации есть и более легкие пути. К примеру, вы можете пройти курс DevOps от онлайн-университета GeekBrains.

Вы узнаете обо всех необходимых для работы практиках и инструментах DevOps, в том числе о тех, которые приводил герой публикации. Преподающие на курсе специалисты и сотрудники крупных компаний расскажут, как настроить сервер для локальной сети, помогут освоить облачные технологии, контейнеризацию приложений с Kubernetes и Docker. Также вы научитесь налаживать процессы непрерывной интеграции и доставки кода, а личный куратор поможет разобраться со всеми проблемными моментами, которые могут возникнуть в процессе обучения.

01
Сен
2020

Показываем, как создать простую 2D-игру на Unity на примере игры в пинг-понг, C#-код прилагается. Пошаговое руководство для абсолютных новичков, дающее практическую основу для изучения Unity.

Недавно мы рассказали о том, как научиться разработке игр на Unity. Продолжим тему на практике и покажем, как новичку создать на этой платформе первую 2D-игру.

Примечание
Если вы хотите получить более систематическое образование в области разработки игр, мы рекомендуем рассмотреть факультет разработки игр онлайн-университета GeekBrains.

Двумерные игры сравнительно просты: для них не требуется сложных 3D-моделей, программный код по сравнению с 3D-проектами выглядит понятнее. Такие игры популярны как на десктопах, так и на мобильных устройствах. Unity также позволяет разрабатывать игры и для браузеров.

За последние годы вышло много популярных двумерных игр:

  • Battletoads продолжение серии игр в жанре beat ’em up, файтинг;
  • Spiritfarer игра в жанре «ферма», менеджмент;
  • Carrion игра в жанре «ужасы», метроидвания;
  • Creaks игра в жанре «квест», головоломка;
  • Streets of Rage 4 игра в жанре beat ’em up, файтинг.

Программная реализация 2D-игр проще не только из-за отсутствия третьего измерения: на самой сцене меньше объектов, вместо трехмерных моделей плоские спрайты, вместо скелетной анимации покадровая. А еще 2D-игры проще портировать на другие платформы – легче найти новую аудиторию.

Особенности создания 2D-игр на Unity

Давайте создадим простую игру в жанре пинг-понг

27
Авг
2020

Разработчики игр – одни из самых востребованных IT-специалистов. В этой статье расскажем, какие навыки нужно иметь и какие технологии изучить, чтобы стать профессиональным Unity-разработчиком с хорошими карьерными перспективами.

Кто такой разработчик игр Unity/Game Developer

Индустрия игр по размерам сопоставима с киноиндустрией, а по темпам роста в последние годы значительно опережает ее. Игровой движок Unity является самым популярным инструментом для разработки игр всех типов. Сообщество разработчиков Unity чрезвычайно велико: активно занимаются разработкой на Unity3D более 1.5 млн человек. Unity позволяет создавать игры всех возможных типов:

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

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

Как стать разработчиком игр: где и чему учиться

Где учиться – на курсах по созданию игр, по книгам или видеоурокам на YouTube – сугубо личный выбор. Мы рекомендуем обучение разработке игр на систематических курсах, которые дают представление о геймдеве в целом и разработке игр на Unity в частности.

Язык программирования C#

В Unity используется производительный язык программирования C#. Благодаря C# и Mono – кроссплатформенной реализации .NET, – Unity-проекты могут собираться и работать одинаково стабильно на разных операционных системах.

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

  • базовые конструкции;
  • объекты, типы и ссылки;
  • перечисления и коллекции;
  • объектно-ориентированное программирование;
  • обработка исключений.

Если вы планируете создавать сетевые игры, то крайне желательно знать ASP MVC – фреймворк для создания веб-приложений, который упрощает сетевое взаимодействие и работу с базами данных.

Общее для всех программистов требование – знание алгоритмов и структур данных. Эти знания не устареют, какой бы язык программирования вы не использовали и для какой бы операционной системы не вели разработку.

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

Большинство обучающих и справочных материалов написаны на английском языке, а потому мы советуем овладеть языком, как минимум на уровне Intermediate. Знание английского языка – не специфическое для Unity-программистов, а стандартное для IT требование.

Редактор Unity3D

Большую часть времени Unity-разработчики проводят в редакторе, так что его нужно изучить досконально. Кроме того, программные библиотеки Unity требуют дополнительного изучения – Unity-проект существенно отличается от обычного C#-приложения. Чтобы стать профессиональным Unity-разработчиком, нужно изучить следующее:

  • базовые манипуляции со сценой, объектами, assets и prefabs;
  • векторы, проекции и математика для 3D графики;
  • создание пользовательского интерфейса в игре;
  • работа с материалами;
  • модули физики для 2D и 3D;
  • система анимации Mecanim;
  • системы частиц;
  • работа с аудио;
  • свет и постобработка;
  • работа с разными графическими пайплайнами;
  • работа с искусственным интеллектом.

Инструменты командной работы

Игра редко делается в одиночку. Для эффективной работы нужно уметь пользоваться инструментами для командной работы. Прежде всего, это системы контроля версий. Официально поддерживаемые и рекомендуемые для Unity системы – Perforce и Plastic SCM. Можно встретить компании, которые используют более распространенный и бесплатный Git, однако, это требует дополнительных усилий по настройке Unity.

Нужно иметь представление о следующих инструментах:

  • cистемы управления задачами (Asana, Basecamp, JIRA, Redmine);
  • баг-трекеры (JIRA, Redmine, Bontq, YouTrack).

Профессиональный Unity-разработчик должен разбираться в том, какие специалисты работают над проектом и каковы их обязанности. Прежде всего это гейм-дизайнеры, обычные и 3D-художники. Надо помнить, что чем крупнее компания, тем более узкой становится специализация конкретного специалиста. Например, программист может заниматься исключительно системой искусственного интеллекта, 3D-художник – только моделированием, над текстурированием и анимацией будут работать другие люди.

Обучающие материалы, курсы по созданию игр

Без качественного и всестороннего обучения стать востребованным Unity-разработчиком невозможно.

Официальная документация (анг)

Официальный портал по изучению Unity (анг)

Программирование

Книги. Не будем пугать вас списками, у нас уже есть подборка актуальных книг по C#.

Видеокурсы

Unity

Книги

  • Unity в действии. Мультиплатформенная разработка на C#. Хокинг Джозеф.
  • Unity и C#. Геймдев от идеи до реализации. Джереми Гибсон Бонд.
  • Разработка игр на Unity 2018 за 24 часа. Гейг Майк.
  • Геймдизайн. Как создать игру, в которую будут играть все. Шелл Джесси.

Видеокурсы

Обучение разработке игр, погружение в профессию и карьерные перспективы

Чтобы начать карьеру Unity-разработчика, нужно не только освоить язык и систему, но и иметь практические навыки.

Начинайте с несложных 2D-игр вроде тетриса или flappy bird. Простые игры легче реализовать в одиночку, но они дают навыки работы с базовыми функциями: загрузка сцен, создание интерфейса пользователя, работа с ресурсами. Далее можно переходить к 3D-играм. Здесь тоже лучше начинать с простого, постепенно внедряя новые функции и меняя архитектуру игры. Так вы составите портфолио, с которым в дальнейшем пойдете на собеседование.

По квалификации разработчики делятся на три условных уровня: Junior/Middle/Senior.

Junior – начинающий разработчик, работающий в команде под управлением более опытных коллег. Джуниору чаще всего поручают простые, некритичные задачи. На этом уровне работник обычно держится 1-1.5 года, после чего повышается до Middle. Junior Game Developer должен иметь следующие компетенции:

  • иметь хорошее знание C#;
  • иметь опыт разработки в Unity, портфолио не должно быть пустым;
  • базовые знания в линейной алгебре (пример);
  • базовые знания в 3D-моделировании.

Middle – опытный специалист, способный выполнить всю порученную работу. Решает как критически важные, так и рутинные задачи. Имеет достаточную квалификацию, чтобы управлять джуниорами. Все основные инструменты и технологии Unity должны быть известны middle-разработчику. Многие работают на уровне middle годами и десятилетиями. Чтобы стать сеньором, нужны большие и целенаправленные усилия.

Senior – программист с высочайшей квалификацией. Может выполнить любую задачу в рамках своего набора технологий. У сеньоров огромный опыт, широкий кругозор, часто – отличные управленческие навыки. Чтобы вырасти от джуниора до сеньора нужно от 6 до 8 лет.

Team Lead Unity Developer – программист уровня middle, который занимается преимущественно управленческой деятельностью. Именно тимлиды создают условия для продуктивной работы команды. Им платят не за написанный код, а за соблюдение сроков и качество проекта в целом.

Также выделяют Unity VR Developer – специалиста, работающего в сфере виртуальной реальности. Такой программист должен иметь специальные знания, связанные со специфическим оборудованием – очками и шлемом виртуальной реальности. Unity AR Developer – похожая специализация, но связана не с виртуальной, а дополненной реальностью.

Востребованность Unity-разработчиков растет, как и количество вакансий. С уверенностью можно говорить, что и через 3-5 лет профессия разработчика игр на этом движке будет перспективна.

Unity-разработчик в среднем получает 65 тыс. руб. в месяц. Минимальная зарплата – 40 тыс. руб. в месяц, максимальная – 135 тыс. руб. в месяц.

В мире ситуация следующая: без учета налогов минимальная зарплата – $6 750/мес., средняя – $11 000/мес., максимальная – $22 500/мес.

Где учиться на разработчика игр

Если вы только начинаете изучать разработку игр, мы рекомендуем обратить внимание на курс Факультета Разработки игр онлайн-университета Geekbrains. В этом курсе систематизирована вся основная информация, необходимая для того, чтобы стать профессиональным Unity-разработчиком.

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

17
Апр
2020

Сохранение игровых данных в Unity

Рассказываем с примерами кода на C# про два способа сохранения игровых данных в Unity: метод сериализации и PlayerPrefs для пользовательских предпочтений.

Одна из самых важных ве…

13
Апр
2020

Нейросети в помощь геймдев-художнику: машинное обучение для создания игрового пиксель-арта

О том, как генеративно-состязательные нейросети с Pix2Pix-архитектурой помогают художникам ускорить создание игрового дизайна.

Приведённые на заголовочной картинке спрайты взяты …

28
Ноя
2019

GameDev: с чего начать разработку игр?

Каждый второй разработчик задумывается о создании игры. Из любопытства, ради заработка или саморазвития. Начините сегодня! А наша статья поможет сориентироваться. Приступим.