• Возвращение «Эпохи империй»: всё, что известно про Age of Empires IV


      На прошедшей неделе в ночь с четверга на пятницу на конференции X019 в Лондоне произошло долгожданное событие — компания Microsoft показала геймплей продолжения знаменитой стратегической серии Age of Empires IV. На первый взгляд проект, окруженный «туманом войны» на протяжении вот уже нескольких лет, напоминает выполненный в 3D ремейк Age of Empires II — самой популярной части серии, в которую до сих пор играют миллионы любителей RTS и истории. Предупреждаем: «кидать деньги в монитор» пока ещё рано — игровые издания называют ориентировочной датой релиза 2020 год.

      Под катом вас ждет рассказ о том, почему выхода новой Age of Empires пришлось ждать целых 15 лет, максимум известных подробностей про четвертую часть легендарной стратегической серии, а также обзор закрытого показа игры, основанный на показаниях свидетелей и игровой прессы.
      Читать дальше →
      • +30
      • 7,9k
      • 1
    • Расширяем возможности UObject в Unreal Engine 4

        Всем привет! Меня зовут Александр, я уже более 5 лет работаю с Unreal Engine, и почти все это время — с сетевыми проектами.

        Поскольку сетевые проекты отличаются своими требованиями к разработке и производительности, нередко необходимо работать с более простыми объектами, такими как классы UObject, но их функциональность изначально урезана, что может создать сильные рамки. В этой статье я расскажу о том, как активировать различные функции в базовом классе UObject в Unreal Engine 4.



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

        Читать дальше →
      • Как работают пули в видеоиграх?

        • Перевод
        Игры FPS (first-person shooter, шутер от первого лица) стали неотъемлемой частью видеоигровой индустрии ещё с момента появления в 1992 году популярнейшей Wolfenstein 3D. С тех пор жанр эволюционировал: улучшалась графика, увеличивались бюджеты на разработку, развивалась экосистема киберспорта. Но что насчёт их фундамента — механики стрельбы? Как проходило развитие на этом фронте? Почему в некоторых играх оружие кажется реальными, а в других похоже на игрушки?

        Hitscan


        В предыдущую эпоху многие игры для рендеринга 3D-сцен в 2D-изображения использовали технику под названием raycasting («бросание лучей»). Raycasting позволяет движку определять первый объект, с которым пересечётся луч. Но потом разработчики задались вопросом: «Что, если выпустить луч из ствола оружия, чтобы имитировать пулю?» Благодаря этой идее родился hitscan («сканирование попадания»).


        Пример raycasting

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

        • Определяет направление, в котором указывает оружие.
        • Выпускает из ствола оружия луч на заданное расстояние.
        • Использует raycasting для определения того, попал ли луч в объект.

        Если движок определил, что объект находится на линии огня, то он сообщит ему об этом, сказав, что в него «попала» пуля. Затем цель может выполнить все вычисления, необходимые для регистрации повреждений.
        Читать дальше →
      • MVC в Unity со Scriptable Objects. Часть 1

        • Перевод
        MVC (Model-View-Controller) — это схема, предполагающая разделение данных приложения, пользовательского интерфейса и управляющей логики на три отдельных компонента, чтобы каждый из них можно было независимо модифицировать. Разработчик Cem Ugur Karacam поделился своим опытом программирования в Unity и коротко рассказал о Scriptable Objects. Мы представляем перевод его статьи, опубликованной на сайте dev.to.

        Читать дальше →
      • Алгоритм размещения тайлов на основе ограничений

        • Перевод
        image

        В этом посте описывается алгоритм, используемый в Generate Worlds — инструменте, позволяющем пользователям создавать и исследовать процедурные миры построением небольших множеств воксельных тайлов. Я приведу краткое описание алгоритма, а в следующих постах расскажу о его преимуществах в скорости и гибкости по сравнению с другими методами. Чтобы подробнее узнать о том, что такое процедурная генерация на основе ограничений (constraint-based procedural generation) и о том, чем она интересна, рекомендую прочитать мой предыдущий пост.

        Если вы хотите проверить свои силы в создании процедурных миров при помощи этой системы, то можете приобрести Generate Worlds. Если цена для вас слишком высока, то продолжайте чтение: этот пост даст вам информацию о том, как самостоятельно реализовать алгоритм Generate Worlds.
        Читать дальше →
        • +27
        • 3,1k
        • 2
      • Во что играть с детьми до школы


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

          Вопрос, во что с детьми надо играть, особо никого не беспокоил века так до семнадцатого. Есть даже теория, что в Средневековье детей воспринимали как маленьких взрослых и воспитывали как в армии. Про это писал Филипп Арьес в книге «Ребенок и семейная жизнь при Старом порядке». Он сделал такой вывод, потому что насмотрелся старинных миниатюр и икон и обнаружил, что дети на них — какие-то старики, в игры почти не играют и вообще отличаются от взрослых только ростом. (Про это ещё есть кайфовая статья поподробнее.)

          Потом другие исследователи средневекового быта Френсис и Джозеф Гис написали книгу про то, что Арьес не совсем прав: «На рукописных миниатюрах детская одежда проще и короче туалетов взрослых. Мальчики носят рубашку, рейтузы и кафтан, девочки — платье и тунику. Миниатюры изображают детей играющими в мяч, плавающими, стреляющими из лука, управляющими марионетками, наслаждающимися кукольными представлениями — круг развлечений, типичных для детей во все времена». Книга называется «Семья и брак в Средние века».

          Короче, известно одно: обращение с детьми было такое себе.
          Читать дальше →
        • В шахматы с троллями

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

            В нашей истории все началось десять лет назад, когда хомячки (DIY сайты) стали вполне себе социальными сетями. Тогда мы создавали сайт полностью user friendly, можно было писать все что хочешь, постить картинки и чатиться сколько душе угодно, никаких ограничений. Сайт у нас был шахматный и на нем собиралась аудитория ожидаемо более взрослая и воспитанная, чем где-либо. Это, можно сказать, специфика шахмат, впрочем как и IT отрасли в те времена. Все жили дружно и счастливо.

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

            Форму обратной связи мы сделали такой, что в подчеркнуто вежливом шаблоне пользователь должен был писать свой гнев и поток бранных слов каллиграфическим почерком. Как ни странно, это сработало. Количество негативного фидбэка сошло на нет. Если появлялись сообщения они были достаточно конструктивны, и хейт был максимум: ‘Без уважения…’
            Читать дальше →
          • AdBlock похитил этот баннер, но баннеры не зубы — отрастут

            Подробнее
            Реклама
          • Dagaz: Эпизоды (часть 2)

              — Один слон, одна колесница, пятеро пехотинцев и трое всадников составляют ПАТТИ, утроенное ПАТТИ составляет СЕНАМУКХУ,…
              а десять АНИКИНИ составляют АКШАУХИНИ, и это есть самая крупная войсковая единица…
                                                         Генри Лайон Олди «Гроза в безначалье»


              В прошлой статье я рассказывал о шашках и это не случайно. Шашечные игры, с их составными ходами, послужили основой проекта, составили его костяк. До сих пор, шашки подкидывают мне сюрпризы. Например, буквально на днях, мне довелось исправлять застарелый баг, связанный с опцией отложенного взятия. И вообще, как я уже говорил, шашечные игры сильно недооценены. Но одними лишь шашками дело не ограничивается…
              Читать дальше →
              • +13
              • 1,1k
              • 7
            • Shader — это не магия. Написание шейдеров в Unity. Вертексные шейдеры

                Всем привет! Меня зовут Дядиченко Григорий, и я основатель и CTO студии Foxsys. Сегодня мы поговорим про вершинные шейдеры. В статье будет разбираться практика с точки зрения Unity, очень простые примеры, а также приведено множество ссылок для изучения информации про шейдеры в Unity. Если вы разбираетесь в написании шейдеров, то вы не найдёте для себя ничего нового. Всем же кто хочет начать писать шейдеры в Unity, добро пожаловать под кат.


                Читать дальше →
                • +16
                • 3,3k
                • 1
              • Алгоритм взаимодействия сотен тысяч уникальных частиц на GPU, в GLES3 и WebGL2

                  Описание алгоритма логики, и разбор рабочего примера в виде техно-демки-игры


                  WebGL2 версия этой демки https://danilw.itch.io/flat-maze-web остальные ссылки смотрите в статье.



                  Статья разбита на две части, сначала про логику, и вторая часть про применение в игре, первая часть:


                  • Ключевые особенности.
                  • Ссылки и краткое описание.
                  • Алгоритм работы логики.
                  • Ограничения логики. Баги/особенности, и баги Angle.
                  • Доступ к данным по индексу.

                  Дальше описание игровой-демки, вторая часть:


                  • Используемые возможности этой логики. И быстрый рендеринг миллиона частиц-пикселей.
                  • Реализация, немного комментариев к коду, описание работы коллизии в две стороны. И взаимодействие с игроком.
                  • Ссылки на используемую графику с opengameart, и шейдер теней. И ссылка статьи на cyberleninka.ru
                  Читать дальше →
                • История создания первой Diablo

                  • Перевод
                  image

                  Больше двадцати лет назад Дэвид Бревик участвовал в создании Blizzard North. Также он сыграл важную роль в разработке хита студии — Diablo.

                  «Оригинальный концепт я придумал ещё в старшей школе», — рассказывает Бревик, посещавший школу в Области залива Сан-Франциско (название игры он позаимствовал у местной вершины — горы Дьябло). «Единственное, чего я всегда хотел — делать игры, и даже в старшей школе я думал об играх, которые могу сделать и о названиях, которые им можно дать».

                  По словам Бревика, изначально Diablo задумывалась более близкой к традиционной RPG с партией приключенцев, пошаговым игровым процессом и сильным влиянием его первых любимых игр — Rogue и Nethack.

                  Но сразу после колледжа он оказался в компании, создававшей цифровой клипарт, которая постепенно развалилась; после развала компании часть сотрудников решила образовать собственную компанию, названную в честь секретного проекта, над которым работала компания-разработчик клипартов: “Project Condor”. Так родилась игровая компания Condor.

                  Именно тогда Бревик написал дизайн-документ Diablo, описав её как пошаговую однопользовательскую DOS-игру, которая должна была получить расширения аналогично бустер-пакам карт для Magic the Gathering, имевшей тогда огромную популярность. Также в игре была перманентная смерть. «Это была важная особенность roguelike, поэтому мы тоже хотели её реализовать».
                  Читать дальше →
                • Khronos Group создала унифицированный репозиторий с примерами использования Vulkan

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



                    Читать дальше →
                    • +10
                    • 3,1k
                    • 3
                  • Как создать крутых боссов. Опыт разработчиков Shadow Fight 3



                      Где искать вдохновение, как построить процесс между командами, какую механику выбрать и как добиться WOW-эффекта — рассказывает геймдизайнер Banzai Games Дмитрий Аборилов.

                      Вы сталкивались с задачей сделать финального босса игры?

                      Такого, чтобы он надолго запомнился многомиллионной аудитории фанатов?

                      Я — нет. Но когда только пришел в студию Banzai Games, выяснилось, что такая задача скоро будет. И, послушав внутренний голос, понял, что безумно хочу ее сделать. И сделать круто.

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

                      • Перевод
                      image

                      Примечание: полный исходный код этого проекта выложен здесь: [source].

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

                      После выпуска первоначального концепта Task-Bot [перевод на Хабре] я почувствовал, что меня ограничивает двухмерное пространство, в котором я работал. Казалось, что оно сдерживает возможности емерджентного поведения ботов.

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

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

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

                      Так как движок уже довольно сильно продвинулся вперёд и я снова перехожу к программированию ботов, я решил написать пост о движке, его функциях и реализации, чтобы в будущем сосредоточиться на более высокоуровневых задачах.
                      Читать дальше →
                      • +23
                      • 9,2k
                      • 8
                    • Уничтожение врагов прыжком, как в «Марио» Unity 2D

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

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

                      Для начала напишем функцию которая будет отнимать жизнь у игрока, и необходима для обоих вариантов:

                      public int health = 3; 
                      void Hurt()
                          {
                              health--;
                              if (health <= 0)
                                  SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
                          }
                      
                      Читать дальше →
                    • Learn OpenGL. Урок 7.2 – Отрисовка текста

                      • Перевод
                      • Tutorial

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


                      Поскольку OpenGL не предоставляет никаких средств для отрисовки текста, все трудности этого дела оказываются на нас. Поскольку не существует графического примитива "Символ", нам придется придумывать его самим. Уже есть готовые примеры: рисовать символ через GL_LINES, создать 3D-модели символов или отрисовывать символы на плоские четырехугольники в трехмерном пространстве.


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

                      Читать дальше →
                      • +14
                      • 2,8k
                      • 7
                    • Совет от создателя RimWorld: когнитивные искажения при прогнозировании фана от игры

                      • Перевод
                      (статья 2007 года)

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

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

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

                      Превью игр и рекламные объявления предназначены для того, чтобы заставить вас повоображать. Они часто описывают конкретные игровые сценарии в поэтических деталях. Цель состоит в том, чтобы заставить вас представить себя играющим в игру и наслаждающимся этим опытом. Это вводит в заблуждение, потому что качество возможного микро-опыта в игре очень мало говорит о качестве игрового дизайна в целом.
                      Читать дальше →
                      • +12
                      • 2,5k
                      • 1
                    • Как устроен гибридный игровой ИИ и в чём его преимущества

                      В продолжение некогда поднятой в нашем блоге темы игрового искусственного интеллекта поговорим о том, насколько применимо к нему машинное обучение и в каком виде. Своим опытом и выбранными на его основе решениями поделился эксперт по вопросам ИИ в Apex Game Tools Якоб Расмуссен.



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



                        В геймдеве часто нужно что-нибудь завязать на рандоме: у Unity для этого есть свой Random, а параллельно с ним существует System.Random. Когда-то давно на одном из проектов сложилось впечатление, что оба могут работать по-разному (хотя должны иметь равномерное распределение).

                        Тогда в детали углубляться не стали — хватило того, что переход на System.Random исправил все проблемы. Сейчас решили разобраться подробнее и провести небольшое исследование: насколько «предвзяты» или предсказуемы ГСЧ, и какой выбрать. Тем более, я не раз слышал противоречивые мнения об их «честности» — попробуем разобраться, как реальные результаты соотносятся с заявленными.
                        Читать дальше →
                      • Shader — это не магия. Написание шейдеров в Unity. Введение

                          Всем привет! Меня зовут Дядиченко Григорий, и я основатель и CTO студии Foxsys. Сегодня хочется поговорить про шейдеры. Умение писать шейдеры (и в целом работать с рендером) очень важно при разработке под мобильные платформы или AR/VR, если хочется добиться крутой графики. Многие разработчики считают, что шейдеры — это магия. Что по ним мало хорошей информации, и что чтобы их писать нужно иметь, как мимимум, звание кандидата наук. Да, разработка шейдеров по своим принципам сильно отличается от клиентской разработки. Но основное понимать базовые принципы работы шейдеров, а так же знать их суть, чтобы в этом не было ничего магического и поиск информации по этой теме был простой задачей. Данная серия статей рассчитана на новичков, так что если вы разбираетесь в программировании шейдеров, данная серия вам не будет интересна. Всем же кто хочет разобраться в этой теме — добро пожаловать под кат!


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

                        Самое читаемое