Игры Andrey Apanasik
624

Road to the IGF: Mirror Drop за авторством Ian Lilley

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

В закладки

Gamasutra поговорили с Ian Lilley, разработчиком игры «Mirror Drop», номинированной на «Excellence in Visual Art», чтобы рассказать о трудностях, с которыми сталкиваются при создании игры, ориентированной на дезориентацию игрока, о сложностях создания головоломок в запутанных игровых пейзажах и о том, как легко заблудиться в царстве собственных бесконечных отражений.

Человек в зеркале

Меня зовут Ian Lilley, и в Mirror Drop я сделал всё, кроме музыки (с которой мне помог the3rdmimi).

Я занимаюсь разработкой игр со второго курса. Мой брат-близнец Sean вместе со мной был завсегдатаем Newgrounds, изначально мы выбрали Flash для создания анимации, но почему-то этот интерес больше сместился в сторону игр. Мы потратили множество часов, следуя случайным урокам, и в итоге создали простую игру, в которой вы избегаете препятствия с помощью мыши (таких игр Newgrounds было сотни). До сих пор я ещё ни разу не смог пройти игру за один присест…предпоследний уровень слишком хардкорен, но в то время мы думали, что это будет подходящим испытанием для других игроков.

Несколько лет спустя мы выпустили гораздо более солидную игру под названием Two Rooms, представляющую собой игру-головоломку, в которой вы управляете двумя персонажами в соседних комнатах и перемещаете препятствия из одной комнаты в другую. После этого мы оба пошли в UPenn по специализации Digital Media Design, нишевой программе с программерскими и художественными классами в учебной программе. Здесь мы действительно увлеклись программированием графики и в свободное время работали над игровыми движками.

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

Искра зеркальных миров

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

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

О разработке Mirror Drop

Моя цель с самого начала состояла в том, чтобы сделать игру на 100 процентов самому, без стороннего движка (хотя я использую библиотеки с открытым исходным кодом для звука, окон, шрифтов и т. д.). Мне нравится этот подход, он даёт абсолютную свободу, но, с другой стороны, гораздо сложнее разобраться во многих вещах, и я часто спрашивал себя: «Могу ли я реализовать это?» Игра написана на C++ и OpenGL/DirectX, и один шейдер отвечает за все визуальные эффекты в игре. Честно говоря, я мог бы дать отдельное интервью только лишь по техническим деталям игры. Каждая строка шейдера и геймплейный код переписывались как минимум пять раз.

Эти привлекательные отражения

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

Мои первые попытки в колледже были неплохи, но, поскольку основывались на растеризации/вокселизации, они выходили неровными или блочными. Для Mirror Drop, как только я понял, что трассировка лучей в реальном времени возможна, я захотел довести её до абсолюта.

Влияние отражённых миров на игрока

Я думаю, смесь отражения, преломления, бесконечного пространства и интенсивности цветов имеет потустороннюю энергетику, которая переводит визуальную систему в состояние перегрузки. Было очень много случаев, когда люди наблюдали за 5+ минутами игрового процесса и заканчивали, говоря: «Я до сих пор не представляю, как работает игра, но мне нравится то, что я вижу».

Моя любимая реакция — когда игроки видят новый уровень и думают…это безумно.

Сначала визуальное зрелище

Основная цель отражений — дезориентировать игрока, поэтому я даю игроку расслабться, когда головоломка включает в себя логику, чтобы она не СЛИШКОМ ломала мозг. Тем не менее, на уровнях, где дезориентация является основой, при проектировании напрашивается вопрос: «Какое самое безумное пространство я могу создать?» Затем я немного передвину шарик, чтобы он оказался в странных местах, и это будет «загадкой».

Это своего рода перевёрнутый процесс из моих предыдущих игр-головоломок, где головоломка появлялась раньше, чем визуальные эффекты, но Mirror Drop начиналась скорее как визуальное зрелище, и здесь есть несколько уровней, которые я просто ОБЯЗАН был включить. Конечно, приятно, когда головоломки хорошо сочетаются.

Челендж при создании уникальных зеркальных миров

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

Нахождение баланса в дезориентации

Я очень люблю, когда какие-то СМИ заряжают в меня кручёным. Но в Mirror Drop я делаю это, чтобы сломить ожидания игрока и превзойти их в хорошем смысле.

Однако у людей разная сопротивляемость, и я пошёл на компромисс в нескольких аспектах. Например, и это будет невозможно объяснить с помощью текста, последний переход на 13 уровне был предпоследним переходом, что означает, что гигантские сферы занимали всё пространство, пока вы пытались решить третью головоломку. Почти всем, кто тестировал игру, не нравился этот конкретный уровень, но Шон (мой брат) думал, что это делает уровень великолепным. Я решил немного его упростить.

Был ещё один уровень, который заканчивался интенсивным светомиганием. Мне было немного грустно удалять его, но я волновался, что у людей начнутся головные боли или что-то в этом роде.

Дезориентация собственной работой

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

#IGF #igf2019 #интервью #Gamasutra #indie

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Andrey Apanasik", "author_type": "self", "tags": ["igf2019","gamasutra","igf","\u0438\u043d\u0442\u0435\u0440\u0432\u044c\u044e","indie"], "comments": 5, "likes": 16, "favorites": 24, "is_advertisement": false, "subsite_label": "games", "id": 43238, "is_wide": false, "is_ugc": true, "date": "Mon, 18 Mar 2019 08:18:17 +0300" }
{ "id": 43238, "author_id": 1922, "diff_limit": 1000, "urls": {"diff":"\/comments\/43238\/get","add":"\/comments\/43238\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/43238"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64953, "last_count_and_date": null }

5 комментариев 5 комм.

Популярные

По порядку

4

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

Ответить
3

Я дезориентирован этим переводом. Каждый абзац как новый уровень с повышением сложности.

Ответить
0

I tried so hard…

Ответить
0

Как-то это всё странно...

Ответить
0

Простите, можно я не буду в это играть? Ничего против не имею, но меня не цепляет :( Удачи автору.

P.S. Перенесете игру в раздел "Инди".

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]
Пять простых способов разогнать свой ПК
с помощью соли и чайной ложки
Подписаться на push-уведомления