В первой части я немного рассказал о приложении RF & Microwave Toolbox. Во второй части расскажу о не менее интересном приложении, которое позволяет проектировать СВЧ устройства (преимущественно, планарные) на смартфоне/планшете под управлением ОС Android. Если вам интересно, то добро пожаловать под кат…
User
Создание пиксельной туманности при помощи шума и Median Cut
13 min
5.5K
Translation
Я хотел, чтобы в моей игре The Last Boundary была туманность. Они потрясающе выглядят и космос без них не космос, а просто разбросанные по фону белые пиксели. Но так как игру я делаю в стиле «пиксель-арт», то мне нужно было как-то заставить мою библиотеку шума генерировать пикселизированные изображения.
Вот несколько примеров:
В одноцветных примера используется 8 цветов, а в других — 16 цветов. В этой статье я расскажу, как создавал пикселизированную туманность для The Last Boundary.
Вот несколько примеров:
Ещё примеры
В одноцветных примера используется 8 цветов, а в других — 16 цветов. В этой статье я расскажу, как создавал пикселизированную туманность для The Last Boundary.
Играемся с комплексными числами
3 min
12KПривет!
Очередной очерк. На этот раз поиграемся с комплексными числами, с формулами и их визуализацией.
Очередной очерк. На этот раз поиграемся с комплексными числами, с формулами и их визуализацией.
Деревянные игрушки, часть вторая — 1986-1988
5 min
22KПродолжая воспоминания про деревянные игрушки. Играть я на компьютерах начал где-то в районе 1988-1989. Первые несколько лет — на работе у родителей друзей, а дальше уже начали и по домам компьютеры появляться. Свой, правда, у меня появился относительно поздно, где-то в 1997. Потому до того момента игры, которые требовали больших вложений времени, мне были редко доступны. Не, были, конечно, игровые сессии по несколько часов, но посидеть спокойно вечер за какой-нибудь ультимой в актуальное время у меня возможности не было. Кое-что наверстывал потом, из-за того, что свой компьютер был 486-33 и актуальные в то время игры на нём уже шли не слишком хорошо. Потому занимался тем, что шерстил старые сборники в поисках интересного или пропущенного в раннем детстве.
Содержание:
Деревянные игрушки — эпилог, что осталось прибитым к потолку
Деревянные игрушки, часть последняя — 1997
Деревянные игрушки, часть десятая — 1996
Деревянные игрушки — неписи
Деревянные игрушки, часть девятая — 1995
Деревянные игрушки, часть восьмая — 1994
Деревянные игрушки, часть седьмая — 1993
Деревянные игрушки, часть шестая — 1992
Деревянные игрушки, часть пятая — 1991
Деревянные игрушки, часть четвертая — 1990
Деревянные игрушки, часть третья — 1989
Деревянные игрушки, часть вторая — 1986-1988
Деревянные игрушки, часть первая — 1982-1985
Содержание:
Деревянные игрушки — эпилог, что осталось прибитым к потолку
Деревянные игрушки, часть последняя — 1997
Деревянные игрушки, часть десятая — 1996
Деревянные игрушки — неписи
Деревянные игрушки, часть девятая — 1995
Деревянные игрушки, часть восьмая — 1994
Деревянные игрушки, часть седьмая — 1993
Деревянные игрушки, часть шестая — 1992
Деревянные игрушки, часть пятая — 1991
Деревянные игрушки, часть четвертая — 1990
Деревянные игрушки, часть третья — 1989
Деревянные игрушки, часть вторая — 1986-1988
Деревянные игрушки, часть первая — 1982-1985
Как я создал фильтр, не портящий изображение даже после миллиона прогонов
10 min
8.4K
Translation
Завершив создание веб-архитектуры для нашего нового веб-комикса Meow the Infinite, я решил, что самое время написать несколько давно назревших технических статей. Данная статья будет посвящена фильтру, разработанному мной несколько лет назад. Он никогда не обсуждался в области сжатия видео, хотя мне кажется, что это стоит сделать.
В 2011 году я разработал “half-pel filter”. Это особый вид фильтра, который берёт входящее изображение и максимально убедительно отображает, как бы выглядело изображение при сдвиге ровно на полпикселя.
Вероятно, вы задаётесь вопросом, зачем вообще может понадобиться такой фильтр. На самом деле, они достаточно часто встречаются в современных видеокодеках. Видеокодеки используют подобные фильтры, чтобы брать фрагменты предыдущих кадров и использовать их в последующих кадрах. Более старые кодеки перемещали данные кадра только по целому пикселю за раз, однако новые кодеки пошли дальше и для лучшей передачи мелких движений позволяют выполнять сдвиг на половину или даже на четверть пикселя.
При анализе поведения алгоритмов компенсации движения в традиционных halfpel-фильтрах, Джефф Робертс выяснил, что при многократном применении к последовательным кадрам они быстро деградируют, заставляя другие части видеокомпрессора использовать для исправления артефактов больше данных, чем необходимо. Если отключить эти исправления и взглянуть на «сырые» результаты halfpel-фильтра, то такое исходное изображение:
превращается вот в такое:
всего спустя одну секунду видео. Как и должно, оно сдвинуто в сторону, потому что каждый кадр сдвигал изображение на полпикселя. Но результат выглядит не как перемещённая версия исходного изображения, он серьёзно искажён.
В 2011 году я разработал “half-pel filter”. Это особый вид фильтра, который берёт входящее изображение и максимально убедительно отображает, как бы выглядело изображение при сдвиге ровно на полпикселя.
Вероятно, вы задаётесь вопросом, зачем вообще может понадобиться такой фильтр. На самом деле, они достаточно часто встречаются в современных видеокодеках. Видеокодеки используют подобные фильтры, чтобы брать фрагменты предыдущих кадров и использовать их в последующих кадрах. Более старые кодеки перемещали данные кадра только по целому пикселю за раз, однако новые кодеки пошли дальше и для лучшей передачи мелких движений позволяют выполнять сдвиг на половину или даже на четверть пикселя.
При анализе поведения алгоритмов компенсации движения в традиционных halfpel-фильтрах, Джефф Робертс выяснил, что при многократном применении к последовательным кадрам они быстро деградируют, заставляя другие части видеокомпрессора использовать для исправления артефактов больше данных, чем необходимо. Если отключить эти исправления и взглянуть на «сырые» результаты halfpel-фильтра, то такое исходное изображение:
превращается вот в такое:
всего спустя одну секунду видео. Как и должно, оно сдвинуто в сторону, потому что каждый кадр сдвигал изображение на полпикселя. Но результат выглядит не как перемещённая версия исходного изображения, он серьёзно искажён.
Создание дизайн-документа миссии повествовательной игры на примере Last of Us
12 min
12K
Translation
Я всегда начинаю с того, что задаю много вопросов и провожу активные исследования. За свою карьеру я успел поработать над множеством сиквелов уже существовавших франшиз. Лучшее, что ты можешь сделать в этом случае — полностью освоить жанр игры и изучить мир. Среди прочих проектов, мне приходилось с головой нырять в Halo, StarWars, Hellboy и Division. Хорошие гейм-дизайнеры — это хорошие исследователи.
Naughty Dog мастерски реализовала The Last of Us: Left Behind, и прежде чем браться за этот проект, мне нужно было хорошо подготовиться. Если вы не играли в Last of Us, то сыграйте! Это одна из самых потрясающих историй и несравненный пример развития персонажей. Другие разработчики очень многому могут научиться у создателей этой игры. Из-за сильного упора на повествование Naughty Dog называет свои дизайн-документы миссий «набросками глав». Мне кажется, это очень милый штрих. Это заставляет больше думать о повествовании при создании контента и придавать дизайну более сюжетную структуру.
Предупреждение — в статье содержатся спойлеры Last of US и Last of Us DLC.
Процедурное создание лун
6 min
6.5K
Translation
Не так давно мы изготовили систему создания лун. Наша цель заключалась в создании лун, похожих по размеру и составу на существующие в нашей Солнечной системе. Основной сложностью оказалось получение обширных поверхностей таких лун и их внутренностей, чтобы при этом они оставались интересными. Кроме того, нам нужно было, чтобы луны рендерились с чёткими деталями вне зависимости от расстояния до них.
Система предполагает, что луны имеют сферическую основу. К базовой сфере применяется создание геодезического меша, что гарантирует одинаковую площадь всех частей поверхности. Система применяет эту структуру только как вычислительную сетку для процедурной генерации, настоящая поверхность луны будет намного более гладкой, чем сетка генерации.
Загадки на пути поисков идеальной случайности
5 min
3.7K
Translation
Существует ли объективная, идеальная случайность, или она является следствием нашего неведения?
Жизнь – штука непредсказуемая, и случайности происходят с нами постоянно. Можно сказать, что сама по себе Вселенная случайно. И, тем не менее, каким-то образом большие количества случайных событий могут создавать крупномасштабные закономерности, которые наука способна предсказывать. Рассеяние тепла и броуновское движение – всего лишь два примера таких событий.
Недавно случайность даже попала в новостные ленты: оказалось, что у случайных поверхностей имеется скрытый порядок, а ещё мы, возможно, близко подошли к тому, чтобы увидеть, как квантовый компьютер генерирует идеальную случайность. Последний случай, поиски идеальной случайности, важен потому, что случайность приносит непредсказуемость, и у всех не относящихся к квантовым технологиям попыток достичь её есть один скрытый недостаток: они реализованы посредством алгоритмов, которые, теоретически, можно расшифровать. В данной колонке мы изучим, как можно создать случайность и победить её в повседневной жизни, перед тем, как подниматься на философские вершины дебатов о том, что есть истинная случайность.
Создание игры Tower Defense в Unity: сценарии и волны врагов
15 min
8.9K
Translation
[Первая, вторая, третья и четвёртая части туториала]
Это пятая часть серии туториалов, посвящённых созданию простой игры в жанре tower defense. В ней мы научимся создавать геймплейные сценарии, порождающие волны разнообразных врагов.
Туториал создавался в Unity 2018.4.6f1.
Становится довольно уютно.
- Поддержка врагов малого, среднего и крупного размеров.
- Создание игровых сценариев со множественными волнами врагов.
- Разделение конфигурации ассетов и геймплейного состояния.
- Запуск, пауза, победа, поражение и ускорение игры.
- Создание бесконечно повторяющихся сценариев.
Это пятая часть серии туториалов, посвящённых созданию простой игры в жанре tower defense. В ней мы научимся создавать геймплейные сценарии, порождающие волны разнообразных врагов.
Туториал создавался в Unity 2018.4.6f1.
Становится довольно уютно.
Gap — светлое будущее для отступов в Flexbox (как в Grid)
4 min
129K
Translation
Одна из моих любимых частей спецификации CSS Grid — это
grid-gap
. Они позволяют легко создавать отступы между элементами внутри сетки.Margins и приёмы, к которым мы прибегаем, чтобы реализовать их в разных ситуациях, долгое время были одним из главных моментов, раздражающих меня в CSS.
W3C порекомендовала отказаться от свойства
grid-gap
в пользу простого gap
и его использования в Flexbox и Multi-Column.В этом руководстве мы посмотрим, как добавляли margins в Flexbox раньше и как это делает свойство
gap
, позволяя нам получить внутренние отступы без дополнительных ухищрений.Тяжела ли работа программиста — взгляд с точки зрения психофизиологии
4 min
65KВо первых словах:
— Работа программистом-разработчиком — тяжелый труд, сравнимый с валкой леса топором. И проблематика данного труда сильно недооценена в общественном сознании.Сейчас я обосную этот тезис с научной точки зрения.
Android для радиоинженера (и не только)
6 min
40KС того самого момента, когда я приобрел свой первый смартфон, работающий под ОС Android, я искал приложения под эту ОС, которые бы помогли мне делать несложные рабочие расчеты «на ладошке». Об одном из таких приложений и пойдет речь.
50 оттенков matplotlib — The Master Plots (с полным кодом на Python)
39 min
358K
Translation
Те, кто работает с данными, отлично знают, что не в нейросетке счастье — а в том, как правильно обработать данные. Но чтобы их обработать, необходимо сначала проанализировать корреляции, выбрать нужные данные, выкинуть ненужные и так далее. Для подобных целей часто используется визуализация с помощью библиотеки matplotlib.
Встретимся «внутри»!
Встретимся «внутри»!
Портируем многопользовательскую игру с С++ на веб c Cheerp, WebRTC и Firebase
8 min
6.3K
Translation
Введение
Наша компания Leaning Technologies предоставляет решения по портированию традиционных desktop-приложений в веб. Наш компилятор C++ Cheerp генерирует сочетание WebAssembly и JavaScript, что обеспечивает и простое взаимодействие с браузером, и высокую производительность.
В качестве примера его применения мы решили портировать для веба многопользовательскую игру и выбрали для этого Teeworlds. Teeworlds — это многопользовательская двухмерная ретро-игра с небольшим, но активным сообществом игроков (в их числе и я!). Она мала как с точки зрения скачиваемых ресурсов, так и требований к ЦП и GPU — идеальный кандидат.
Работающая в браузере Teeworlds
Как мы делали нашу маленькую Unity с нуля
8 min
17KУ нашей компании есть свой игровой движок, который используется для всех разрабатываемых игр. Он предоставляет всю важную базовую функциональность:
- рендеринг;
- работа с SDK;
- работа с операционной системой;
- с сетью и ресурсами.
Однако в нем не хватало того, чем так ценится Unity, — удобной системы организации сцен и игровых объектов, а также редакторов к ним.
Здесь я хочу рассказать, как мы внедряли все эти удобства и к чему пришли.
Как мы сделали движок и игру на нем за полтора года. Часть вторая. Инфраструктура
6 min
13KДля начала несколько комментариев по следам предыдущей статьи. Мы действительно раньше работали в компании Wargaming, где разрабатывали движок, известный как dava.framework или dava.engine. Поэтому многие старые коллеги, с которыми мы по-прежнему в хороших отношениях, активно участвуют в обсуждении.
У ряда людей возникли сомнения: это та же технология или другая? Ответ: это новая технология, написанная с нуля.
Как же мы справились всего за год? Наша команда имеет огромный опыт. Многие занимаются разработкой движков и игр более 15-и лет.
Почему с нуля, если можно было взять наш старый движок, который к тому же лежит в open-source? Ему около 10 лет, и большая часть кода устарела. Даже самые лучшие части движка, которыми мы гордимся, местами содержали куски кода и какие-то рудименты 5-и, 7-и и иногда даже 10-ти летней давности. Многие архитектурные решения были рассчитаны на устройства того времени — начиная с айфона 3G. Сейчас же мы ориентируемся минимум на iPad Air 1 и аналогичные ему по мощности Android-устройства. Соответственно и подходы несколько поменялись.
У ряда людей возникли сомнения: это та же технология или другая? Ответ: это новая технология, написанная с нуля.
Как же мы справились всего за год? Наша команда имеет огромный опыт. Многие занимаются разработкой движков и игр более 15-и лет.
Почему с нуля, если можно было взять наш старый движок, который к тому же лежит в open-source? Ему около 10 лет, и большая часть кода устарела. Даже самые лучшие части движка, которыми мы гордимся, местами содержали куски кода и какие-то рудименты 5-и, 7-и и иногда даже 10-ти летней давности. Многие архитектурные решения были рассчитаны на устройства того времени — начиная с айфона 3G. Сейчас же мы ориентируемся минимум на iPad Air 1 и аналогичные ему по мощности Android-устройства. Соответственно и подходы несколько поменялись.
Каверзные кватернионы
4 min
185KОтгадайте загадку: в четырёх измерениях сидит и комплексными числами воротит?
Подсказка: это вектор со скаляром. И вещественная матрица. И придумал его Гамильтон.
Не помогло? Ну что вы, это же элементарно! Это кватернион! Кватернионы используют для записи вращений в робототехнике, игровых движках, ПО для моделирования и вообще везде, где не нужны проблемы с углами Эйлера или матрицами. Если вас испугала путаница выше с разными представлениями кватерниона, то можете быть спокойны. Кватернионы очень просты в использовании и их внутреннее строение может понадобиться только в очень редких случаях, где нужна тонкая оптимизация. В остальное время с помощью кватернионов можно крутить всё что угодно и как угодно, и оно будет плавно и красиво интерполироваться без шарнирных замков.
Процедурная генерация планет
19 min
38K
Translation
От переводчика:
Представляю вашему вниманию статью авторства Andy Gainey, в прошлом независимого разработчика игровых инструментов, ныне сотрудника Paradox Development Studio. На мой взгляд, автор играючи создал один из лучших процедурных генераторов планет с открытым исходным кодом.
Лучшие дистрибутивы Linux для старых компьютеров
8 min
479K
Translation
Привет!
Меня зовут Рушан, и я автор Telegram‑канала Нейрон. Не забудьте поделиться с коллегами или просто с теми, кому интересны такие статьи.
Вкратце: пока не бросайте свой старый компьютер — используйте легкий дистрибутив Linux, чтобы возродить его!
Что вы делаете со своим старым компьютером? Тот, который когда-то имел хорошую аппаратную конфигурацию, но теперь считается устаревшим. Почему бы не восстановить его вместе с Linux? Я собираюсь перечислить лучшие легкие дистрибутивы Linux, которые вы можете использовать на своем старом ПК.
Я постараюсь упорядочить список в порядке убывания требований к оборудованию. Это означает, что легкому дистрибутиву Linux, занимающему первое место, потребуется минимальное аппаратное обеспечение.
Peppermint — это облачно-ориентированный дистрибутив Linux, не требующий мощного железа для запуска. Он основан на Lubuntu и использует окружение рабочего стола LXDE для более плавной работы.
Меня зовут Рушан, и я автор Telegram‑канала Нейрон. Не забудьте поделиться с коллегами или просто с теми, кому интересны такие статьи.
Вкратце: пока не бросайте свой старый компьютер — используйте легкий дистрибутив Linux, чтобы возродить его!
Что вы делаете со своим старым компьютером? Тот, который когда-то имел хорошую аппаратную конфигурацию, но теперь считается устаревшим. Почему бы не восстановить его вместе с Linux? Я собираюсь перечислить лучшие легкие дистрибутивы Linux, которые вы можете использовать на своем старом ПК.
Лучшие легкие дистрибутивы Linux для старых ноутбуков и десктопов
Я постараюсь упорядочить список в порядке убывания требований к оборудованию. Это означает, что легкому дистрибутиву Linux, занимающему первое место, потребуется минимальное аппаратное обеспечение.
10. Peppermint
Peppermint — это облачно-ориентированный дистрибутив Linux, не требующий мощного железа для запуска. Он основан на Lubuntu и использует окружение рабочего стола LXDE для более плавной работы.
Уроки по SDL 2: Урок 4 — Растяжка PNG
5 min
13KВсем привет! Это четвертый урок по SDL 2. Я решил объеденить два урока в один, так как в оригинале они маленькие. Но их можно найти тут и тут. Что ж, начнем урок.
Сначала определимся с тем, что мы будем делать. Сегодня научимся загружать изображения другого расширения (не BMP), а именно: PNG. Переделаем изображение в другой формат для ускорения работы и изменим размеры изображения. Работать будем с этим избражением:
Сначала определимся с тем, что мы будем делать. Сегодня научимся загружать изображения другого расширения (не BMP), а именно: PNG. Переделаем изображение в другой формат для ускорения работы и изменим размеры изображения. Работать будем с этим избражением:
Information
- Rating
- Does not participate
- Registered
- Activity