Русский
Русский
English
Статистика
Реклама

Adobe air

Из песочницы Как в 30 лет стать старым и никому не нужным на примере разработки квеста

24.10.2020 20:17:25 | Автор: admin
Всем привет. Хочу поделиться своей историей, а именно историей немного затянувшейся разработки простенького pointandclick квеста.

Your browser does not support HTML5 video.

Флешбэки


Мне 21, я молод, работаю в рекламном агентстве веб-дизайнером. Денег хватает на съём жилья и дошик, но я не унываю, ведь это моя первая работа.

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

image

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

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

image
Комп, планшет и один из рабочих моментов. 2012 г.

Первый облом на компе 2 ГБ оперативы, он не тянет Flash и Photoshop одновременно открытыми. Докупаю ещё 2 гб, дело пошло.

Очень нравятся Машинариум и Samorost, я прямо влюблён в их визуальное и звуковое оформление. Вдохновившись, через пять месяцев работы выпускаю свою первую игру Shapik: the quest, квест моей мечты.


Ничего умнее названия Shapik я не придумал, герой в шапочке Шапик.

Немного деталей разработки


Рисовал с помощью планшета Wacom Bamboo A5. Это был первый опыт реального рисования, до этого использовал его для веб-макетов. Фоны фотошоп, персонажи и анимация флеш.

image

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

90% звуков взял с freesound.org, остальные записывал сам. Обрабатывал в Adobe Audition. В игре получилось больше 100 звуков.

Поиграть можно тут (flash).

Игра готова, теперь её нужно продать. В то время флеш-игры активно продаются на FGL(флеш-аукцион). Заливаю игру, аукцион длится три недели, я очень переживаю и радуюсь каждой новой ставке. В один момент приходит предложение, которое равно годовой зарплате в агентстве. Я очень рад, прямо на вершине от счастья.

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

Произошло чудо, за три дня до начала конференции пришло уведомление о номинации сразу в трёх категориях. Прошу знакомого, который находится на конференции, понаблюдать, что будет дальше. И тут он пишет, что мой квест победил в номинации Лучшая будущая мобильная игра, а главный приз Microsoft Surface. Моей радости нет придела, я крутой инди-девелопер.

image

20132015 годы

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

image

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

image
Скриншот с FGL, 3300 долларов за простой платформер

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

image

Также в этот период из флеша все массово бегут на мобилки.

Вспоминаю, что когда-то у меня вышел вроде бы неплохой квест, и чтобы не отставать, портирую его на Android с помощью Adobe AIR. Благо, что всё портирование обошлось нажатием одной кнопки publish.

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

image

Android-устройства у меня нет, в магазин совсем не заглядываю. На одной из вечеринок друг достаёт Samsung Galaxy S5 на тот момент аппарат с космической диагональю и нереально крутым дисплеем. Думаю, дай-ка я взгляну, как там дела у моего мобильного детища, и к своему удивлению обнаруживаю за месяц 35000+ инсталлов и больше 800 комментов. Я шокирован.

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

Shapik: the quest 2, 2015 год


Общая история о ядерной войне и её последствиях появляется очень быстро.

Буквально за три дня на флеше собрал первый уровень.

image

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

image

Игра идёт в Full HD и простой флешик уже не справляется с нагрузкой. Нужно переписывать на GPU (starling). Я совсем не программист, пишу пост на геймдев.ру о поиске напарника.

Отписалось пять человек, первый не отвечал, связался со вторым и все завертелось.

Остаток 2015 года программист учится работать с GPU-флешем, я учусь рисовать и анимировать

2016 год


Хоть у нас совсем нет опыта, разработка идёт бодренько, мы созваниваемся и обсуждаем новые идеи, доработки. Я прям чувствую, что мы одна команда.

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

Работало это примерно так.

  • Обсуждаем новую концепцию уровня или головоломку;
  • Зачастую программист рисует его схематически;
  • Описываем ветки и анимации.

image

Далее тестируем, я собираю список правок и передаю программисту, вся работа идет через dropbox.

В активной разработке проходит год.

У нас готово 12 уровней и демо, это уже вдвое больше, чем у первой части. Заливаю в Steam Greenlight, зеленый свет получаем в течение двух недель.

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

image

2017 год


Прорабатываем сюжет. У программиста это отлично выходит.

Добавляем промежуточные уровни, катсцены, новые анимаци.

Составляющие для анимаций рисую в фотошопе, анимирую во флеше, эффекты покадровый флеш.


В команду добавляется композитор/саунддизайнер.

Появляется атмосферный саундтрек, а также крутейшие звуковые эффекты.

Игра ощущается с новой силой.

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

image
Пример дизайна одного непродолжительного звука

image
Опять релиз немного переносится

2018 год


Квест готов на 80%, финализированы и озвучены практически все уровни, не хватает катсцен, блокнота подсказок, а также главного меню.

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

image

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

image

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

2019 год


Начало 2019-го. Игра готова и проходится от начала до конца, но нормально не протестирована, присутствуют мелкие баги, а также не добавлены некоторые бонусы. Мы в каком-то повисшем состоянии: вроде бы вс` готово, а вроде бы нет.

HTML5 и флеш-игры не продаются совсем. В период разработки Shapik: the quest 2 все мы параллельно работали над другими проектами, за счёт которых было, на что жить и продолжать разработку.

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

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

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

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

Редактор это отдельная история. Разрешение игры 1920x1080, а окна редактора 600x550. В таком маленьком окне приходится очень много двигать камеру, и он ужасно тормозит. Ко всему прочему в нём нет отмены если что-то запорол, спасёт только последнее сохранение.

image
Окно редактора 600x550

Редактор умеет открывать и проигрывать.gaf-анимации, которые потом расставляются на сцене. После того как весь арт и анимашки расставлены, нажимаем сохранить и получаем нереально длинную строку с параметрами, которую нужно перенести во флеш-девелоп, а потом скомпилить

image

Если что-то сдвинулось повторяем операцию. Правка какой-то мелочи занимает тонну времени.

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

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

image

Композитор также завален работой, озвучивание останавливается.

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

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


image
Монтаж After Effects

Понимаем что в названии Shapik: the quest 2 нужно избавляться от 2, новое название Shapik: the moon quest.

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

image

Отправляю по списку всем. Из 60 ответили 20, реально заинтересованных 5, отвечают раз в неделю.

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

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

Иду в поход в Карпаты на три недели. В горах нет мобильной связи, а интернета и подавно. Это очень сильно помогает отвлечься.

image

Перед походом скидываю список правок.

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

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

Нужно что-то менять, настало время офиса


image

Вроде бы за время работы над казуалками я немного набрался опыта, ищу вакансии аниматора.

Мне быстро отвечают и скидывают тестовые задания. Выполнил, зовут на собеседование.

В один день совпало два собеседования. Из моей деревни до Киева 10 часов на поезде. Поезд приходит в 8 утра, первое собеседование на 11.

image
Вперед на собеседование!

Я в Киеве, прогуливаюсь по городу. Очень сильно волнуюсь: это второе собеседование и первое в серьезной компании, что там будет непонятно.

В 9 утра приходит сообщение.
Доброе утро,

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

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

Что это за ответ и что это за бред

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

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

image

Медленно волочусь по Андреевскому спуску. Захожу в какую-то кафешку и встречаю старого знакомого. За бокалами пивка день перестает быть грустным. Поезд назад в 21: 00.

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

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

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

Меня отпускает и как будто открывается второе дыхание, дорабатываю тонны анимашек и арта, которые постоянно откладывал, усиленно тестирую игру, а также собираю список правок. Наконец-то оформляю сайт и страницу в стиме.

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

2020 год


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

В игре 22 уровня, 60 минут игровой музыки, более 1000 уникальных анимаций и звуков.

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

Подводя итоги хочется сказать об ошибках которые мы совершили.

  • Отсутствие сценария и понимания, какой будет игра;
  • Постоянная недооценка реальных сроков;
  • Желание сделать 100500 фишечек;
  • Отсутствие нормальных инструментов(редактор игровых сцен, система контроля версий, сборщик);
  • Отсутствие нормального тестирования;
  • Работа с комьюнити.
  • Этот пост написан не ради нытья или чтобы вызвать жалость, а для того чтобы показать будни просто разработчика.

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

В целом очень забавно, что трое левых чуваков с флеш-форума смогли закончить игру.
P.S. Планы на будущее:

  • Зарелизить квест;
  • Найти работу (недавно предлагали революционную должность сторож-программист. В обязанности входит: реклама продукции в интернете, создание визиток/листовок, обход территории каждый час).

Еще немного атмосферных фото

image
Подробнее..

Перевод Как я модернизировал свою Flash-игру

14.08.2020 12:15:32 | Автор: admin

В этом посте я расскажу о том, как перенёс свою Flash-игру Frog Fractions на современную платформу. В результате я создал частично автоматизированный порт на Unity при помощи Haxe. Пост будет интересен всем, кто пытается модернизировать свою кодовую базу на Flash. В посте будут приведены спойлеры о структуре Frog Fractions: Game of the Decade Edition и её DLC Hop's Iconic Cap.

После того, как игре Frog Fractions 2 не удалось сделать меня богатым, я примерно год занимался работой по контракту и скетчами/прототипами. Потом моя жена забеременела, и я решил, что настало время найти настоящую работу, чтобы можно было содержать семью. Перед началом GDC 2018 я опубликовал твит о поиске работы, надеясь найти на конференции нужных людей. Я прошёл собеседования в нескольких местах, но самым важным стало то, что мне удалось найти финансирование для своего следующего проекта.

Проект был таким: спрятать следующую игру Frog Fractions внутри Frog Fractions 1 и продать её в Steam.

Frog Fractions состоит примерно из 13k строк кода на Actionscript 3 и собрана с помощью компилятора Flex. Я прикинул, что после добавления нового контента ремастера объём утроится, примерно до 40k строк кода. (И моя оценка оказалась довольно точной получилось 28k кода на C# и 3k строк скриптов катсцен/деревьев диалогов в дополнение к оригинальной игре.)

Я рассмотрел несколько возможных вариантов дальнейшей работы:

  • Продолжить писать игру на AS3 и собрать её с помощью Adobe AIR. Это был самый простой способ, но он имел несколько важных недостатков:
    • Frog Fractions имела программный рендеринг и создавалась под разрешение 640x480. При более высоком разрешении картинка становилась очень некрасивой. Такое ограничение было вполне приемлемым для браузерной игры в 2012 году но, скорее всего, в 2020 году в Steam никого не устроит.
    • Flex уже начал выдавать ошибки памяти, когда кодовая база оригинала игры превысила 10k строк кода, если я не делал полной пересборки. Сломается ли всё окончательно при 40k строк? (Специалисты говорят, что нет, и что мне достаточно настроить флаги компилятора.)
    • Flash уже находился при смерти. Будет ли вообще существовать AIR в 2020 году? (Оказалось, что он жив и хорошо себя чувствует! Прекратилась поддержка только браузерного плагина.)
    • Я подумывал о том, чтобы когда-нибудь перенести игру на консоли. Люди выпускали целые игры, полностью созданные в Scaleform (The Banner Saga, Road Not Taken), но было непонятно, будет ли жив Scaleform или что-то подобное в 2020 году. (Оказалось, что в 2018 году Autodesk прекратила продажи Scaleform, а все обсуждения о его замене касались только самой притягательного его аспекта дизайна UI.)
  • Встроить в мою игру Flash VM и перехватывать её код ввода-вывода. Существуют виртуальные машины Flash с открытым исходным кодом, но ни одна из них не показалась мне доступной или достаточно готовой для моего проекта. Сегодня я слышу хорошие отзывы о Ruffle. Возможно, она неплоха?
  • Портировать игру на C#/Unity. Потребуется куча ручного труда и довольно скучная работа по запуску игры.
  • Собрать два исполняемых файла: загружать игру на Flash, а когда игрок доберётся до нового контента, переключаться на Unity. Я представлял, что как-нибудь заставлю два исполняемых файла выполнять отрисовку в одном окне. Уверен, что это реализуемо, но, вероятно не из Unity, и подобные вещи обычно очень хрупки и обязательно ломаются при следующем обновлении Windows. (Если бы сегодня к моей голове приставили пистолет и заставили это сделать, то я, вероятно, открыл бы TCP-соединение между двумя процессами и передавал бы по нему видео. У Flash имелась хорошая поддержка воспроизведения видео, и я уверен, что существует плагин Unity, выполняющий кодирование видео.)
  • Портировать игру на Haxe и OpenFL. Есть инструмент под названием as3hx для преобразования кода на AS3 в очень похожий код на Haxe, а OpenFL пытается стать спасательной капсулой для Flash API. Я с неделю поигрался с OpenFL и пришёл к выводу, что на то время он был недостаточно завершённым.

Хочу здесь подчеркнуть, что все эти подходы основывались на том, что Frog Fractions по своей сути была программой,, которую я писал для компиляции в SWF. Не могу судить, насколько моё решение применимо к вашей игре, если она является таймлайном анимации Flash, интерактивность которой обеспечивают скрипты.

Я поспрашивал советов о том, как мне двигаться дальше, и самый полезный мне дал Ларс Дусет, кроме прочего сообщивший, что у Haxe есть C#-бэкенд и его целевой платформой может быть Unity. Ещё он посоветовал мне сначала придумать рабочий процесс и портировать с его помощью небольшой проект.

(Примечание для себя: добавить Ларса Дусета в титры игры. Я не мог представить, насколько сильное влияние он оказал на прокт, пока не стал перечитывать нашу переписку.)

Спустя неделю экспериментов мне удалось запустить Frog Infarctions (игру, которую я написал 0-hour game jam Соса Сосовски) в редакторе Unity. Результат был неидеальным, но его оказалось достаточно, чтобы понять возможность реализации, поэтому я начал работу над основным проектом.

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

  • С помощью as3hx преобразовать код с AS3 на Haxe.
  • При необходимости вручную подчистить созданный as3hx код.

После этого итеративно выполнять следующие операции:

  • Портировать кодовую базу на Haxe, чтобы использовать Unity API вместо Flash API.
  • Использовать C#-таргет языка Haxe для компиляции кода Haxe на C#. Если сообщить Haxe, где находится UnityEngine.dll, он вытащит API оттуда и их можно будет вызывать из кода hx. То же самое можно проделать при помощи Assembly-Csharp.dll с кодом на C#, написанным для проекта.
  • Выполнить сборку и протестировать в Unity.

Первая неделя работы была очень утомительной, приходилось подчищать выражения, которые as3hx помечал как противоречивые, устранять добавляемые им ошибки компилятора и разбираться с вызовами ввода-вывода. Устранение ошибок в Haxe неидеально, поэтому при каждой попытке сборки возникало около 30 ошибок, как бы я ни старался, поэтому я понятия не имел, насколько близок к завершению, пока всё не компилировалось без ошибок. Кроме того, мне кажется, as3hx это транслятор типа поиск и замена, а не настоящий транспайлер с переводом в AST и обратно, потому что он, похоже, добавляет такие ошибки, как расположение кода с неправильной стороны от скобок, когда в моём управлении потоками используется специфический стиль скобок.

Завершив с этим, я получил кодовую базу на Haxe, успешно компилирующуюся в C#-таргет. После этого я ни разу не касался кода AS3. (За исключением описанного ниже процесса экспорта графических ресурсов.) На этом этапе я решил отказаться от Haxe и просто работать на C#, но хотя выходные результаты as3hx довольно похожи на первоначальный код с сохранением стиля скобок, порядка кода и комментариев,, выводимый Haxe код на C# очевидно не предназначен для человеческого глаза. Поэтому с этого момента, если я не создавал новые сцены, я редактировал код на Haxe и компилировал его в C#.

На этом этапе код компилировался и запускался в движке Unity, но без ввода-вывода. Следующим шагом стало воссоздание всего кода ввода-вывода с помощью Unity API. На это и на преобразование ресурсов ушло около четырёх месяцев, в основном потому, что в Frog Fractions есть множество разных типов ресурсов:

  • Векторная графика, нарисованная в редакторе Flash. Я рендерил её в качестве 4k, заставив AIR собрать исходную игру, но не делая ничего, кроме рендеринга кадров анимации и записи их в файлы PNG. Затем с помощью TexturePacker я собрал их в спрайтшиты.
  • Векторная графика, использующая Flash Shape API. Во Flash всего в нескольких строках кода можно, например, отрисовать скруглённый прямоугольник и применить фильтры в стиле Photoshop типа скоса или тени. Язык лягушки отрисовывался как толстая линия с закруглёнными концами. В Unity подобные вещи реализовать сложнее. В разных случаях я применял разные приёмы, например, для каждого стиля контейнера текста рендерил 9-slices, а язык отрисовывал заполненным четырёхугольником с отмасштабированным кругом в качестве концов.
  • Графика в SVG, взятая с OpenClipArt.org. Так как я записывал имена художников, чтобы указать их в титрах, мне не сложно было найти их на сайте и скачать графику в более высоком разрешении.
  • То же самое касалось фотографий, взятых с Flickr. Я использовал для увеличения размера preserve details из Photoshop, чтобы при необходимости вносить изменения, и создал конвейер для разбивки полноэкранного 4k-изображения на текстуры в удобном размере со сторонами, равными степеням двойки.
  • Нарисованная от руки растровая графика. В некоторых случаях художники изначально представили мне графику высокого разрешения, которую я уменьшил для оригинальной игры. В других я заплатил художникам, чтобы они перерисовали их собственную графику в 4k. Сложнее всего было убедить их, что мне не нужна более качественная графика, которую они научились рисовать за прошедшие восемь лет я хотел как можно ближе придерживаться оригинальной игры!
  • Пещерный лабиринт сам по себе был огромной проблемой. В оригинальной Flash-игре он был огромными изображениями, которые игра разрезала на куски экранного размера и пропускала через алгоритм наподобие Marching-Cubes для построения меша коллизий. Так как я не хотел увеличивать эти гигантские изображения до разрешения 4k, я применил тот же алгоритм, но с более высоким разрешением для генерации отображаемого меша. Оба меша включены в получившуюся игру, а изображения я убрал.
  • Множество полноэкранных эффектов, которые нужно было реализовать заново в виде шейдеров.
  • Короткий видеоклип с развевающимся флагом. Когда в 2015 году я создавал Unboxing Story Unity API для воспроизведения видео был ужасным. К 2018 году он перестал быть ужасным. Ура!
  • Со звуком всё было проще. У меня сохранились все звуковые эффекты в файлах .wav и я сразу смог их использовать.
  • Оригинальная музыка была записана в MP3 с форматом 64kbps mono, что, наверно, сэкономило мне за все эти годы несколько тысяч долларов затрат на хостинг Amazon S3, но у меня уже были высококачественные стереозаписи всей музыки с тех пор, когда я создавал OST.


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

В то время, когда мы с Крейгом Тимпани выбирали движок для Glittermitten Grove, мы остановились на Unity из-за её хорошей поддержки кроссплатформенности, потому что FNA ещё не был готов и потому что создание собственного движка отличный способ никогда не закончить игру. В конечном итоге, хоть меня и печалила плохая поддержка 2D в Unity, это позволило нам почти без проблем выпустить версии для Mac и Linux, что, по моему мнению, огромная удача. (Предположительно, поддержка 2D в Unity с 2015 года стала лучше, но я её не изучал. Работа Graphics.DrawMesh вполне меня устраивает. Может, даже у FNA теперь появился работающий конвейер обработки ресурсов!)

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

А, ну и потом я создал дополнительную игру! Вероятно, я расскажу об этом творческом процессе в другом посте, здесь упомяну только то, что я собрал в Haxe переходную сцену, а остальную часть новой игры писал на C#. Кроме того, я внёс значительные изменения в основное меню внутри кодовой базы Haxe. Поэтому мне кажется, что вполне возможно после портирования на Haxe продолжать выпускать обновления кода, выполняя разработку на Haxe.

Также я внёс некоторые оптимизации в код оригинала. Код на AS3 намеренно писался без учёта эффективности, потому что я пытался избежать стремления к безупречному коду. Например, я поверить не мог, что мне сойдёт с рук выделение Vector2 для кучи при каждой арифметической операции! Получившийся результат хорошо работал на компьютерах 2012 года, но части с наихудшей производительностью после двойной транспиляции вызывали значительную нагрузку, поэтому для хорошей работы на современных PC мне пришлось переписать часть кода на нативном C#.

Также стоит заметить, что если бы я не планировал значительно расширить объём оригинальной игры и просто пытался сохранить от смерти вместе с Flash, то OpenFL, AIR или Ruffle были бы, наверно, более умным выбором.

Выпуск игры походил на прощание с ней. Мне нравилось работать на Flash. В то время это был лучший способ показать свои игры людям с наименьшими усилиями и казалось, что они будут жить вечно SWF из 90-х по-прежнему безупречно работают в последнем Flash player, хотя прошли десятки лет. Наблюдать за тем, как мир пытается перейти на HTML5, когда он явно ещё к этому не готов, было мучительно. (И, честно говоря, всё становится скорее хуже, чем лучше. Я считаю, что браузер никогда больше не станет пригодной для игр платформой, пока владельцы двух самых популярных браузеров имеют собственные магазины приложений для телефонов.) Я создал ремастер частично из-за того, что хотел продать новую игру, но ещё и из искреннего желания сохранить свою часть игровой истории. Спасибо, что вернулись к ней вместе со мной!
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru