• Использование ImGui с SFML для создания инструментов для разработки игр

    • Tutorial

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


    Данная статья — вольный перевод моей статьи на русский с некоторыми небольшими изменениями и улучшениями. Хотелось бы показать как просто и полезно использовать ImGui с SFML. Приступим.



    Введение


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


    Вот какие инструменты я создал с помощью ImGui для своей игры:



    Редактор уровней

    Читать дальше →
  • Искусственная глупость: искусство намеренных ошибок

    • Перевод
    image

    Всё должно быть изложено так просто, как только возможно, но не проще.
    — Альберт Эйнштейн

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

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

    • Перевод
    Себастьян ван Элвердинге рассказывает о своём подходе к созданию потрясающих трёхмерных камней и скал с помощью множества фотографий. Более подробно о нём можно узнать в туториале на gumroad.com/sebvhe.


    Введение


    Привет, меня зовут Себастьян, я живу в Брюсселе, на родине лучшего картофеля фри, пива и шоколада! Сейчас я работаю художником по окружениям в Starbreeze Studios (Стокгольм). раньше я работал в Playground Games над игрой Forza Horizon 3, которая стала для меня отличной возможностью применения фотограмметрии в игре AAA-класса.



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

    Хотя с момента написания мой рабочий процесс немного поменялся, туториал всё равно применим к тому, что собираюсь рассказать. Если вам будет что-то непонятно в этом интервью, то, скорее всего, вы найдёте подробное объяснение в туториале.
    Читать дальше →
    • +41
    • 10,9k
    • 7
  • Снимаем «4D видео» с помощью depth-сенсора и триангуляции Делоне



    Привет Хабр! Это заметка о небольшом хобби-проекте, которым я занимался в свободное время. Я расскажу, как с помощью несложных алгоритмов превращать карты глубины от depth-сенсоров в забавный вид контента — динамические 3D сцены (их ещё называют 4D video, volumetric capture или free-viewpoint video). Моя любимая часть в этой работе — алгоритм триангуляции Делоне, который позволяет превращать разреженные облака точек в плотную полигональную сетку. Приглашаю всех, кому интересно почитать про алгоритмы, самописные велосипеды на C++11, и, конечно же, посмотреть на трёхмерных котиков.

    Для затравки: вот что получается при использовании RealSense R200: skfb.ly/6snzt (подождите несколько секунд для загрузки текстур, а затем используйте мышку, чтобы поворачивать сцену). Под катом есть ещё!
    Обладатели лимитированных тарифов, будьте осторожны. В статье много разных изображений и иллюстраций.
    Читать дальше →
  • Функции шума и генерирование карт

    • Перевод


    Когда я изучал обработку аудиосигналов, мой мозг начал проводить аналогии с процедурным генерированием карт. В статье излагаются принципы, связывающие обработку сигналов с генерированием карт. Не думаю, что открыл что-то новое, но некоторые выводы были для меня в новинку, поэтому я решил записать их и поделиться с читателями. Я рассматриваю только простые темы (частоту, амплитуду, цвета шума, использование шума) и не затрагиваю другие темы (дискретные и непрерывные функции, фильтры FIR/IIR, быстрое преобразование Фурье, комплексные числа). Математика статьи в основном связана с синусоидами.

    Эта статья посвящена концепциям, начиная с самых простейших и заканчивая более сложными. Если вы хотите перейти сразу к генерированию рельефа с помощью функций шума, то изучите другую мою статью.
    Читать дальше →
    • +30
    • 8,8k
    • 5
  • Создание сеток шестиугольников

    • Перевод
    image

    Сетки из шестиугольников (гексагональные сетки) используются в некоторых играх, но они не так просты и распространены, как сетки прямоугольников. Я коллекционирую ресурсы о сетках шестиугольников уже почти 20 лет, и написал это руководство по самым элегантным подходам, реализуемым в простейшем коде. В статье часто используются руководства Чарльза Фу (Charles Fu) и Кларка Вербрюгге (Clark Verbrugge). Я опишу различные способы создания сеток шестиугольников, их взаимосвязь, а также самые общие алгоритмы. Многие части этой статьи интерактивны: выбор типа сетки изменяет соответствующие схемы, код и тексты. (Прим. пер.: это относится только к оригиналу, советую его изучить. В переводе вся информация оригинала сохранена, но без интерактивности.).
    Читать дальше →
  • Эффективный расчёт области видимости и линии взгляда в играх

    • Перевод
    image

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

    image

    Имея параметры видимости наблюдателя (направление взгляда, расстояние видимости и угол поля зрения), нам нужно найти видимую для него область, т.е. определить область видимости (field of view, FoV). Если препятствия отсутствуют, это будет сектор круга, состоящий из двух граней (радиусов) и соединяющей их дуги (см. Рис. 1). Кроме того, имея заданную точку мира, мы должны быстро определить, видима ли она для наблюдателя, т.е. необходимо обрабатывать запросы линии взгляда (line of sight, LOS) для заданной точки. Обе эти операции можно выполнить достаточно эффективно для использования при рендеринге в реальном времени.
    Читать дальше →
  • Камуфляж и обратная связь в видеоиграх

    • Перевод
    image

    Я много играл в Tom Clancy's The Division. Друзья не поспевали за моим ритмом, поэтому долгие часы я провёл, бродя в одиночку по Тёмной Зоне. Опыт был довольно болезненным: группы игроков не колеблясь убьют вас, а одиночных игроков поощряют к этому, как только вы отвернётесь. Чем дольше я играл, тем сильнее развивалась привычка оставаться как можно более невидимым для других игроков. Я осознал, что эта привычка появилась благодаря курсу альпийских стрелков, пройденному во время службы в французской армии.

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