Бесшовный открытый мир с World Composition
И последний из представленных мной способов — совокупность лендскейпов (террейнов), каждый из которых является подуровнем и подгружаются они за счет настроек расстояния.
Подготовка
- Создать Persistent уровень.
- Включить для него в World Settings опцию Enable World Composition.
- Создать первый подуровень (в окне Levels — New Level).
- В первом подуровне создать первый ландшафт (в окне Modes — Landscape) .
- На его основе создавать все последующие ландшафты, которые редактируются совместно (ПКМ на ландшафте — подменю Landscape — Add Adjacent Landscape Level — выбрать направление).
- Создать свой слой и установить дистанцию от камеры для стриминга уровня.
- Назначить всем подуровням созданный слой.
Настройка
Подробнее разберем настройки, необходимые, чтобы весь этот World Composition настроить. Сперва — Enable World Composition, включить его можно тут:
Создать первый террейн можно в Modes — Landscape:
Чтобы увидеть композицию ваших террейнов, нужно открыть окно World Composition по кнопке Summon world composition окна Levels:
Чтобы добавить элемент террейна, нужно в World Composition сперва сделать Load для террейна, который вы хотите взять для исходный, а дальше — Add Adjacent Landscape Level и выбор направления, куда добавить относительно этого террейна новый участок.
Редактор предложит назвать и сохранить новый уровень с террейном. И вот добавленный террейн, который можно редактировать как один с остальными (бесшовно).
И результатом будет отличный террейн, состоящий из нескольких частей, которые автоматически будут подгружаться, когда Player Character дойдет до дистанции загрузки.
На первом скриншоте Player Character вне дальности загрузки:
А тут — в дистанции загрузки:
Выводы
Плюсы:
- Без блюпринтов вообще, только настройка.
- Можно запекать свет (весь контент может быть Static) или спокойно пользоваться динамическим освещением, это ж “опенворлд”!
- Система сделана для удобства работы с ландшафтами, и именно с ними — идеальный вариант.
- Корректно работают по сети out of box.
Минусы:
- Триггеры срабатывают на Camera Component.
- Контент в подуровнях необходимо заранее расставлять с учетом структуры подуровней.
Star Wars Knights of the Old Republic 2: The Sith Lord
История первых рыцарей Старой Республики была довольно традиционной, несмотря на ее перипетии. Ее продолжение, в котором Obsidian заменяет BioWare, более амбициозно.
В нем есть все атрибуты компьютерной игры «Звездные войны» — световые мечи, сила и ее дихотомия света и тьмы, экзотические инопланетные слова, вуки – но все это содержится в гораздо более мрачном, более философском повествовании. И, насколько это позволяет игрокам баловаться светлой и Темной сторонами Силы, это исследование серой области между ними.
Но это также захватывающе: дуэли на световых мечах, поглощение новых товарищей для вербовки или развращения и возможность заводить новых врагов на каждом шагу превращают эту приключенческую игру в жанр космической одиссеи.
2 место – Mass Effect 2
Mass Effect 2
О космической эпопее от компании BioWare можно говорить либо хорошо, либо никак, так как всевозможные придирки и оскорбления будут попросту неуместны. Mass Effect гордо идет в строю лучших представительниц жанра экшен/RPG, так что, если вы ещё не поиграли в неё, то бегом исправлять допущенную ошибку!
Mass Effect 2 скриншот 1
Несмотря на то, что у компании с такой гигантской репутацией, как BioWare, есть собственный движок, в последнее время она все чаще избегает работы с ним. Mass Effect 2 же оказалась в этом списке неспроста – она была разработана на Unreal Engine 3.
Mass Effect 2 скриншот 2
Как и предшественники, Unreal Engine третьей версии являлся великолепным движком для своего времени, настоящим образом для подражания.
Однако же боевая система и AI оставили желать лучшего. Другие части – ME 1 и ME 3 – вышли на Unreal Engine 3 и 3.5 соответственно.
«Уроки по Unreal Engine 4» от YouTube-канала «Институт Марксизма-Ленинизма»
Пройти курс
Длительность: 53 урока.
Формат обучения: видеоуроки.
Программа:
- Создание террейна, материалы.
- Создание персонажа. С нуля. Adobe Fuse. Mixamo.
- Изменение расстояния до камеры прокруткой колесика мыши.
- Создание телепорта.
- Динамическое изменение дня и ночи, часть 1.
- Динамическое изменение дня и ночи, часть 2.
- Создание пещеры.
- Продвинутое полное изменение дня и ночи.
- Виджеты, вывод времени суток виджетом на экран.
- Что такое лоды (LODs).
- Звуки. Музыка, птицы, сверчки, костёр, звуки шагов.
- Разные звуки шагов в зависимости от материала.
- Продвинутое полное изменение дня и ночи. Патч 2.0.
- Сохранения. Автосохранение, автозагрузка игры.
- Создание персонажа. Анимация. С нуля. Mixamo.
- Добавление оружия.
- Создание нон-таргет боевой системы.
- Свечение оружия (материала). Emissive Color.
- Создание смерти и респавна персонажа.
- Создание вражеского моба. Как создать NPC в UE4.
- Создаём искусственный интеллект мобу. AI Controller.
- Создаём боевую систему моба. Создаём спавнеры.
- Реакция моба на урон. Настраиваем коллизию.
- Создаём интерфейс для прокачки персонажа.
- Создаём систему прокачки персонажа.
- Улучшаем виджет HP и названия моба.
- Как создать игру на Unreal Engine 4 с управлением мышью
- Основы работы с материалами для террейна.
- Создание главного меню и меню паузы.
- Создание интерфейса (виджетов) меню настроек.
- Создание логики меню настроек.
- Инициализация персонажа и начала игры.
- Сохранение игры в слоты.
- Загрузка игры из слота сохранения.
- Создание эвентов одиночного и двойного нажатия по виджету.
- Обзор инвентаря на Unreal Engine 4.
- Создание инвентаря. Часть 1.
- Создание инвентаря. Часть 2.
- Создание инвентаря. Часть 3.
- Создание инвентаря. Часть 4.
- Создание инвентаря. Часть 5.
- Установка своего курсора в Unreal Engine 4.
- UI/UX для UE4.
- Создание персонажа на C++ с нуля.
- Материалы в Unreal Engine 4, PBR и маски, создание многослойного материала для террейна.
- Большой открытый бесшовный мир.
- Как создать онлайн-платформер на Unreal Engine 4.
- Локализация игры на Unreal Engine 4 (как добавить поддержку многих языков в свою игру).
- Работа с триггерами, светом, массивами и циклами в Unreal Engine 4 на C++.
- Создание автомобиля, как в него садиться и ездить.
- Сборка движка Unreal Engine 4 из исходников на GitHub.
- Вызов блупринтового виджета из C++.
- Вводное пособие по работе с искусственным интеллектом на Unreal Engine 4 для начинающих.
Чему научитесь:
- Создавать онлайн-платформеры на UE 4.
- Добавлять большое количество языков в свой проект.
- Создавать боевую систему для NPC.
- Добавлять оружие и настраивать его баллистические свойства.
- Создавать телепорты для быстрого перемещения.
Процесс создания
Перед началом работы с эффектами я нахожу несколько референсов, просматриваю видео референсов на другом экране, а также делаю зарисовки различных этапов эффекта, это дает мне лучшее представление о том, какие различные элементы мне придётся создать. Все это делается для того, чтобы у меня был базовый чеклист тех элементов, которые мне нужны. Список будет постоянно обновляться по мере усложнения эффекта.
Мне нравится сначала распределять тайминг, а потом уже браться за текстуры. Поэтому я использую заполняющие текстуры, чтобы правильно настроить начальный тайминг, а уже позже заменяю их на настоящие текстуры. Если ваш движок позволяет просмотр в Slow Motion, то было бы неплохо просмотреть эффект в медленном режиме. Старайтесь создавать случайность во всем: в размере, в количестве частиц, во времени существования частиц. Таким образом, каждый раз, когда эффект активируется, он не будет выглядеть одинаковым при каждом воспроизведении.
Шаги, которые я предпринимаю при создании любого эффекта: пытаюсь перейти к первоначальным формам и действиям, например, для коктейля Молотова, создав сначала первый взрыв с огнем, затем перейти к второстепенным формам и действиям (дым и огненные лужи), а затем к деталям (искры, обломки и тепловые искажения).
Создание нескольких туннелей
Первое, что нужно сделать — создать функцию, создающую определённое количество туннелей.
Откройте BP_TunnelSpawner и создайте новую функцию с названием SpawnInitialTunnels.
Чтобы спаунить определённое количество туннелей, можно использовать нод ForLoop. Этот нод будет выполнять соединённые с ним ноды указанное количество раз. Добавьте нод ForLoop и соедините его с нодом Entry.
Чтобы нод ForLoop выполнялся n раз, необходимо задать для Last Index значение n – 1.
В этом туториале мы будем спаунить три туннеля. Для выполнения трёх циклов задайте Last Index значение 2.
Примечание: если не задать поля First Index или Last Index, то по умолчанию они будут равны .Когда игра начинается, игрок всегда должен находиться в туннеле. Для этого можно создать первый туннель в местоположении игрока.
Создание первого туннеля
Чтобы определить, был ли создан первый туннель, мы можем проверить, задано ли NewestTunnel. Если нет, то это значит, что первый туннель ещё не создан, потому что NewestTunnel задаётся только после того, как игра создаст туннель.
Чтобы выполнить эту проверку, добавим нод IsValid (на котором есть знак вопроса) после нода ForLoop.
Затем получим ссылку на NewestTunnel и соединим её с контактом Input Object нода IsValid.
Если NewestTunnel не задан, то будет выполнен нод Is Not Valid, и наоборот.
Добавьте следующее и соедините ноды с контактом Is Not Valid нода IsValid:
Эта схема будет создавать туннель в местоположении Pawn игрока.
Затем нам нужно создать следующие туннели.
Создание следующих туннелей
Добавьте нод SpawnTunnelAtAttachPoint и соедините его с контактом Is Valid нода IsValid.
Вот как выглядит готовый граф:
Подведём итог:
- Нод ForLoop выполняется три раза
- В первом цикле он спаунит туннель в точке расположения игрока
- В последующих циклах он спаунит туннель в точке SpawnPoint самого нового туннеля
Теперь перейдите в Event Graph и удалите нод SpawnTunnel. Добавьте нод SpawnInitialTunnels после Event BeginPlay.
Нажмите на Compile, вернитесь в основной редактор и нажмите на Play. Теперь туннель стал гораздо длиннее!
Спойлер
Игра пока не очень сложна, так что давайте добавим препятствия.
Функция Load Streaming Level
Данный метод позволяет загружать подуровни по имени (подуровня) при вызове функции Load Streaming Level. И в данном случае именно загружать. Уровни не загружены при старте persistent, и на их загрузку по триггеру и блюпринт-логике необходимы ресурсы вашей системы, следовательно, если уровень большой или в нем много контента — могут быть просадки FPS, будьте внимательны и правильно распределяйте контент по подуровням.
Подготовка
- Создать Persistent уровень.
- Создать подуровни с необходимым контентом, учитывая переходы между подуровнями, в фиксированных местах.
- Добавить их в persistent.
- Подуровни должны быть типа загрузки Blueprint.
- Создать свой blueprint-триггер с логикой, завязанной на Load Streaming Level.
- Расставить и настроить свои кастомные blueprint-триггеры. Первый blueprint-триггер должен быть в persistent, чтобы начать цепочку загрузок уровней. Остальные могут располагаться в подуровнях или в persistent, зависит от удобства.
Настройка
В подготовке я уже сказал, что нужно расставить blueprint-триггеры, но не рассказал, что же должно быть у них внутри, какая логика. Срочно исправляю это упущение!
Я создал актора с именем BP_CustomStreamingTrigger, он унаследован от обычного actor класса. Перечислю, что я в него добавил.
BP Custom Streaming Trigger — переменные
Я добавил три Instance Editable переменные, чтобы их можно было изменять непосредственно в сцене для выбранного актера:
Extent — 3D-Vector, который я использую в Construction Script, чтобы управлять размером триггера (компонент Box) в уровне при настройке.LevelsToLoadNames / LevelsToUnloadNames — Array (список) переменных типа Name, этот список заполняется точными именами уровней, которые необходимо загрузить / выгрузить, когда Player Character попадает в триггер.
А также четыре переменных для работы логики:
CurrentLevelToLoad / CurrentLevelToUnload — переменные типа Name, хранят имя текущего уровня на загрузку / выгрузку.CurrentLoadlevelID / CurrentUnloadlevelID — переменные типа Int, хранят индекс уровня на загрузку/выгрузку.
BP Custom Streaming Trigger — логика
В Event Graph-е происходит не очень много.
Сразу замечу, что логика не завернута в функции по двум причинам.
Первая: это быстрое решение, чтобы показать результат, ну и — всегда есть куда рефакторить.
Вторая: базовая функция движка Load Stream Level (как и Unload Stream Level) — является Скрытой (или Отложенной), это означает, что после того как функция была вызвана и до того как она завершит свою работу — повторные вызовы execution flow через неё не пройдут, и всё, что стоит на выполнении после неё — не выполнится. А когда она выполнится — исполнение пойдет от первого вызова (все последующие — не запомнятся).
В данной реализации по соприкосновении с blueprint-триггером (Begin Overlap) любого актора срабатывает сперва загрузка первого из списка на загрузку уровня, а следом — выгрузка первого из списка на выгрузку, соответственно. Если делать рефакторинг, то точно стоит определить, кто может взаимодействовать с этим триггером (либо через коллижн пресет, либо через проверку актора на выходе события Begin Overlap), имейте это ввиду.
После первых запусков загрузки / выгрузки уровней пойдет выполнение следующих, если в списках таковые есть.
В результате, когда я нахожусь Player Character-ом в зеленой комнате (BP_CustomStreamingTrigger_AB), загружены Level_A и Level_B с зеленой и фиолетовой комнатами, и выгружены Level_C и Level_D с желтой и красной.
Выводы
Плюсы:
- Свой кастомный код, достаточно простой, и своя настройка оверапов.
- Можно запекать свет (весь контент может быть Static).
- Корректно работают по сети out of box.
Минусы:
- Контент в подуровнях необходимо заранее расставлять с учетом структуры подуровней.
- Требуется простейшее знание Blueprints.
10 место – Unreal
Unreal
Собственно, рассказывая об Unreal Engine, нельзя не упомянуть игру, для которой этот движок изначально и создавался. Unreal – это трехмерный шутер от студии Epic Games, которая и создала описываемый нами движок.
Три года разработчики трудились над Unreal Engine, чтобы затем выпустить игру на его основе и с точно таким же именем. Впоследствии Unreal стала серией и развивалась вплоть до 2007 года.
Unreal Tournament
Благодаря Unreal Engine разработчикам удалось сделать их проект одним из самых инновационных для своего времени. Среди игр 1990-х у Unreal не было конкурентов на поприще количества всевозможных видов противников, которые противопоставлялись игроку.
3D-графика вместе с Unreal (игрой и движком) вышла на новый уровень. Конкурируя с одним из своих главных противников, Unreal представила высокодетализированные интерьеры и огромные локации с великолепными видами – такого не было даже в Quake II. Unreal стала первой игрой, в которой появились детализированные текстуры.
Unreal Tournament 4
Помимо этого, в Unreal игроки могли самостоятельно создавать и редактировать уровни (UnrealEd). Эта функция поддерживалась самим Unreal Engine, который использовался для рендеринга сцен.
Ещё одной особенностью, присутствовавшей в игре, являлись так называемые зоны, представленные в виде воды, кислоты и лавы. В них можно было править характеристики, влияющие на движение и положение игрока (речь идет о гравитации, инерции, силы трения и так далее).
Перезапуск игры
При перезапуске игра должна выполнять два действия:
- Сбрасывать состояние игрока. Это включает в себя и скрытие кнопки перезапуска с экрана.
- Повторно создавать туннели. Таким образом игрок стартует с начала туннеля.
Давайте начнём со сброса игрока.
Сброс игрока
Откройте BP_Player и создайте новую функцию RestartGame. Создайте следующий граф:
Подведём итог:
- Set Is Dead присваивает IsDead значение false. Это снова включает возможность движения вперёд.
- Remove From Parent удаляет с экрана RestartWidget
- Set Input Mode Game Only снова включает возможность управления в игре, чтобы игрок мог перемещаться
- Set Show Mouse Cursor скрывает курсор мыши
Теперь нам нужно снова создать туннели.
Повторное создание туннелей
Нажмите на Compile и закройте BP_Player.
Откройте BP_TunnelSpawner и перейдите в граф SpawnInitialTunnels.
Во-первых, перед созданием новых туннелей нам нужно удалить уже имеющиеся.
Добавьте нод Sequence после нода Entry. Соедините контакт Then 1 с нодом ForLoop.
Примечание: нод Sequence выполняет свои выходы в последовательном порядке. Это отличный способ упорядочить граф вертикально, особенно когда цепочки нодов очень длинные.
Затем создайте следующие ноды:
Эта схема получит все существующие туннели и удалит их из игры.
Наконец, соединим контакт Then 0 нода Sequence с нодом Get All Actors of Class. Благодаря этому туннели удалятся до процесса создания.
Вот как выглядит конечный граф:
Последнее, что нужно сделать — обработать нажатие на кнопку.
Обработка нажатий на кнопку
Нажмите на Compile и закройте BP_TunnelSpawner.
Перейдите в Content Browser и найдите папку UI. Дважды щёлкните на WBP_Restart, чтобы открыть его.
Выберите RestartButton и перейдите к панели Details. Перейдите в раздел Events и нажмите на кнопку рядом с OnClicked.
Это создаст нод On Clicked (RestartButton). Этот нод выполняется, когда игрок нажимает на RestartButton.
Воссоздайте следующую схему:
Подведём итог:
- Get Owning Player Pawn возвращает Pawn, которым в текущий момент управляет игрок
- Cast to BP_Player проверяет, принадлежит ли Pawn к классу BP_Player
- Если это так, то он вызывает функцию RestartGame. Эта функция сбрасывает игрока и скрывает кнопку перезапуска.
- Get All Actors of Class и Get возвращает BP_TunnelSpawner и вызывает SpawnInitialTunnels. Эта функция удаляет все существующие туннели и спаунит новые.
Примечание: Вам может быть интересно, почему я не использовал переменную-ссылку для BP_TunnelSpawner. Главная причина заключается в том, что BP_Tunnel не связан с WBP_Restart. Для нашей простой игры проще реализовать такой способ, чем выяснять, где хранить переменную-ссылку.
Нажмите на Compile и закройте Blueprint editor. Нажмите на Play, чтобы проверить работу кнопки перезапуска!
Спойлер
Что мне нужно знать, чтобы использовать Unreal Engine
Первое, что нам нужно, очень важно, это времени. Как мы уже объясняли, кривая обучения моторики довольно крутая. Следовательно, нам придется потратить много времени на знакомство с его интерфейсом и всеми функциями, которые он нам предлагает, если мы действительно хотим начать программировать видеоигры на этом движке
Если возможно, мы рекомендуем начать с курса Unreal Engine, даже если у нас уже есть предыдущие знания других языков или движков, чтобы ознакомиться с ним. Документация — это элемент, который мы всегда должны иметь под рукой.
Кроме того, хотя мы можем многое сделать из интерфейса программы, есть вещи, которые мы обязательно должны запрограммировать вручную. И единственный язык, который мы можем использовать для этой цели, — это C ++ , поскольку его интерпретатор не поддерживает другие языки. Если мы не умеем программировать на C ++ в долгосрочной перспективе, у нас будут проблемы.
Шейдеры Unreal Engine 4
В первую очередь я стараюсь делать большинство моих эффектов, используя шейдеры, прежде чем я увижу, нужна ли симуляция. Есть три способа, которые я постоянно использую в своих материалах, чтобы подделать какую-то анимацию без необходимости использования флипбуков.
Один из них — это использование текстуры для начальной маски, а другие — это пэнинг тайлированных текстур с различной скоростью и разными размерами UV. После объединения их друг с другом, их можно стакать до бесконечности, но помните, что чем больше у вас слоёв, тем меньше будет прозрачность.
Alpha Threshold — это иллюзия плавного рассеивания текстуры. Это дает более интересный способ рассеивания эффекта по сравнению с простым угасанием. Я обычно подключаю параметр, который управляет анимацией через непрозрачность, или использую динамический параметр, который устанавливает значение от 0 до 1.
И напоследок искажение UV, используя пэннинг текстур, который добавляется на UV. Это можно использовать для создания некоторого движения в текстуре, которая может быть слишком статичной и использоваться для создания большей случайности.
Lego Star Wars: The Complete Saga
Оригинальная игра Lego Traveller’s Tales, Lego Star Wars, является доказательством того, что великая идея может жить вечно. Полная сага охватывает эпизоды с I по VI, воссоздает приключения всех ключевых персонажей в блочной форме и просит вас сломать все на своем пути на пути к победе над Империей.
Лучше всего играть в локальную кооперативную игру, ее нежные головоломки и добродушный юмор делают ее отличным выбором для игры с маленькими членами семьи. Разумеется, если вы не храните ее для себя. А благодаря создателю пользовательских персонажей, вы можете сделать Бобу Фетта повелителем Ситхов.
Более того, на горизонте появилась новая игра Lego Star Wars — LEGO Star Wars: The Skywalker Saga – с участием всех девяти основных фильмов и галактики с открытым миром, полной случайных встреч и большого количества юмора.
Tony Hawk’s Pro Skater 1 + 2
Ремастер первых двух частей симулятора скейтбординга Tony Hawk — 1999 и 2000 годов соответственно. Создатели обновлённой версии — Vicarious Visions. Студия работала с оригинальным кодом Neversoft, разработчиков оригинала.
Скриншот: игра Tony Hawk’s Pro Skater 1 + 2 / tonyhawkthegame.com
Tony Hawk’s Pro Skater 1 + 2 получилась аутентичной, разработчики смогли передать атмосферу уровней оригинальных игр и при этом реалистично изобразить освещение, структуру материалов, отражения и анимацию трюков. Ветераны серии мгновенно узнают фирменные детали, а новых игроков может привлечь высокий темп, сложность трюков и саундтрек времён поколения MTV.
Игра стала самой быстро продаваемой в серии. Миллион копий Tony Hawk’s Pro Skater 1 + 2 купили за первые десять дней с релиза.
Вступление
Привет, меня зовут Nathan Huang. Я вырос в Новой Зеландии и недавно переехал в Лос-Анджелес, чтобы учиться в школе визуальных эффектов Gnomon. Я сперва изучал традиционное искусство, прежде чем узнал о визуальных эффектах. На протяжении всего моего детства я много рисовал, начал использовать Photoshop в свои школьные годы. Во время моего пребывания в Gnomon я изначально хотел просто научиться VFX’у для кино и рекламы, но потом познакомился с потрясающим миром реалтайм VFX благодаря моему инструктору Keith Guerrette. В настоящее время я работаю VFX художником в Survios, а в моем портфолио числятся такие игры, как: VR: Raw Data и Sprint Vector.
Отображение кнопки перезапуска
Виджет, который мы будем отображать, называется WBP_Restart. Его можно найти в папке UI. Вот как он выглядит:
Чтобы отобразить или скрыть виджет, нам нужна ссылка на него. Откройте BP_Player и создайте новую переменную RestartWidget. Измените Variable Type на WBP_Restart\Object Reference.
Затем перейдите в Event Graph и найдите нод Event BeginPlay.
Добавьте нод Create Widget и задайте Class значение WBP_Restart.
Теперь добавьте нод Set Restart Widget и соедините всё следующим образом:
Теперь при спауне игрока мы будем создавать экземпляр WBP_Restart. Следующим шагом будет создание функции, отображающей этот экземпляр.
Создание функции отображения
Создайте новую функцию и назовите её DisplayRestart. Сделав это, создайте следующий граф:
Подведём итог:
- Add to Viewport отображает RestartWidget на экране
- Set Input Mode UI Only позволяет игроку взаимодействовать только с UI. Мы делаем так, чтобы игрок не мог перемещаться, пока он мёртв.
- Как можно понять из названия, Set Show Mouse Cursor просто отображает курсор мыши
Для отображения кнопки перезапуска нам нужно просто вызывать DisplayRestart после столкновения игрока со стеной.
Вызов функции отображения
Закройте граф DisplayRestart и нажмите на Compile.
Переключитесь на BP_Tunnel и найдите нод On Component Hit (WallMesh).
Добавьте нод DisplayRestart в конец цепочки нодов.
Нажмите на Compile и закройте BP_Tunnel. Вернитесь к основному редактору и нажмите на Play. Когда игрок сталкивается со стеной, отображается кнопка перезапуска.
Спойлер
Последним шагом будет перезапуск игры при нажатии на кнопку.
6 место – XCOM: Enemy Unknown
XCOM Enemy Unknown
На Unreal Engine 3 нашлось место не только шутерам и RPG, но и тактикам, какой и является XCOM: Enemy Unknown. Этот проект был разработан Firaxis Games – студией, которая также известна по серии Civilization. XCOM 2012 года стала ремейком оригинальной игры, вышедшей в далеком 1993.
В XCOM: Enemy Unknown игроку предстояло возглавить последний оплот человеческого сопротивления – организацию XCOM – и отбиться от наступления пришельцев.
XCOM Enemy Unknown скриншот
Из игрового процесса выделяются две составляющие – глобальная стратегия и тактика. В первом случае нужно действовать на мировой карте, отдавая различные приказания отрядам, а также управлять самой базой, выполняя экономические и технические задачи. Во втором же идет непосредственно геймплей, разворачивающийся в городах, на кораблях пришельцев и везде, где может развернуться сражение.
Помимо всего прочего, XCOM: Enemy Unknown выделялась и отличной графикой, что тоже стало возможным с помощью Unreal Engine 3. Безусловно, игра является одной из самых лучших стратегий на этом движке.