• Forge of Empires из AS3 в Haxe. Постмортем

    • Translation

    В комментариях к переводу доклада с HaxeUp Sessions 2020 Hamburg — Зимний отчет о состоянии Haxe — был задан вопрос о том, зачем нужен Haxe. На него, конечно же, ответили там же, в комментариях. Предлагаемый вашему вниманию перевод еще одного доклада с прошедшего HaxeUp должен, по моему мнению, стать дополнительным аргументом в защиту Haxe, т.к. данный доклад посвящен игре, заработавшей более 500 млн. евро.


    Автор доклада Ненад — один из программистов InnoGames, работавших над конвертацией Forge of Empires из ActionScript в Haxe. 2 года назад в Амстердаме InnoGames рассказывали о своей работе в данном направлении. Сегодня же можно сказать, что им это удалось в полной мере — теперь обе версии веб-клиента (Flash и html5) собираются из единой кодовой базы на Haxe. И данный доклад является по сути обзором проделанной работы и принятых решений, как удачных, так и не очень.


    image

    Читать дальше →
  • Идеальные карты нормалей для Unity (и других программ)

    • Translation
    … и как разобраться, что не так с вашим конвейером создания контента.


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


    Узрите величие этой традиционной модели для тестирования карт нормалей!

    Затем художник помещает её в игру, и она выглядит… немного не так.


    Разве эти грани не должны быть плоскими?

    Поверхности, которые должны быть плоскими, всё равно немного скруглены, некоторые даже вдавлены, и хуже того, по ним идут странные полосы. Знакомая ситуация? Некоторые из вас вероятно с ней сталкивались, думали: «ну ладно, наверно, лучше уже не получится», и двигались дальше. Возможно, накладывали немного грязи, чтобы замаскировать самые тяжёлые случаи.

    Но на самом деле что-то не так в вашем конвейере создания контента. Это не всегда очевидно, но проблему можно решить!*

    *Если считать, что в некоторых случаях вы можете вносить изменения в конвейер контента.
    Читать дальше →
    • +22
    • 5.6k
    • 3
  • Советы по использованию алгоритма коллапса волновой функции

    • Translation
    image

    В последнее время я много экспериментировал с процедурной генерацией на основе ограничений. В частности, с алгоритмом Wave Function Collapse (WFC, коллапс волновой функции). Я даже написал собственную open source-библиотеку и ассет unity.

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

    В этой статье я расскажу, чему научился и что сможет поднять генераторы на основе ограничений на новый уровень.
    Читать дальше →
    • +31
    • 6.3k
    • 4
  • Тайм-менеджмент не поможет: прокрастинация это проблема регуляции эмоций, а не времени

    • Translation

    От прокрастинации не избавиться, не разобравшись в её причинах.

    В этом деле я собаку съел, как и многие писатели. Когда мне нужно работать над задачей, а дедлайн уже близок, я буду делать всё что угодно — смотреть политические ток-шоу, подборки нокаутов МакГрегора, но не работать. В худшем случае я начинаю чувствовать себя слегка сумасшедшим: «Ты должен работать, — говорю я себе, — так чем же ты опять занят?!»
    Читать дальше →
  • Мой переезд в Испанию

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



      (Много фото)
      Читать дальше →
    • Отложенный Alpha blending

        В этой статье я хочу поговорить о методах смешивания растеризуемой геометрии. Классические модели смешивания полупрозрачных объектов — Alpha, Additive, Multiplicative — объединяет один и тот же принцип отрисовки: последовательно рисуем один примитив за другим, смешивая получаемые на выходе фрагментного шейдера пиксели с тем, что находится в текущем буфере. Каждый новый примитив обновляет область буфера, в которую рисуется; в случае с альфа-смешиванием объекты, которые находятся выше, заслоняют ранее отрисованные. Но что если хочется что-то сделать с группой объектов, рисуемых поверх сцены, — например, обрезать их по маске или подсветить? Тут сразу в голову приходят два решения: или внести изменения в их материал (т.е. изменить шейдер, расширить набор текстур), к примеру, добавив проекцию еще одной текстуры, которая будет отвечать за маску прозрачности. Однако если у нас много разношерстных объектов, менять каждый уникальный материал неудобно и чревато ошибками. Второй вариант — нарисовать все интересующие нас объекты в отдельный полноэкранный таргет и рисовать уже его на финальную сцену. Тут мы можем сделать с его содержимым все, что захотим, но это требует выделения лишней памяти и, что самое неприятное, — переключения рендер таргетов. Это не самая «дешевая» операция на мобильных устройствах, которую будет необходимо выполнить дважды. А если захочется вот так работать с несколькими слоями?


        Читать дальше →
      • Кетогенная диета: от лечения эпилепсии до вредной моды



          Каждая эпоха человечества полнится своими кумирами. Люди, которые каким-то образом выделились из толпы, часто становятся примером для подражания, наследования и копирования. Так было всегда и так происходит сейчас. В наши дни социальные сети, доступ к котором можно получить из каждого второго устройства, доминируют в вопросах общественного мнения. В некоторых ситуациях это даже хорошо, если человек, к которому приковано внимание тысяч или миллионов его подписчиков, делится информацией полезной и точной. Однако чаще всего мы наблюдаем ситуацию, когда кто-то «известный» сказал что-то не совсем умное, а толпа его поддержала, ибо работает принцип «ну это же «Имя», он ерунды не скажет». Подобная ситуация сложилась и вокруг кетогенной диеты, используемой ранее в спорте и в лечении эпилепсии. Кетодиета, основанная на высоком содержании жиров и низком содержании углеводов в пище, стала популярна среди некоторых «селебритис» (уж простите за англицизм). Но так ли хороша, а главное, полезна ли такая диета для организма человека? Как выяснили ученые из Йельского университета, вреда от нее куда больше, чем пользы. Какие процессы протекают в организме во время кетодиеты, каковы ее последствия и стоит ли вообще сидеть на диете? Об этом мы узнаем из доклада исследовательской группы. Поехали.
          Читать дальше →
        • [Конспект админа] Что делать, если программа хочет прав администратора, а вы нет


            (с) Вася Ложкин.


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


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


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

            Читать дальше →
          • Пиксель-арт для начинающих: исправляем типичные ошибки

            • Translation


            Ранее я переводил статью про пиксель-арт для начинающих художников. Вдогонку к ней рассмотрим типичные ошибки новичков и способы их решения — на примере с описанием базовых техник и подходов. В конце материала подборка крутого игрового пиксель-арта для вдохновения.
            Читать дальше →
            • +26
            • 9.1k
            • 7
          • Маджонг с детьми: для чего, когда и как



              Когда мы готовим ребенка к поступлению в школу и помогаем ему адаптироваться к школе, поддерживая его интеллектуальное развитие, то одно из классических игровых средств – это обыкновенные игральные карты. Обучая ребенка карточным играм, мы можем давать нагрузку на все когнитивные функции. Зрительное восприятие понадобится, чтобы различать символы мастей (не путать пики и червы, в частности). Память – чтобы следить за тем, какие карты уже сыграны. Мышление – чтобы составлять комбинации и просчитывать выгодные ходы. Внимание – чтобы не проморгать в своей руке те карты, которые позволят эти выигрышные ходы сделать. Играя по разным правилам одной и той же колодой, мы совершенствуем произвольную регуляцию деятельности и учим гибкому, нелинейному поведению. В общем, игральные карты – это замечательная вещь. Но у них есть существенный недостаток: в нашей культуре они плотно ассоциированы с азартной игрой на деньги и воспринимаются поэтому как нечто порицаемое. Это означает, что специалист, играя в карты с ребенком, будет провоцировать реакции вида «чему вы тут его учите?» со стороны семьи, а ребенок не сможет принести игральные карты в школу, чтобы поиграть на перемене, не провоцируя аналогичных реакций со стороны педагогов. Причем понятно, что этот культурный стереотип к жизни давно уже имеет весьма опосредованное отношение, и какая-нибудь браузерная многопользовательская игра с куда большим успехом приобщит ребенка к игре на деньги, чем колода карт на перемене. Но перед нами все же встает проблема того, что ребенок может начать ощущать, будто делает что-то аморальное и неприличное. Это его либо отвратит от игры (и потеряется смысл игры как самоподдерживающейся развивающей деятельности), либо негативно скажется на самовосприятии – а у нас нет цели заставить ребенка ощущать себя хулиганом и правонарушителем.

              Вариант решения этой проблемы – играть с ребенком не в карты, а в маджонг.
              Читать дальше →
            • Визуальный редактор логики для Unity3d. Часть 2

                Введение


                Здравствуйте уважаемые читатели, в сегодняшней статье я хотел бы осветить тему архитектуры ядра визуального редактора логики для Unity3d. Это вторая часть из серии. Предыдущую вы можете прочитать здесь. Итак, о чем пойдет речь? В основе визуального редактора лежит базовое ядро, которое позволяет запускать, загружать и хранить данные логики. В свою очередь ядро использует, о чем было сказано в предыдущей статье, ScriptableObject, как базовый класс для работы с компонентами логики. Рассмотрим подробнее все эти аспекты.

                Статьи в серии:

                Визуальный редактор логики для Unity3d. Часть 1
                Читать дальше →
              • Визуальный редактор логики для Unity3d. Часть 1

                  Введение


                  Здравствуйте уважаемые читатели, в сегодняшней статье я хотел бы остановиться на таком феномене в разработке приложений на Unity3d, как визуальная разработка или если бы точнее, разработка с применением визуального представления кода и логики. И, прежде чем продолжить хочу сразу уточнить, речь не идет о визуальном программировании, от слова “совсем”, никаких Blueprint вариаций в мире Unity и никаких генераций C# кода. Так что же тогда подразумевается под визуальным редактором логики? Если вам интересен ответ на данный вопрос добро пожаловать под кат.

                  Статьи в серии:
                  Визуальный редактор логики часть 2
                  Читать дальше →
                • Пишем шейдеры кодом в Unity LWRP

                  Введение


                  Здравствуй, Хабр. Сегодня хочется рассказать немного о том, как можно быстро и безболезненно (почти) начать писать классические текстовые шейдеры в Unity с использованием Lightweight Rendering Pipeline (LWRP) — одним из примеров конвейера Scriptable Rendering Pipeline (SRP).

                  А как же Shader Graph?


                  Shader Graph — это удобное и быстрое средство прототипирования или написания простых эффектов. Однако, порою, требуется написать нечто сложное и комплексное и вот тогда — количество нод, кастомных функций, суб-графов неимоверно увеличивается, отчего даже самый матёрый программист графики начинает путаться во всём этом бардаке. Все мы понимаем, что автоматически генерируемый код априори не может быть лучше написанного вручную — за примерами ходить далеко не нужно, ибо любая ошибка в планировке нод может привести к тому, что уже известный результат вычислений в вершинном шейдере будет посчитан повторно во фрагментом. Бывают и люди, которым просто удобнее работать с кодом, а не с нодами. Причины могут быть разными, но суть одна — долой ноды, да здравствует код!

                  2020-01-19-17-07-35
                  Читать дальше →
                • Как я делал 2D тени в Unity

                    Что первое приходит в голову разработчику инди-игры, когда он сталкивается с необходимостью добавления фичи, представления о реализации которой толком не имеет? Разумеется, он идёт искать следы тех, кто уже прошёл этот путь и удосужился записать свой опыт. Так поступил и я некоторое время назад, приступая к созданию теней в своей игре. Найти нужную информацию — в виде статей, уроков и гайдов — не составило особого труда. Однако, к моему удивлению, я обнаружил, что ни одно описанное решение мне попросту не подходит. Поэтому, реализовав своё собственное, я решил поведать о нём миру.

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

                    Сам результат перед вами:



                    А подробности пути к его достижению ждут вас под катом.
                    Читать дальше →
                  • Физика для мобильного PvP шутера, или как мы из двумерной игру в трёхмерную переделывали



                      В предыдущей статье мой коллега рассказал о том, как мы использовали двумерный физический движок в нашем мобильном мультиплеерном шутере. А теперь я хочу поделиться тем, как мы выкинули всё, что делали до этого, и начали с нуля ― иными словами, как мы перевели нашу игру из 2D-мира в 3D.
                      Читать дальше →
                      • +29
                      • 5.1k
                      • 7
                    • Реализуем визуальный эффект из фильма «Матрица»

                      • Tutorial


                      Доброго времени суток, друзья!

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

                      • Tutorial
                      Всем привет! Скоро стартуют занятия в первой группе курса «Разработчик игр на Unity». В преддверии начала курса прошел открытый урок по созданию зомби-шутера на Unity. Вебинар провёл Николай Запольнов, Senior Game Developer из Rovio Entertainment Corporation. Он также написал подробную статью, которую мы и предлагаем вашему вниманию.



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



                      Дисклеймер №1: данная статья рассчитана на новичков. Если вы собаку съели в Unity, то она может показаться вам скучной.

                      Дисклеймер №2: для прочтения этой статьи вам потребуется хотя-бы базовое знание программирования. Как минимум, слова «класс» и «метод» не должны вас пугать.

                      Осторожно, под катом трафик!
                      Читать дальше →
                    • Непрерывная интеграция в Unity: как сократить время сборок и сэкономить ресурсы + пайплайн в подарок



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

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

                        Сразу договоримся, что в качестве сервера CI мы используем TeamCity от JetBrains, в качестве хранилища Git-репозиториев ― GitHub, для хранения артефактов сборки ― Nexus.
                        Читать дальше →
                        • +28
                        • 3.8k
                        • 4
                      • Реализация шаблона «Состояние» в Unity

                        • Translation
                        image

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

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

                        Для изящного решения этой задачи можно воспользоваться шаблоном проектирования «Состояние» (State design pattern). Ему-то мы и посвятим этот туториал!

                        Из туториала вы:

                        • Научитесь основам шаблона «Состояние» в Unity.
                        • Узнаете, что такое конечный автомат, и когда его использовать.
                        • Узнаете, как использовать эти концепции для управления движением персонажа.

                        Примечание: этот туториал предназначен для опытных пользователей; предполагается, что вы уже умеете работать в Unity и обладаете средним уровнем знаний C#. Кроме того, в этом туториале используется Unity 2019.2 и C# 7.
                        Читать дальше →
                      • Нет клещам! Растения против переносчиков болезни Лайма

                        • Tutorial
                        Сегодня я написал в своем канале заметку про отпугивание клещей растительными заграждениями. А потом подумал, и решил продублировать на хабр. Пусть она и небольшая по размеру, и не совсем подходит под характерные для меня лонгриды. Но ведь не у всех есть телеграм. И именно сейчас лучшее время для поиска и закупки семян различных растительных репеллентов и «клещегонов». Поэтому сегодня под катом — про биобарьеры против боррелиозного клеща. Из каких растений их лучше сделать!


                        Защитить дачу от клещей!