Search
Write a publication
Pull to refresh
4
0.9
Дмитрий Померанцев @pda0

User

Send message

Математика в Gamedev по-простому. Триангуляции и Triangle.Net в Unity

Reading time5 min
Views22K
Всем привет! Меня зовут Гриша, и я основатель CGDevs. Математика – очень крутой инструмент при разработке игр. Но если скажем без понимания векторов и матриц обойтись в принципе сложно, то алгоритмы триангуляций не столь обязательная вещь, но с помощью них решается достаточно большое количество интересных задач. Сегодня хотелось бы поговорить про достаточно важный инструмент в вычислительной геометрии, такой как триангуляции и их применение в игровой индустрии. Кроме того, я написал порт и немного обёрток великолепной библиотеки Triangle.Net для Unity. Если интересно – добро пожаловать под кат. Ссылка на гитхаб прилагается.


Реализация горячей перезагрузки С++ кода в Linux

Reading time10 min
Views18K

image


* Ссылка на библиотеку в конце статьи. В самой статье изложены механизмы, реализованные в библиотеке, со средней детализацией. Реализация для macOS еще не закончена, но она мало чем отличается от реализации для Linux. Здесь в основном рассматривается реализация для Linux.


Гуляя по гитхабу одним субботним днем, я наткнулся на библиотеку, реализующую обновление c++ кода налету для windows. Сам я слез с windows несколько лет назад, ни капли не пожалел, и сейчас все программирование происходит либо на Linux (дома), либо на macOS (на работе). Немного погуглив, я обнаружил, что подход из библиотеки выше достаточно популярен, и msvc использует ту же технику для функции "Edit and continue" в Visual Studio. Проблема лишь в том, что я не нашел ни одной реализации под не-windows (плохо искал?). На вопрос автору библиотеки выше, будет ли он делать порт под другие платформы, ответ был отрицательный.


Сразу скажу, что меня интересовал только вариант, в котором не пришлось бы менять существующий код проекта (как, например, в случае с RCCPP или cr, где весь потенциально перезагружаемый код должен быть в отдельной динамически загружаемой библиотеке).


"Как так?" — подумал я, и принялся раскуривать фимиам.

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

Unreal Engine4 — PostProcess эффект сканирования

Reading time5 min
Views9.2K


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

В этой статье я расскажу, как реализовать данный эффект на UE4. Существуют несколько способов, с помощью которых вы можете создать этот эффект. Один из этих методов был выбран мною.
Если интересно, добро пожаловать под кат

Unreal Engine 4 — шейдер горения

Reading time4 min
Views21K
Это небольшой шейдер, который появился, когда я думал о различных методах применения flowmap. Существуют много эффектов перехода/растворения, но большинство из них выглядит довольно статично, так как они используют статические текстуры. Данный шейдер далек от совершенства, но плавное движение делает его визуально привлекательным как плавный эффект горения.

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

Способы применения и искажения меткости в играх. Наглядные графики для сравнения

Reading time6 min
Views15K
Вычислять факт попадания в играх на основе полученной меткости можно по разному:

  • сравнивая с одним псевдослучайным числом (которое тоже можно получать по разному [1]);
  • сравнивая с наибольшим или наименьшим из двух псевдослучайных чисел;
  • сравнивая среднее из двух и более случайных чисел (среднее тоже можно считать по разному).


Бонусы к меткости тоже можно реализовать по разному, вызывая тем самым у игроков раздражение по разными причинам.

Точно также по разному можно рассчитывать наносимый урон, особенно на основе дайсов (кубиков).

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

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

Работа с форматом конфигураций 1С: Предприятие

Reading time3 min
Views30K

Решил опубликовать исходный код C# для работы с форматом конфигураций 1С: Предприятие.


https://github.com/elisy/MdInternals


MdInternals понимает формат cf, cfu, epf, erf, распаковывает содержимое в удобочитаемые Xml и текстовые файлы и загружает обратно. Позволяет программно обращаться к внутренним файлам и свойствам объектов.


Проект состоит из частей:

  • MdInternals программно обращается к объектам и свойствам конфигурации
  • CfProject отвечает за сериализацию и десериализацию объектов MdInternals
  • MdInternals.Cil декомпилирует байт-код (OpCode) 1С
  • MdInternals.Serialization работает с внутренним полу-JSON форматом 1С вида "{ 19 { "", 2 } }"


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

Операционная система Haiku: портирование приложений и создание пакетов

Reading time44 min
Views24K
Осенью этого года, спустя 6 лет разработки, вышла первая бета-версия «R1/beta1» операционной системы Haiku. Я давно слежу за этим интересным проектом, который нацелен на воссоздание и последующее развитие существовавшей в 1994-2000 годах системы BeOS. Поэтому, как только на новостных IT-сайтах я увидел новость о выходе бета-версии Haiku, я незамедлительно решил посмотреть, что же было добавлено в этот долгожданный релиз. После установки системы в виртуальную машину VirtualBox и небольшого ознакомления с её основной функциональностью, я подумал, что было бы неплохо немного помочь OpenSource-сообществу, которое сегодня развивает эту операционную систему. Начать я решил с того, в чём у меня накопился небольшой опыт: с портирования некоторых игровых проектов.


Рабочий стол операционной системы Haiku.

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

«Камень я не дам» или как устроены ресурсы игры «Проклятые Земли»

Reading time27 min
Views61K


Много ли вы вспомните российских игр? Качественных? Запоминающихся? Да, такие были. Если вам больше 35 или вы фанат российского игропрома, то с "Проклятыми Землями" вы наверняка знакомы.


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


Какому фанату игры не будет интересно узнать, что же там внутри?

Рычаг я дам

Создаем стильный водопад из RiME прямо в Unity или UE4

Reading time6 min
Views14K
Есть игры с таким запоминающимся визуалом, что страшно считать потраченное на его разработку время, взять хотя бы последний God of War или RDR2. А бывают проекты, которые подкупают своей атмосферной, даже если они далеки от ААА. Как пример — RiME не раз хвалили за стиль, звук и историю. А недавно левел-дизайнер игры перешел в команду CD Projekt Red, чтобы работать над Cyberpunk 2077. Еще RiME вдохновила 3D-художника Math Roodhuizen на создание собственного арта.

И на фоне всего этого я наткнулся на ArtStation на гайд по созданию реалистичной воды. Если в прошлый раз речь шла про реку, то в этот раз про стилизованный водопад. В первой части разберем, как создавать «волновой эффект», да еще и прямо в игровом движке. Для удобства все шаги сопровождаются гифками и/или картинками.

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

Математик-любитель обнаружил наименьшее универсальное покрытие

Reading time5 min
Views24K

Путём трудных геометрических подсчётов Филип Гиббс обнаружил наименьшее из известных покрытий для любой возможной формы



Такое универсальное покрытие, как шестиугольник, можно описать вокруг любой формы

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

Первым эту задачу предложил французский математик Анри Леон Лебег, в письме к своему другу Юлиусу Палу, написанному в 1914 году. Лебег спросил: какова форма наименьшей возможной площади, способной полностью покрыть большое количество других форм (имеющих одно общее свойство, о котором ниже)?
Читать дальше →

Точность depth наглядно

Reading time7 min
Views13K
Точность глубины — это боль в заднице, с которой рано или поздно сталкивается любой программист графики. На эту тему написано множество статей и работ. А в разных играх и движках, и на различных платформах можно увидеть множество различных форматов и настроек depth buffer.

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

image

Эта статья разделена на 3 части:

  1. Я попытаюсь объяснить мотивацию нелинейного преобразования глубины.
  2. Я представлю несколько графиков, которые помогут понять как нелинейное преобразование глубины работает в разных ситуациях, интуитивно и визуально.
  3. Обсуждение основных выводов Tightening the Precision of Perspective Rendering [Paul Upchurch, Mathieu Desbrun (2012)], касающихся влияния ошибки округления чисел с плавающей точкой на точность глубины.

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

GLSL: Центр или центроид? Или когда шейдеры атакуют

Reading time5 min
Views6.2K
Дорабатывая шейдер для готовящейся к выходу игры, я столкнулся с неприятным артефактом, который проявляется только при включении аппаратного MSAA. На скриншоте ландшафта видно несколько чересчур ярких пикселей. Значения цвета в нескольких из них было настолько велико, что после наложения блума они превратились в разноцветных «призраков».

image

Предлагаю вашему вниманию перевод статьи, которая детально объясняет причину этого феномена и способ борьбы с ним.
Читать дальше →

В основе скорости хода эволюции может лежать математическая простота

Reading time10 min
Views20K

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



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

Креационисты обожают настаивать на том, что эволюции пришлось бы собирать до 300 аминокислот в правильном порядке, только чтобы создать единственный человеческий белок среднего размера. И поскольку на каждой позиции могла располагаться одна из 20 возможных аминокислот, казалось бы, существует более 20300 вариантов перебора, что на много порядков превышает количество атомов в обозримой Вселенной. Даже если мы обнаружим избыточность, из-за которой некоторые из этих вариантов будут эквивалентными, вероятность того, что эволюция наткнулась на правильную комбинацию случайно, проводя случайные мутации, кажется чудовищно маленькой, даже с учётом миллиардов прошедших лет.
Читать дальше →

Мы Не Оскорблённые

Reading time2 min
Views8.2K
Дядя Боб Мартин разразился манифестом терпимости к чужим идеям. Что именно его довело? Мне трудно это выразить, очень рекомендую прочитать сначала его предыдущую статью SJWJS.

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

Что нужно запомнить программисту, переходящему на Python

Reading time11 min
Views52K

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


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


  • Билл Любанович «Простой Python. Современный стиль программирования»
  • Дэн Бейдер «Чистый Python. Тонкости программирования для профи»
  • Бретт Слаткин «Секреты Python: 59 рекомендаций по написанию эффективного кода»

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


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

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

IndieVisible — онлайн-сообщество инди-разработчиков, построенное на платформе с открытым исходным кодом

Reading time9 min
Views5K


Не так давно в тематической группе инди-разработчиков игр я встретил интересное сообщение:


Ладно, ребята, у меня есть идея… И нет, Я НЕ ИДЕЯ-ПАРЕНЬ… Большинство из вас используют разный набор информационных ресурсов, таких как Ludum Dare, Gamedev.net, Indie Game Developers (и другие группы Facebook), Unity Connect, IndieDb, Itch.io, Game Jolt и т.д. Что, если бы мы могли объединиться, чтобы создать централизованное место, где вы могли бы остаться, чтобы обмениваться информацией о геймдеве или быть перенаправленным на внешний ресурс, упомянутый выше?

НЕТ, я не хочу по типу 50-на-50, а вы делаете всю работу. Я уже делаю это! Совершенно точно! С вами или без вас, ребята. Я мог бы лишь использовать некоторую помощь сообщества разработчиков игр.

Так в чем же суть IndieVisible?

Покажите мне суть!

Добавление 3D объектов в видео

Reading time3 min
Views34K
Сегодня мы рассмотрим один из способов совмещения 3D графики и видео. Для этого нам потребуется:

  • Видео
  • Программа Adobe After Effects (я буду демонстрировать на версии CC 2017)
  • Плагин Element 3D
  • Необходимая 3D модель

Обратите внимание на то, как и где вы будете снимать ваше видео. Учтите, что чем больше в вашем видео будет различных деталей, тем проще программе производить трекинг точек, к которым впоследствии будет привязываться 3D объект.

Для начала открываем Adobe After Effects. В появившемся окне нажимаем Новый проект...

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

Бессерверный статический сайт с помощью IPFS

Reading time5 min
Views28K
TL;DR: IPFS позволяет хостить статические сайты распределённо, доступ к которым можно осуществлять через публичные кеширующие гейты (прозрачные реверс-прокси) в интернете, без необходимости устанавливать программу посетителю. Такие сайты можно раздавать без маршрутизируемого («белого») статического IP-адреса (будет работать за NAT), они остаются работоспособными при кратковременном (несколько часов) отсутствии раздающих, за счет кеша на гейтах. К гейтам по желанию можно привязать свой домен, причём добавить DNS-записи можно на несколько гейтов одновременно, для повышения надёжности и балансировки нагрузки. Сайт могут скачать другие пользователи IPFS и помочь с раздачей.
IPFS отлично подходит для статических блогов, простых сайтов, файловых архивов (в качестве замены Bittorrent), а также просто для единовременной передачи больших файлов без предварительной загрузки их на какой-либо сервис.

Что такое IPFS?

IPFS — децентрализованная пиринговая система передачи файлов, по принципу работы похожая на BitTorrent, но с возможностью доступа через HTTP, для Web. Все скачиваемые пользователем файлы временно кешируются IPFS-демоном и раздаются другим пользователям, запрашивающим их. Важные файлы можно «прикрепить» (pin) к IPFS-демону, тогда они не исчезнут из кеша.
Читать дальше →

Как оформить заказ на бирже фриланса

Reading time10 min
Views9.8K
Новички бывают не только среди фрилансеров, но и среди заказчиков. Мы написали инструкцию для наших заказчиков на «Фрилансим», чтобы помочь им грамотно составить описание заказа и быстро получить первые отклики на любой фриланс-площадке. В посте расскажем, из каких полей состоит страница размещения заказа и как их правильно заполнять. Добро пожаловать под кат.


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

0xc00007b или установка драйверов из-под программы

Reading time4 min
Views8.6K

Вступление


Доброго времени суток. Знакомо ли вам исключение 0xc00007b? С момента перевода движка X-Ray под x64 приходило очень много репортов о проблеме 0cx00007b. В 90% случаев, это была проблема с отсутствием 64 битного драйвера OpenAL.

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

Information

Rating
2,734-th
Location
Химки, Москва и Московская обл., Россия
Date of birth
Registered
Activity