• Сверточная нейронная сеть, часть 1: структура, топология, функции активации и обучающее множество

    Предисловие


    Данные статьи (часть 2) являются частью моей научной работы в ВУЗе, которая звучала так: «Программный комплекс детектирования лиц в видеопотоке с использованием сверточной нейронной сети». Цель работы была — улучшение скоростных характеристик в процессе детектирования лиц в видеопотоке. В качестве видеопотока использовалась камера смартфона, писалось десктопное ПС (язык Kotlin) для создания и обучения сверточной нейросети, а также мобильное приложение под Android (язык Kotlin), которая использовала обученную сеть и «пыталась» распознать лица из видеопотока камеры. Результаты скажу получились так себе, использовать точную копию предложенной мной топологии на свой страх и риск (я бы не рекомендовал).
    Читать дальше →
    • +23
    • 129k
    • 7
  • Топ 15 бесплатных Unity ассетов для начинающего 2D разработчика

      Введение


      Unity3D – безумно удобная среда, которая многое делает за нас. Именно поэтому она сейчас так востребована: разработка игр при правильном подходе становится не сложнее сборки конструктора.

      Сама платформа Unity предоставляет широкий набор инструментов, но иногда не хватает и их. Тогда в дело вступает Asset Store с миллионами ассетов, моделей и примеров проектов.



      Если у вас еще мало опыта в разработке приложений, имейте в виду: Asset Store – это огромный склад велосипедов, которые уже изобрели до вас. При этом там можно найти очень много бесплатного контента, или же контента по цене одной чашки кофе (сэкономьте на латте!).

      Почему мы посвятили статью именно 2D играм? Посмотрите на рынок: 2D игры сейчас переживают ренессанс. Чтобы в этом убедиться, достаточно взглянуть на инди-сектор в Steam, Ketchapp и Zeptolab в мобильной разработке. 2D игры давно превратились из отжившего свое сектора в отдельную процветающую нишу рынка. Поэтому если вы решили делать 2D игру на Unity, сначала убедитесь, что у вас в арсенале есть все нужные инструменты, чтобы обеспечить должное качество продукта.
      Читать дальше →
      • +9
      • 78.8k
      • 4
    • Синхронизация состояний в многопользовательских играх

      • Translation
      image

      Проблема многопользовательских игр


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

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

      Обычно программа игры должна симулировать следующее:

      изменения в окружении с учётом времени и вводимых игроками данных.

      Игра — это программа, хранящая состояние, поэтому она зависит от времени (реального или логического). Например, PACMAN симулирует окружение, в котором постоянно перемещаются призраки.

      Многопользовательская игра не является исключением, однако из-за взаимодействия игроков её сложность намного выше.
      Читать дальше →
    • Разработка игры на основе физической симуляции (для реалистичной разрушаемости игрового мира)

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

        От создания нового проекта в Юнити до публикации бета-версии в Стиме прошло 10 месяцев. 90% времени ушло на создание, оптимизацию и вылизывание физической модели, остальное — на геймплей.

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

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

        Получившаяся из частиц материя сначала выглядела странно, и напоминала то ли жидкость, то ли газ:

        image

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

          Хочу рассказать сообществу о проведённом мной эксперименте.

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

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

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

          Или ещё замечательный пример — Kerbal Space Program. Там физика уже является непосредственым источником геймплея.

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

          Я давно мечтал сделать именно такой, до предела физически реалистичный римейк Scorched Earth. Но все мои эксперименты с моделированием физических систем упирались в неумолимо медленные процессоры. Тысяча-две частиц были пределом для real-time симуляции.

          Но недавнее моё «открытие» изменило ситуацию.
          Читать дальше →
        • Сколько заработает ваша мобильная игра?

          • Translation
          Разработка мобильных игр — отрасль с очень высокой конкуренцией. Миллионы игр в Google Play и Apple Store, позабытые пользователями сразу после запуска, и редкие истории успеха тому свидетельство. В очередном посте блога «Менеджмент игровых интернет-проектов» мы перевели статью разработчика игр Росса Пшибыльски (Ross Przybylski) о расчёте потенциального дохода мобильных игр F2P. За свою десятилетнюю карьеру Росс успел набраться опыта и в инди-студиях (D20Studios), и в крупных AAA-компаниях (EA).


          Читать дальше →
          • +16
          • 19.4k
          • 6
        • Генерирование полигональных карт для игр

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

          image

          Во многих процедурных генераторах карт, в том числе и некоторых моих предыдущих проектах, для генерирования карты высот используются функции шума (midpoint displacement, фракталы, diamond-square, шум Перлина и т.д.). Здесь я их не применял. Вместо неё я использовал структуру графов для моделирования элементов, определяемых ограничениями геймплея (высота, дороги, течение рек, места квестов, типы монстров) и функции шума для моделирования того, что не ограничивается геймплеем (форма побережья, расположение рек и деревьев).
          Читать дальше →
          • +98
          • 44.8k
          • 9
        • Продвижение Android приложений, рейтинги и ранжирование в топах Google Play

          image
          Приветствую всех! В своей статье хочу поделится своим опытом и внести свои «пять копеек» в эту довольно обширную и запутанную тему. В интернете на данный момент много статей посвященных данному вопросу, но на деле оказалось, что большинство таких статей оперируют стандартными советами и шаблонами, которые на сегодняшний день мягко говоря не актуальны. Почти все статьи, которые я прочитал, это лишь вершина айсберга, самая его макушка. О самой сути почему-то никто не пишет, видимо это часть корпоративных секретов о которых вслух не говорят.
          Читать дальше →
        • Путь, который стоило пройти, чтобы получить бесценный опыт в мобильной разработке

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

            Пришло время подвести итоги 2016 года. Здесь пойдет речь о второй попытке повторить успех с образовательным приложением “Русский язык — грамотей”. (о другой попытке мы писали ранее)


            Читать дальше →
            • +24
            • 13.7k
            • 8
          • Ar.Drone 2: полгода полетов

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

              С недавних пор я стал увлекаться полетами на квадрокоптере AR.Drone 2.0, а именно с момента, как друзья подарили мне его на день рождения. Хотя на соревнования и «покатушки» с другими любителями времени нет, на нем довольно интересно полетать в том же офисе под веселые возгласы коллег. Да и поэкспериментировать можно – с дополнительными модулями и модами.

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



              Читать дальше →
            • Пять мощных паттернов монетизации F2P, использующих в дизайне UX поведенческую экономику

              • Translation
              image

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

              В течение многих лет я тестировал и исследовал множество мобильных игр и приложений различных жанров. Мне нравится деконструировать и анализировать различные аспекты цифровых продуктов: адаптацию, базовый цикл, использование социальных сетей, метаигры, PvP и т.д. Паттерны монетизации были для меня особенно интересны, потому что я получил экономическое образование.

              В статье представлено пять нетрадиционных паттернов монетизации, каждый из которых основан на строгом принципе поведенческой экономики. Все они отличаются от привычных, но работают невероятно хорошо.
              Читать дальше →
              • +25
              • 22.5k
              • 7
            • Сотворение мира Опыт создания разумной жизни своими руками

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

              image

              TL;DR
              Под катом история о том, как я в качестве практики для изучения Python разрабатываю свою библиотеку для агентного моделирования с машинным обучением и богами.

              Ссылка на github. Для работы из коробки нужен pygame. Для ознакомительного примера понадобится sklearn.
              Читать дальше →
            • [ В закладки ] Зоопарк архитектур нейронных сетей. Часть 1

              • Translation


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

              Поэтому я решил составить шпаргалку по таким архитектурам. Большинство из них — нейронные сети, но некоторые — звери иной породы. Хотя все эти архитектуры подаются как новейшие и уникальные, когда я изобразил их структуру, внутренние связи стали намного понятнее.
              Читать дальше →
            • Различия между MVVM и остальными MV*-паттернами

              • Translation


              От переводчика:
              Уже опубликовано много материалов по MVC и его производным паттернам, но каждый понимает их по-своему. На этой почве возникают разногласия и холивары. Даже опытные разработчики спорят о том, в чем отличие между MVP, MVVM и Presentation Model и что должен делать тот или иной компонент в каждом паттерне. Ситуация усугубляется еще и тем, что многие не знают истинную роль контроллера в классическом варианте MVC. Предлагаю вашему вниманию перевод хорошей обзорной статьи, которая многое проясняет и расставляет всё по своим местам.
              Разобраться в MV-паттернах
            • Нейронные сети для начинающих. Часть 1

              image

              Привет всем читателям Habrahabr, в этой статье я хочу поделиться с Вами моим опытом в изучении нейронных сетей и, как следствие, их реализации, с помощью языка программирования Java, на платформе Android. Мое знакомство с нейронными сетями произошло, когда вышло приложение Prisma. Оно обрабатывает любую фотографию, с помощью нейронных сетей, и воспроизводит ее с нуля, используя выбранный стиль. Заинтересовавшись этим, я бросился искать статьи и «туториалы», в первую очередь, на Хабре. И к моему великому удивлению, я не нашел ни одну статью, которая четко и поэтапно расписывала алгоритм работы нейронных сетей. Информация была разрознена и в ней отсутствовали ключевые моменты. Также, большинство авторов бросается показывать код на том или ином языке программирования, не прибегая к детальным объяснениям.

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

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


                Читать дальше →
              • Appodeal — бесплатный оптимизатор доходов от рекламы для мобильных разработчиков



                  Этим постом я бы хотел официально представиться и вкратце познакомить вас с нашим проектом. Меня зовут Павел Голубев, с 2009 года я работаю в сфере разработки и публикации мобильных приложений. Наша команда в свое время запустила SaaS-сервис Columbis для турагентств, позволяющий автоматизировать их деятельность. После этого я переехал в Соединенные Штаты, Сан-Франциско, и уже тут продолжил работу в сфере мобильной рекламы. В определенный момент у нас возникла потребность в платформе, которая позволила бы увеличить доход от рекламы в наших приложениях. На поиски подобного инструмента оптимизации трафика мы потратили несколько месяцев, после чего приняли решение сделать его сами. В итоге, разработка для внутренних нужд переросла в самостоятельный проект — Appodeal, в блоге которого и размещена данная публикация.

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

                  • какую рекламную сеть выбрать;
                  • как к ней подключиться;
                  • насколько высокая заполняемость (fill rate) у этой сети;
                  • насколько высокий eCPM для региона вашей аудитории в конкретной сети;
                  • какой тип оплаты подходит для вас (CPI/CPM/CPC);
                  • есть ли плагин для фреймворка, в котором вы ведете разработку;
                  • как в конечном итоге вывести свои деньги.

                  Читать дальше →
                • Связь между монетизацией игр и поведением геймеров

                  • Translation
                  Недавно я детально изучил отчёт GameAnalytics, содержащий некоторую статистику различного поведения геймеров. Анализируя, можно понять кое-что существенное в этих играх.

                  Помимо большой группы неплатящих геймеров, игроки в этом отчёте подразделяются на 3 типа: «пескари» (игроки «по случаю») (minnows (lowcore)), «дельфины» (регулярные игроки) (dolphins (midcore)) и «киты» (геймеры-фанаты) (whales (hardcore)).

                  Неплатящие игроки стремятся попробовать, как правило, больше различных игр, чем «дельфины» и «киты». «Дельфины» и «киты» являются более сосредоточенными и используют небольшое количество игр или даже всего лишь одну игру. Определение группы игроков дано в отчёте GameAnalytics.


                  Удержание различных игроков (источник: GameAnalytics, 2016)
                  Читать дальше →
                • Модель взаимодействия судов с водой в видеоиграх

                  • Translation


                  Давайте поговорим о физике транспортных средств


                  Физика транспортных средств в видеоиграх не очень сильно обсуждается. Статьи в Интернете о физике транспорта в видеоиграх немногочисленны и поверхностны; обычно они посвящены самым основам. Программист транспорта для видеоигр ощущает себя сегодня в относительном вакууме. Возможно, такая ситуация возникла, потому что эту тему довольно сложно объяснить, а может быть, мы просто стыдимся признаваться в использовании хаков, упрощений и хитростей, которые мы вносим по сравнению с «правильной», реалистичной симуляцией физики. Как бы ни обстояло дело, видеоигры имеют уникальные проблемы в симуляции транспорта, а значит, об этом стоит писать. Это захватывающая тема, относящаяся к физике, работе с камерой, звуку, спецэффектам, а также к восприятию и психологии человека.

                  Я решил сначала поговорить о судах, потому что недавно работал с ними; ещё я обнаружил, что их динамика не совсем понимается даже на уровне исследований (хотя многое и понятно). Модели и теории формулируются таким образом, что их становится сложно применить непосредственно в видеоиграх. Или же они требуют очень ресурсоёмких методов симуляции, которые практически невозможно контролировать и адаптировать под причудливые потребности разработчиков и игроков. Но можно написать упрощённую модель, которая учитывает важные параметры судна. В этом определённо есть доля искусства, «прыжка веры» и небольшая доля «творческой» физики, которая заставит Кельвина и Стокса перевернуться в могилах.
                  Читать дальше →
                • Биохакинг мозга: куда располагать электроды, чтобы стать умнее?

                    Сейчас в поле зрения общественного внимания попадает всё больше исследований tDCS – транскраниальной стимуляции постоянным током. Довольно большое количество научных работ последних лет демонстрируют, что tDCS может улучшать когнитивные способности не только при лечении болезней, но и у совершенно здоровых людей. Среди них – реакция, внимание, память и обучение иностранным языкам. Успехи научных исследований привлекли внимание DIY сообщества, которое взяло технологию на вооружение и стало активно применять tDCS на себе.

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

                    Читать дальше →