Внутри инфо игры: (2019) - Inside Game - - -

Содержание

XLab // Главная

Офлайн-школа разработки игр XLab

УЧЕБНЫЕ ПРОГРАММЫ

ЮНИТ 1: Основы Unity

ПРОДОЛЖИТЕЛЬНОСТЬ: 2 недели

Что вы узнаете?

  • основы среды Unity и С#
  • навигация и режимы просмотра сцен
  • объекты, префабы, компоненты
  • основы Git

Чему научитесь?

  • создавать и работать со сценами Unity в 3D/2D
  • создавать и настраивать объекты
  • настраивать свой первый проект, управлять ресурсами проекта

Какой результат?

  • первый проект в Unity “Hello World”
  • первая сборка Android на своем телефоне

ЮНИТ 2: Выбор своего проекта

ПРОДОЛЖИТЕЛЬНОСТЬ: 2 недели

Что вы узнаете?

  • управление объектами сцены, GameObject, основной цикл апдейта в проекте
  • скрипты, основы ООП (объектно-ориентированного программирования), архитектура Unity и базовые классы
  • работа с игровыми объектами и скриптами, простейшие примитивы, алгоритмическое изменение объектов
  • основы UI, черновая верстка

Чему научитесь?

  • базовые приемы программирования в Unity, вызов основных объектов и функций
  • писать свои простейшие скрипты на C#
  • базовая верстка UI

Какой результат?

  • простейшая сцена с действиями над примитивами
  • черновой UI
  • выбор будущего проекта

ЮНИТ 3: Первый прототип

ПРОДОЛЖИТЕЛЬНОСТЬ: 2 недели

Что вы узнаете?

  • импорт ресурсов, Asset store, 3D объекты и основы работы с графическими объектами в сцене Unity
  • основы Input-системы, контроллеры и управление объектами сцены / преобразование объектов (разрушение, коллизии, физика твердых тел)
  • база данных проекта, основы форматов Xml, json

Чему научитесь?

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

Какой результат?

  • первый геймплей будущего проекта
  • основные объекты игры, базовые настройки в текстовом файле

ЮНИТ 4: Основы геймдизайна

ПРОДОЛЖИТЕЛЬНОСТЬ: 4 недели

Что вы узнаете?

  • обязательные элементы геймдизайна: технические задания, баланс, базовый игровой цикл, техническая настройка проекта
  • взаимодействия с объектами (стрельба, столкновения, разрушения)
  • переход между сценами, старт и завершение игры, сохранение состояний
  • первое тестирование проекта, основы работы с беклогом, поиск и исправление багов

Чему научитесь?

  • условия победы и проигрыша в своей игре
  • первый баланс и его настройка
  • определять интерес “игрока” в проекте (монетизация)

Какой результат?

  • основной игровой цикл в вашей игре
  • первые впечатления от игрового баланса

ЮНИТ 5: Основы 3D графики

ПРОДОЛЖИТЕЛЬНОСТЬ: 4 недели

Что вы узнаете?

  • шейдеры
  • отладка и оптимизация графического контента
  • основы 2D GUI, чистовая верстка интерфейса
  • анимация, действия со спрайтами
  • освещение сцены, игровые камеры, пост-процессинг
  • простейшие звуки и музыка в вашей игре
  • настройка сборки проекта

Чему научитесь?

  • визуально настраивать сцену игры
  • рисовать и верстать чистовой игровой интерфейс
  • настраивать эффекты
  • добавлять звуки в проект

Какой результат?

  • ваша игра приобретает красивый вид, начинает хорошо звучать, появляется интерфейс

ЮНИТ 6: Проверка и публикация

ПРОДОЛЖИТЕЛЬНОСТЬ: 2 недели

Что вы узнаете?

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

Чему научитесь?

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

Какой результат?

  • ваша собственная игра у вас на телефоне
  • при желании ваша собственная игра, опубликованная в Appstore или Playmarket

ФОРМАТ ОБУЧЕНИЯ

5 месяцев

Unity + GameDesign + Art. Сочетание трех элементов научит основам создания игр

Очно

Для максимального погружения в процесс обучения

8 – 12 человек

Такой формат позволяет уделить максимум внимания каждому студенту

Результат — игра на Unity

Каждый сможет загрузить свою игру в AppStore или Google Play

АДРЕСА ШКОЛ

Краснодар
Краснодар, ул. Красных Партизан, д. 200, пом. 114

Москва
Москва, ул. Годовикова, д. 9, строение 17, пом. 4

ПРЕПОДАВАТЕЛИ

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

Валентин Павлов

15 лет в GameDev

В программе обучения отвечаю за часть разработки на Unity. Передам свои знания и на практике покажу все тонкости основ Unity
Антон Кудрявцев

10 лет в GameDev

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

5 лет в GameDev

Графика производит первое впечатление на игрока и создает особую атмосферу. Я поделюсь опытом создания высококачественного контента

Отзывы наших учеников

Проект

Midnight Kaido

Александр Андреев

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

Beginner Developer

Проект

Alliance

Денис Афанасьев

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

Beginner Developer

Проект

Alliance

Арсений Гуцев

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

Beginner Developer

Проект

Bloody Maze

Ирина Ибрагимова

Этот курс научил меня правильной архитектуре кода, что такое форк и как с ним работать, как писать чистый код. Лекции про UI, монетизацию про гейм–левл дизайн были крайне полезны, интересно слушать преподавателя по программированию. Я бы порекомендовала этот курс тем, кто уже знаком с Unity и знает ООП хотя бы поверхностно.

Beginner Developer

Проект

Bloody Maze

Дмитрий Какаулин

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

Beginner Developer

Проект

Alliance

Вадим Кузьмин

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

Beginner Developer

Проект

Midnight Kaido

Александр Мирошниченко

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

Beginner Developer

Проект

Devoid of Everglow

Яна Шушкина

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

Beginner Developer

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

Сделают ли мне job offer по окончании программы?

Да*

Лучших учеников мы будем рекомендовать для трудоустройства в игровые студии — партнеры XLab.

Легко ли будет найти работу после прохождения курса Beginner developer от XLab?

Безусловно!

Безусловно, в игровой индустрии на любой позиции легче найти работу со знанием Unity, чем без него. Это стандарт, которому мы вас научим.

Можно ли сразу найти работу программиста после завершения курса?

Все возможно*

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

Насколько сложные вступительные тесты в XLab?

Умение включать компьютер и желание учиться

На курс Beginner Unity developer можно пройти со знаниями школьной математики и информатики, базовых навыков ИТ и опытом мобильного гейминга. Самое главное — любить игры!

Сложно ли обучаться в XLab?

Сложно, но интересно!

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

Какой уровень зарплат в игровой индустрии?

$1000 — $3500

На стартовой позиции тестировщика можно получить от $600 до $1000, начальный уровень программиста от $1200 и до $3500, у высококлассных специалистов. В целом, благодаря мотивационным программам, в компаниях часто нет даже потолка зарплат. Но в игровую индустрию, как правило, идут не столько за высокой зарплатой, а за своим профессиональным счастьем — “делать то, что нравится и получать за это достойное вознаграждение”

Могу ли я сам издать свою игру и зарабатывать на ней деньги?

Нет ничего невозможного*

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

Не нашли ответ на свой вопрос?

Напишите нам на почту [email protected] и вам не придется долго ждать

Хотите улучшить свои навыки?

Скоро мы открываем набор на 2 продвинутых программы по разработке игр. Оставьте нам свой e-mail, чтобы быть в числе первых!

Middle developer

Подходит для кандидатов с опытом программирования и базовыми знаниями Unity.

  • Unity
  • Visual Studio, C#
  • Blender
  • Photoshop
Advanced developer

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

  • Unity
  • Visual Studio, C#
  • Blender
  • Photoshop

Каркас игры на Pygame. Урок 2

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

Эти команды (импорт модуля, вызовы функций, цикл) создают своего рода скелет, или каркас, программного кода. Выполнив его, вы получите «пустую» игру. Далее на этот скелет «подвешивается мясо», т. е. объявляются объекты и программируется логика игры.

Первое, что нужно сделать, это импортировать модуль pygame. После этого можно вывести на экран главное графическое окно игры с помощью функции set_mode() модуля display, входящего в состав библиотеки pygame:

import pygame
 
pygame.display.set_mode((600, 400))

Если выполнить этот код, то появится окно размером 600×400 пикселей и сразу закроется (в Linux, в Windows может зависнуть).

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

Флаги предназначены для переключения на аппаратное ускорение, полноэкранный режим, отключения рамки окна и др. Например, команда pygame.display.set_mode((640, 560), pygame.RESIZABLE) делает окно изменяемым в размерах.

Выражение вида pygame.RESIZABLE (вместо RESIZABLE может быть любое другое слово большими буквами) обозначает обращение к той или иной константе, определенной в модуле pygame. Часто можно встретить код, в котором перед константами не пишется имя модуля (вместо, например, pygame.QUIT пишут просто QUIT). В этом случае в начале программы надо импортировать не только pygame, но и содержимое модуля locals через from … import:

import pygame
from pygame.locals import *

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

Функция set_mode() возвращает объект типа Surface (поверхность). В программе может быть множество объектов данного класса, но тот, что возвращает set_mode() особенный. Его называют display surface, что можно перевести как экранная (дисплейная) поверхность.

Она главная.

В конечном итоге все отображается на ней с помощью функции pygame.display.update() или родственной pygame.display.flip(), и именно эту поверхность мы видим на экране монитора. Нам пока нечего отображать, мы не создавали никаких объектов. Поэтому было показано черное окно.

Функции update() и flip() модуля display обновляют содержимое окна игры. Это значит, что каждому пикселю заново устанавливается цвет. Представьте, что на зеленом фоне движется красный круг. За один кадр круг смещается на 5 пикселей. От кадра к кадру картинка целого окна изменяется незначительно, но в памяти окно будет перерисовываться полностью. Если частота составляет 60 кадров в секунду (FPS=60), то за секунду в памяти компьютера произойдет 60 обновлений множества значений, соответствующих экранным пикселям, что дает по большей части бессмысленную нагрузку на вычислительные мощности.

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

Однако можно передать более мелкую прямоугольную область или список таковых. В этом случае обновляться будут только они.

Функция flip() решает проблему иным способом. Она дает выигрыш, если в set_mod() были переданы определенные флаги (аппаратное ускорение + полноэкранный режим – pygame.HWSERFACE|pygame.FULLSCREEN, двойная буферизация – pygame.DOUBLEBUFF, использование OpenGL – pygame.OPENGL). Возможно, все флаги можно комбинировать вместе (через |). При этом, согласно документации, аппаратное ускорение работает только в полноэкранном режиме.

Вернемся к нашим трем строчкам кода. Почему окно сразу закрывается? Очевидно потому, что программа заканчивается после выполнения этих выражений. Ни init(), ни set_mode() не предполагают входа в «режим циклического ожидания событий». В tkinter для этого используется метод mainloop() экземпляра Tk(). В pygame же требуется собственноручно создать бесконечный цикл, заставляющий программу зависнуть. Основная причина в том, что только программист знает, какая часть его кода должна циклически обрабатываться, а какая – нет.

Например, код, создающий классы, объекты и функции не «кладут» в цикл.

Итак, создадим в программе бесконечный цикл:

#  Осторожно! Эта программа зависнет.
import pygame as pg
 
pg.display.set_mode((600, 400))
 
while 1:
    pass
 

После такого окно уже не закроется, а программа благополучно зависнет насовсем. Многократные клики по крестику не помогут. Только принудительная остановка программы через среду разработки или Ctrl+С, если запускали через терминал.

Как сделать так, чтобы программа закрывалась при клике на крестик окна, а также при нажатии Alt+F4? Pygame должен воспринимать такие действия как определенный тип событий.

Добавим в цикл магии:

#  Окно закроется, но с ошибкой.
import pygame as pg
 
pg.display.set_mode((600, 400))
 
while 1:
    for i in pg.event.get():
        if i.type == pg.QUIT:
            pg.quit()

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

Рассмотрим выражение pygame.event.get(). Модуль event библиотеки pygame содержит функцию get(), которая забирает список событий из очереди, в которую записываются все произошедшие события. То, что возвращает get() – это список. Забранные события удаляются из очереди, то есть второй раз они уже забираться не будут, а в очередь продолжают записываться новые события.

Цикл for просто перебирает схваченный на данный момент (в текущей итерации цикла) список событий. Каждое событие он присваивает переменной i или любой другой. Чтобы было понятней, перепишем программу таким образом:

#  Окно закроется, но с ошибкой.
import pygame as pg
 
pg.display.set_mode((600, 400))
 
while 1:
    events = pg.event.get()
    print(events)
    for i in events:
        if i.type == pg.QUIT:
            print(pg.QUIT)
            print(i)
            print(i.type)
            pg.quit()

На экране вы увидите примерно такое:

…
[]
[<Event(512-...)>, <Event(256-Quit {})>]
256
<Event(256-Quit {})>
256
Traceback (most recent call last):
  File "/home/pl/…/event2. py", line 7, in <module>
    events = pg.event.get()
pygame.error: video system not initialized

Вверху будет множество пустых квадратных скобок, которые соответствуют пустым спискам events, создаваемым на каждой итерации цикла while. И только когда окно закрывается, генерируются два события. Свойство type второго имеет значение 256, что совпадает со значением константы QUIT.

В pygame событие – это объект класса Event. А если это объект, то у него есть атрибуты (свойства и методы). В данном случае мы отслеживаем только те события, у которых значение свойства type совпадает со значением константы QUIT модуля pygame. Это значение присваивается type тогда, когда происходят события нажатия на крестик или Alt+F4. Когда эти события происходят, то в данном случае мы хотим, чтобы выполнилась функция quit() модуля pygame, которая завершает его работу.

Теперь почему возникает ошибка. Функция pygame.quit() отключает (деинициализирует) pygame, но не завершает работу программы. Таким образом, после выполнения этой функции отключаются модули библиотеки pygame, но выхода из цикла и программы не происходит. Программа продолжает работу и переходит к следующей итерации цикла while (или продолжает выполнять тело данной итерации, если оно еще не закончилось).

В данном случае происходит переход к следующей итерации цикла while. И здесь выполнить функцию get() модуля event оказывается уже невозможным. Возникает исключение и программа завершается. По-сути программу завершает не функция pygame.quit(), а выброшенное, но не обработанное, исключение.

Данную проблему можно решить разными способами. Часто используют функцию exit() модуля sys. В этом случае код выглядит примерно так:

import pygame as pg
import sys
 
pg.display.set_mode((600, 400))
 
while 1:
    for i in pg.event.get():
        if i.type == pg.QUIT:
            pg.quit()
            sys.exit()

Сначала отключается pygame, потом происходит выход из программы. Такой вариант вероятно следует считать наиболее безопасным завершением. Команда pygame.quit() не обязательна. Если завершается программа, то отключится и pygame.

Другой вариант – не допустить следующей итерации цикла. Для этого потребуется дополнительная переменная:

import pygame as pg
 
pg.display.set_mode((600, 400))
 
play = True
while play:
    for i in pg.event.get():
        if i.type == pg.QUIT:
            play = False

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

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

import pygame as pg
 
 
def main():
    pg.display.set_mode((600, 400))
 
    while True:
        for i in pg.event.get():
            if i.type == pg.QUIT:
                return
 
 
if __name__ == "__main__":
    main()

Теперь зададимся вопросом, с какой скоростью крутится цикл while? С большой, зависящей от мощности компьютера. Но в данном случае такая скорость не есть необходимость, она даже вредна, так как бессмысленно расходует ресурсы. Человек дает команды и воспринимает изменения куда медленнее.

Для обновления экрана в динамической игре часто используют 60 кадров в секунду, а в статической, типа пазла, достаточно будет 30-ти. Из этого следует, что циклу незачем работать быстрее.

Поэтому в главном цикле следует выполнять задержку. Делают это либо вызовом функции delay() модуля time библиотеки pygame, либо создают объект часов и устанавливают ему частоту кадров. Первый способ проще, второй – более профессиональный.

...
while 1:
    for i in pg.event.get():
        if i.type == pg.QUIT:
            sys.exit()
    pg.time.delay(20)

Функция delay() принимает количество миллисекунд (1000 мс = 1 с). Если передано значение 20, то за секунду экран обновится 50 раз. Другими словами, частота составит 50 кадров в секунду.

import pygame as pg
import sys
 
pg.display. set_mode((600, 400))
 
clock = pg.time.Clock()
 
while 1:
    for i in pg.event.get():
        if i.type == pg.QUIT:
            sys.exit()
    clock.tick(60)

Методу tick() класса Clock передается непосредственно желаемое количество кадров в секунду. Задержку он вычисляет сам. То есть если внутри цикла указано tick(60) – это не значит, что задержка будет 60 миллисекунд или произойдет 60 обновлений экрана за одну итерацию цикла. Это значит, что на каждой итерации цикла секунда делится на 60 и уже на вычисленную величину выполняется задержка.

Нередко частоту кадров выносят в отдельную константоподобную переменную:

...
FPS = 60
...
clock = pg.time.Clock()
 
while 1:
    ...
    clock.tick(FPS)

В начало цикла или конец вставлять задержку зависит от контекста. Если до цикла происходит отображение каких-либо объектов на экране, то скорее всего надо вставлять в начало цикла. Если первое появление объектов на экране происходит внутри цикла, то в конец.

В итоге каркас игры на Pygame должен выглядеть примерно так:

# здесь подключаются модули
import pygame
import sys
 
# здесь определяются константы,
# классы и функции
FPS = 60
 
# здесь происходит инициация,
# создание объектов
pygame.init()
pygame.display.set_mode((600, 400))
clock = pygame.time.Clock()
 
# если надо до цикла отобразить
# какие-то объекты, обновляем экран
pygame.display.update()
 
# главный цикл
while True:
 
    # задержка
    clock.tick(FPS)
 
    # цикл обработки событий
    for i in pygame.event.get():
        if i.type == pygame.QUIT:
            sys.exit()
 
    # --------
    # изменение объектов
    # --------
 
    # обновление экрана
    pygame.display.update()

В модуле pygame.display есть функция set_caption(). Ей передается строка, которую она устанавливает в качестве заголовка окна. Сделайте так, чтобы каждую секунду заголовок окна изменялся.

Курс с примерами решений практических работ:
pdf-версия, android-приложение


Объяснение концовки и реального значения

Быстрые ссылки

  • Объяснение внутренней игры: что на самом деле происходит во время концовки внутренней части
  • Объяснение альтернативной концовки внутренней игры

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

Ближе к концу Внутри игроки окажутся — и главный герой безымянного мальчика — поглощенными существом, известным как Хаддл, которое, похоже, состоит из человеческих конечностей и над которым экспериментировали ученые. Оказавшись внутри Хаддла, последние 30 минут или около того игрокам необходимо сбежать из изолятора, играя за Хаддла. Посмотрите сами сцену в видео на YouTube от Generic Gaming ниже:

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

Связанный: Как решить подземную головоломку в Inside

Объяснение игры Inside: что на самом деле происходит во время концовки Inside

Возможно, добавление к этой путанице концовки Inside заключается в том, что как только Хаддл действительно вырывается на свободу и катится вниз по склону горы, Внутри просто заканчивается. Как и в остальной части игры Playdead, концовка игры Inside должна быть открыта для интерпретации не только того, мертв Хаддл (и мальчик, если уж на то пошло), но и того, что означает концовка в целом. Одна из преобладающих теорий заключается в том, что мальчика контролировал Хаддл, и похожее на каплю существо хотело вырваться на свободу только для того, чтобы над ним перестали экспериментировать.

Учитывая, что мальчик ворвался в сильно укрепленный объект и не только точно знал, куда идти, чтобы решить Головоломки Inside , освободили Хаддла, а также стали его частью, имеет смысл, что Хаддлу каким-то образом удалось использовать мальчика (который является самым младшим из всех персонажей Inside и, следовательно, пожалуй, самым восприимчивым к этому типу контроля над разумом), чтобы освободиться. Кроме того, контроль над разумом был очень заметной темой и игровой механикой, так что такая теория на самом деле имеет большой смысл.

Объяснение альтернативной концовки внутри игры

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

В В секретной концовке игроки оказываются в другом бункере и должны отключить один из шлемов управления разумом, выдернув его из розетки. После этого мальчик теряет волю и попадает в то же положение, что и другие безмозглые дроны, встречающиеся на протяжении всей игры. Это говорит о том, что мальчика все время контролировала внешняя сила, а не капля. Смотрите альтернативу Завершение игры Inside в видео The Mighty Jingles здесь:

Это может быть своего рода комментарий к игроку, который управлял мальчиком на протяжении всего повествования Inside . Тем не менее, это могло также относиться к одному из ученых, который пытался усовершенствовать то, что такое Хаддл, тем самым давая существу иллюзию побега в финале Внутри . Если Playdead, который работает над новой игрой после Limbo и Inside , когда-либо действительно раскроет, что происходит, нет никакого надежного способа объяснить Внутри Конец, так как он должен быть открытым для интерпретации.

Подробнее: Как Little Nightmares 3 может развить серию

Внутри: Все технологии учтены: NPR

Чтение игры: Внутри: Все технологии учтены 900 96 В этом выпуске нашей периодической серии статей о рассказывании историй в видеоигры, мы взглянем на темный платформер-головоломка Inside . Вы играете за мальчика в красной куртке, без особых способностей — так что бегите!

Чтение игры

В Inside, вы играете мальчиком без каких-либо особых способностей — только способность убегать от окружающих вас монстров. Студии Playdead скрыть заголовок

переключить заголовок

Студии Playdead

В Inside, вы играете мальчиком, у которого нет особых способностей — только способность убегать от окружающих вас монстров.

Студии Playdead

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

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

И ни слова не сказано.

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

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

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

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

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

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

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

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

Но тогда вы это сделаете, потому что это игра, и потому что вперед — единственная доступная вам возможность. И потому что вперед лежит история. Где ответы. Как кинопетля, каждая поступательная сцена дополняет безмолвную массу истории, которую рассказывает Inside — живые свиньи на ферме заражены каким-то паразитом, который сводит их с ума. Почему? Как? Почему каждый человек, которого вы видите, либо пытается вас поймать, остановить, убить вас, либо мертв? Или безмозглое существо, управляемое какой-то невидимой силой, шаркающее вперед в ожидающие клетки и грузовики? Куда они идут?

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *