• CGI в домашних условиях при помощи Unreal Engine и iPhone

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

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

      Год назад я наткнулся на следующее видео:

      Смотреть видео


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

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

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

      Смотреть видео


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

      Начался долгий процесс изучения различной документации.

      Что в результате получилось и как мы этого добились, читайте дальше.
      Читать дальше →
    • AirTest IDE и Image Recognition — автоматизация тестирования мобильных игр на основе распознавания изображений

      • Tutorial

      В предыдущей статье мы познакомились с AirTest IDE, но, на всякий случай, давайте повторим: AirTest IDE разработан компанией NetEase и предназначен для "hard-to-automate" приложений, таких как, например, игр. Собственно на них и делается основной упор разработчиками, хотя это не мешает использовать AirTest и для любых других приложений.


      Данная работа является второй в цикле, посвящённому AirTest IDE. Первую, обзорную, статью про AirTest IDE вы можете найти здесь, а третью и последнюю, которая посвящена фреймворку UI автоматизации Poco — по данной ссылке.


      Сегодня же я расскажу вам об одном из 2х основных фреймворков — AirTest. AirTest — это кросс-платформенный фреймворк для автоматизации UI, основанный на принципах распознавания изображений (Image Recognition), который, как заявляют разработчики, подходит для игр и приложений. AirTest Project на GitHub содержит 4 проекта: Airtest, Poco, iOS-Tangent, multi-device-runner.


      А теперь давайте перейдём к самому интересному!


      image

      Читать дальше →
    • Airtest IDE — новый путь в автоматизации тестирования мобильных игр?

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


        Это первая статья из трёх. Вторая часть описывает фреймворк для распознавания изображений (Image Recognition)AirTest, а третья и завершающая посвящена Pocoфреймворку UI автоматизации при помощи написания кода.


        AirTest IDE разработан компанией NetEase и предназначен для "hard-to-automate" приложений, таких как, к примеру, игр. Собственно на них и делается основной упор разработчиками, хотя это не мешает использовать AirTest и для любых других приложений.


        AirTest IDE работает под Windows, MacOS X и Linux и содержит в себе 2 фреймворка: AirTest и Poco. Данная разработка была представлена Xin Liu на Android Game Developer Summit 2018. Для написания тестов используется Python 2.7 и Python 3.3+. Такие важные вещи как поддержка запуска тестов сразу на большом количестве устройств, открытость исходного кода и бесплатность приложения, а также легкое написаное тестов — это те преимущества, которые выделяются разработчиками. Приложение может быть использовано как на Windows, так и на MacOS и позволяет автоматизировать приложения со следующих OS: Windows, iOS, Android.


        AirTest Project на GitHub содержит 4 проекта: Airtest, Poco, iOS-Tangent, multi-device-runner.
        Стоит также упомянуть, что NetEase предоставляет свою ферму физических устройств для автоматизированного тестирования, которая называется AirLab.


        image
        Читать дальше →
        • +16
        • 7.6k
        • 3
      • Советы для кандидатов от программиста, проводящего собеседования в Facebook

        • Translation


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

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

        • Translation
        image

        В Unity 2018.3 появилась поддержка изометрических тайловых карт, очень напоминающая поддержку тайловых карт шестиугольников, которая была добавлена в версии 2018.2. Новые функции Tilemap позволяют быстро и эффективно создавать 2D-окружения на основе изометрических и шестиугольных сеток, которые использовались во многих классических играх, в том числе в первых частях Diablo и Fallout, Civilization, Age of Empires, и многих других.

        Обе системы построены на основе уже существовавшей системы Tilemap, появившейся в Unity 2017.2, и сегодня работать с ними так же просто! Кроме того, они имеют нативную интеграцию с Editor. В дальнейших версиях Unity они могут быть перенесены в package manager.

        Если вам интересно поэкспериментировать с этими системами, мы создали заранее подготовленный проект Isometric Starter Kit с анимированным персонажем и несколькими тайлсетами окружений. Скачать его можно здесь.
        Читать дальше →
        • +20
        • 14.7k
        • 3
      • Прокачка проекта от Soft Launch до $1 млн выручки в месяц



          Привет, Хабр! Я руковожу отделом закупки трафика для мобильных и десктопных проектов в Mail.ru Group. Сегодня в этом посте я подробно расскажу про трафик для игр. Он написан по мотивам моего доклада на конференции The Big Deal. Но сначала немного о себе. Я работал с огромным количеством проектов по различным маркетинговым задачам, последние полтора года работаю исключительно с мобильными приложениями. За это время успел поработать с несколькими десятками приложений, большинство из которых в soft launch, часть из них выпущена в global, а несколько «раскачали» более чем на $1 млн оборота в месяц. За время работы у меня сформировалось некое видение, как с точки зрения трафика проекта проанализировать метрики и понять, может ли ваш проект расти, развиваться и пропускать через себя огромный объем трафика.
          Читать дальше →
          • +41
          • 11.8k
          • 3
        • Подходы к сегментации мобильных игроков — перевод

            Алисса Перез из команды Google Play Dev написала статью, которую мы перевели. В ней много полезной информации о подходах к сегментации пользователей: юзер-таргетинге и его связи с развитием бизнеса.

            image

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

            Важно помнить, что не существует единого метода, который поможет предсказать поведение абсолютно всех игроков. Привлекать в игру разные категории людей нужно совершенно по-разному. В этом нам поможет сегментация: мощный инструмент, позволяющий создавать индивидуальные впечатления для каждого игрока и тем самым способствовать развитию вашего бизнеса.
            Читать дальше →
            • +11
            • 1.8k
            • 1
          • Гипер-казуалки и чему у них могут научиться геймдизайнеры

            • Translation


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

            Что делает жанр таким успешным и можно ли из него что-нибудь позаимствовать? Под катом перевод анализа особенностей геймдизайна, которые делают жанр затягивающим и популярным.
            Читать дальше →
            • +40
            • 26.4k
            • 8
          • Создание моментальных игр на Unity в Google Play Instant

              Привет! Перевели статью от Google с пошаговой инструкцией создания Instant Game в Google Play для игр на Unity.



              Google анонсировал сервис Google Play Instant в марте 2018-го; с тех пор гейм-девелоперы могут создавать игры с мгновенным погружением. Существует несколько способов привлечения игроков в мгновенные игры: от кнопки TRY NOW («Попробуйте сейчас!») в Google Play до обычной ссылки, которую могут расшарить друг другу пользователи. Благодаря этому разработчики могут продемонстрировать свою игру и привлечь новых пользователей. В этой статье рассказывается о том, как создать билд готовой к выпуску мгновенной игры на Unity с нуля, а также преимущества мгновенных игр. Продолжение под катом.
              Читать дальше →
              • +15
              • 8.5k
              • 2
            • Шейдеры 3D-игр для начинающих: эффекты

              • Translation
              [Первая часть]

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

              Контуры



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

              Diffuse материала


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

              uniform struct
                { vec4 diffuse
                ;
                } p3d_Material;
              
              out vec4 fragColor;
              
              void main() {
                vec3 diffuseColor = p3d_Material.diffuse.rgb;
                fragColor = vec4(diffuseColor, 1);
              }

              Здесь показан небольшой фрагментный шейдер, который рендерит диффузный цвет материала геометрии в текстуру буфера кадров. Эта текстура диффузного цвета из буфера кадров будет входящей текстурой для шейдера контуров.
              Читать дальше →
              • +39
              • 10k
              • 4
            • Шейдеры 3D-игр для начинающих

              • Translation
              image

              Хотите научиться добавлять в свою 3D-игру текстуры, освещение, тени, карты нормалей, светящиеся объекты, ambient occlusion и другие эффекты? Отлично! В этой статье представлен набор техник затенения, способных поднять уровень графики вашей игры на новые высоты. Я объясняю каждую технику таким образом, чтобы вы могли применить/портировать эту информацию в любом стеке инструментов, будь то Godot, Unity или что-то иное.

              В качестве «клея» между шейдерами я решил использовать великолепный игровой движок Panda3D и OpenGL Shading Language (GLSL). Если вы пользуетесь таким же стеком, то получите дополнительное преимущество — узнаете, как использовать техники затенения конкретно в Panda3D и OpenGL.
              Читать дальше →
              • +46
              • 16k
              • 5
            • Как я перестал беспокоиться и по-другому взглянул на системы учёта рабочего времени

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

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

                Один из заказчиков прислал мне собственный разбор-анализ приложений следящего софта CleverControl, Kickidler, StaffCop, Teramind, Time Doctor и «Стахановец». Они выбирали софт для контроля за сотрудниками для собственного офиса, поэтому, кроме прочего, в списке пунктов анализа есть «невидимость пользователям».



                В принципе, если не давать заказчику удалённо админского доступа к своему компу, то простым подрядчикам волноваться особо не о чем.
                Читать дальше →
              • Английский и айтишник: английскую сову на русский глобус?

                image

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

                “Кто виноват?”


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

                К сожалению, в общепринятой практике изучения английского языка не все так просто. Обучают языку и пишут пособия гуманитарии с иным, чем у технических специалистов, складом ума. Условно создателей представленных на сегодняшнем рынке программ и пособий по изучению английского можно разделить на две категории:
                Читать дальше →
              • Сборка примера Augmented Faces ARCore в Unity

                image

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

                Мы соберем пример приложения дополненной реальности Augmented Faces ARCore для Unity, оно будет отслеживать через камеру лицо и накладывать 3D модель лисьей морды.
                Читать дальше →
                • +10
                • 5.6k
                • 1
              • Учимся на ошибках: оптимизация приложений в App Store и Google Play

                  Привет!

                  Меня зовут Алтай и я уже более трёх лет изучаю ASO (App Store Optimisation). По-русски, оптимизация приложений в магазинах приложений. Запомним эту аббревиатуру.

                  А теперь главное – ASO помогло мне сэкономить $500.000. Вот так!

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

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

                  Мы в компании занимаемся разработкой детских приложений. Пока мы выпустили только одно приложение в Google Play и App Store и это – Маленькие истории (сказки, где ребёнок становится главным героем). У приложения сейчас 600.000 установок, и почти все эти установки получены бесплатно!

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

                  image
                  Также у нас есть три призовых места на различных конкурсах, причём два из них первые.

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


                    Screenagers — так с недавних пор в Америке называют подростков. Это слово образовано из двух английских слов: screen (экран) и teenager (тинейджер). Ведь нынешние подростки уже выросли с телефоном в руках.

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

                    В Россию массовое использование гаджетов пришло позже, но на сегодняшний день мы уже догоняем Америку по количеству времени, которое проводим в интернете. А это значит, что данная проблема касается уже нас и наших детей.
                    Читать дальше →
                  • Эмиграция и всё о ней в телеграм-блогах

                      «Хорошо там, где нас нет» — думают многие и годами живут на одном и том же месте. Но мир слишком разнообразен, чтобы всю жизнь провести в одной стране.

                      image
                      Карта каналов об эмиграции

                      На помощь приходит Telegram, где в последние годы появилось уникальное сообщество авторов жанра «я — эмигрант».

                      Каждый день очередной эмигрант решает вещать из своей страны и заводит канал в телеграме. Ребята (а 90% из них работают в IT или около IT индустрии) делятся полезными советами, общаются с читателями в чатах, пропагандируют свободу перемещения, рассказывают о плюсах и минусах эмигрантской жизни, честно и без прикрас выдают информацию, которую не найти в поисковиках.

                      Какие на самом деле жители выбранной ими страны? Как найти жилье? Как устроится на работу? В чем отличия менталитета? Или даже Как проходят свидания? Как строится личная жизнь в другой стране? Такого нет в Google! :)

                      Я собрал максимально большой список таких блогов, отсортировал по странам и делюсь с вами.
                      Читать далее
                    • Как айтишнику найти работу в США и ЕС: 9 лучших ресурсов

                      Мировой рынок IT стремительно развивается. С каждым годом профессия разработчика софта становится все более востребованной — уже в 2017 году в мире насчитывался примерно 21 миллион программистов различных направлений.

                      К сожалению, русскоговорящий рынок IT находится еще на начальной стадии развития — уже есть крупные и успешные проекты, но рынок еще долго не сможет сравняться с европейским и американским, которые производят до 85% всех IT-продуктов мира.
                      Читать дальше →
                    • Обзор техник реализации игрового ИИ

                      • Translation
                      image

                      Введение


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

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

                      Что же такое «игровой ИИ»?


                      Игровой ИИ в основном занимается выбором действий сущности в зависимости от текущих условий. В традиционной литературе по ИИ называет это управлением "интеллектуальными агентами". Агентом обычно является персонаж игры, но это может быть и машина, робот или даже нечто более абстрактное — целая группа сущностей, страна или цивилизация. В любом случае это объект, следящий за своим окружением, принимающий на основании него решения и действующий в соответствии с этими решениями. Иногда это называют циклом «восприятие-мышление-действие» (Sense/Think/Act):

                      • Восприятие: агент распознаёт — или ему сообщают — информацию об окружении, которая может влиять на его поведение (например, находящиеся поблизости опасности, собираемые предметы, важные точки и так далее)
                      • Мышление: агент принимает решение о том, как поступить в ответ (например, решает, достаточно ли безопасно собрать предметы, стоит ли ему сражаться или лучше сначала спрятаться)
                      • Действие: агент выполняет действия для реализации своих решений (например, начинает двигаться по маршруту к врагу или к предмету, и так далее)
                      • … затем из-за действий персонажей ситуация изменяется, поэтому цикл должен повториться с новыми данными.
                      Читать дальше →
                    • «Я бесполезный дурак и хочу уволиться» — 10 вопросов программисту, пилотный выпуск



                        Привет, Хабр!

                        Помните историю про Стива Джобса и Денниса Ритчи? Не хотим снова устраивать споры и читать морали, но правда остается правдой — тысячи крутых технарей сидят в тени, а их истории запрятаны в чулан.

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

                        Чтобы вы поняли, как оно будет выглядеть, начнем со своего примера. Под катом 10 общих вопросов, которые мы будем задавать всем. Для пилота на них ответил fillpackart. (В этом месяце я брал вместе с ним несколько, кажется, неплохих интервью: раз, два, три). Почитайте, и если хотите рассказать о себе таким же образом, пишите сообщения мне или baragol.
                        Читать дальше →