• FFMPEG. Загружаем часть видео с YouTube

    • Tutorial

    Иногда мы хотим поделиться с друзьями частью какого то видео на YouTube — время концентрации внимания в современной реальности снижено до предела, и если скидывать ссылку на ролик(даже с таймкодом начала) с комментарием «смотреть с 21:51 по 24:55» — велика вероятность, что видео просмотрено не будет.

    Кроме того — куски видео могут потребоваться для монтажа своих роликов — и довольно неудобно скачивать ради нескольких секунд весь ролик и искать/вырезать нужную часть в программе для монтажа.

    Как загружать часть видео YouTube при помощи ffmpeg — под катом
    Читать дальше →
  • Как я слил 1000$ в продвижение игры и что из этого получилось



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

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

      • Tutorial

      На написание данной статьи меня сподвигло большое количество вопросов по метатаблицам и ООП в Lua, благо это самый сложный и проблематичный раздел у изучающих данный язык, но, так как Lua проектировалась как язык для начинающих и не-программистов и, в целом, имеет небольшой объём материала для освоения, негоже оставлять её «на потом», учитывая что с помощью метатаблиц можно творить чудеса и крайне элегантные решения заковыристых задач.
      Читать дальше →
      • +27
      • 8,3k
      • 7
    • История создания второй игры на Unity (или как я нашел силы после первого провала)



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

        Получилась довольно обширная статья, но я старался разбавлять сие дело картинками!
        Читать дальше →
      • Как научить нейросеть придумывать названия российских населенных пунктов

        Для начала немного несуществующих деревень и сёл


        Сальтолово
        Ничичи
        Каверная Голяна
        Придориусловка
        Старотипенки
        Кюканово
        Кутюшевка
        Верхний Стед
        Сабаревка
        Зеленокировка
        Хадонские Выселки
        Старый Куля
        Октяга
        Ржиново
        Черемошно
        Голодионово
        Александрово-Полейково
        Подлопаново
        Малое Сусовое
        Горы-Чусалы
        Чубравяково




        Зачем и почему


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


        Основываясь на аналогичных проектах (названия британских деревень, названия мест в Орегоне, названия различных цветов и их RGB), я решил научить нейросеть создавать названия несуществующих населенных пунктов


        В качестве нейросети я решил воспользоваться torch-rnn, которую достаточно легко установить и настроить. Список городов и сел я нашел тут (можно скачать все в формате csv). С csv пришлось немного повозиться, чтобы привести ее к utf-8, после чего я запихнул ее в нейросеть и оставил на пару часов. Когда тренировка модели закончилась я взял небольшой сампл и получил следующий результат:

        Читать дальше →
      • Как добавить информацию о переводах в сборку игры на Unity

        Мало лишь перевести свою игру, нужно еще и убедить в этом факте магазины приложений. Зачем? Как правило, описание приложения в магазине содержит поддерживаемые языки, что может повлиять на решение игрока о покупке. К сожалению, каждая платформа требует свой подход для добавления информации о переводах в сборку, но я постарался собрать наиболее удобные методы для трех основных магазинов.
        Читать дальше →
      • Быстрый шейдер для Subsurface Scattering в Unity

        • Перевод
        image

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


        До...


        … и после.
        Читать дальше →
        • +27
        • 8,2k
        • 4
      • Простая работа со Steamworks

        • Перевод


        Unity, C#, Steamworks.NET и Facepunch.Steamworks


        Введение


        Как и большинству разработчиков игр, мне очень хочется выложить мою игру в Steam.

        Как и большинству инди-разработчиков игр, мне не хватает доступа к ресурсам/знаниям, которые дали бы мне чётко понять, что же действительно значит «быть в Steam».

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

        Поэтому я решил написать высокоуровневый обзор для людей, которые только начинают разбираться в том, как заставить Steam работать с их играми. В частности, я подробно рассмотрю Steamworks SDK, программную библиотеку Valve, предоставляющую доступ к таким аспектам, как мастерская (Workshop), таблицы лидеров (Leaderboards), достижения (Achievements) и так далее.

        Steamworks хорошо задокументирована компанией Valve, но документация написана с точки зрения человека, использующего нативную библиотеку C++ и уже имеющего представление о том, как все эти функции пересекаются. Если это не ваш случай, то так даже лучше! Ниже представлено объяснение для другого человека, который пишет игру на языке более высокого уровня и просто хочет обеспечить простую интеграцию со Steamworks (а это возможно, я гарантирую!). Конкретнее, этот пост предназначен для людей, использующих в той или иной форме C#, а в идеале — работающих в игровом движке Unity.
        Читать дальше →
        • +26
        • 9,1k
        • 2
      • «Магическая константа» 0x5f3759df

        • Перевод
        В этой статье мы поговорим о «магической» константе 0x5f3759df, лежащей в основе элегантного алгоритмического трюка для быстрого вычисления обратного квадратного корня.

        Вот полная реализация этого алгоритма:

        float FastInvSqrt(float x) {
          float xhalf = 0.5f * x;
          int i = *(int*)&x;  // представим биты float в виде целого числа
          i = 0x5f3759df - (i >> 1);  // какого черта здесь происходит ?
          x = *(float*)&i;
          x = x*(1.5f-(xhalf*x*x));
          return x;
        }

        Этот код вычисляет некоторое (достаточно неплохое) приближение для формулы

        image

        Сегодня данная реализация уже хорошо известна, и стала она такой после появления в коде игры Quake III Arena в 2005 году. Её создание когда-то приписывали Джону Кармаку, но выяснилось, что корни уходят намного дальше – к Ardent Computer, где в середине 80-ых её написал Грег Уолш. Конкретно та версия кода, которая показана выше (с забавными комментариями), действительно из кода Quake.
        В этой статье мы попробуем разобраться с данным хаком, математически вывести эту самую константу и попробовать обобщить данный метод для вычисления произвольных степеней от -1 до 1.

        Да, понадобится немного математики, но школьного курса будет более, чем достаточно.
        Читать дальше →
      • Случайное распределение урона в RPG

        • Перевод
        image

        Для вычисления урона от атаки в таких настольных ролевых играх, как Dungeons & Dragons, используются броски урона. Это логично для игры, чей процесс основан на бросках кубиков. Во многих компьютерных RPG урон и другие атрибуты (сила, очки магии, ловкость и т.д.) вычисляются по похожей системе.

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

        1. Простые корректировки — среднее значение и дисперсия
        2. Добавление асимметрии — отбрасывание результатов или добавление критических попаданий
        3. Полная свобода в настройке случайных чисел, неограниченная возможностями кубиков
        Читать дальше →