Pull to refresh
3
0
Send message

Android для радиоинженера (часть вторая)

Reading time 5 min
Views 9.5K
В первой части я немного рассказал о приложении RF & Microwave Toolbox. Во второй части расскажу о не менее интересном приложении, которое позволяет проектировать СВЧ устройства (преимущественно, планарные) на смартфоне/планшете под управлением ОС Android. Если вам интересно, то добро пожаловать под кат…



Total votes 27: ↑27 and ↓0 +27
Comments 10

Создание пиксельной туманности при помощи шума и Median Cut

Reading time 13 min
Views 5.5K
Я хотел, чтобы в моей игре The Last Boundary была туманность. Они потрясающе выглядят и космос без них не космос, а просто разбросанные по фону белые пиксели. Но так как игру я делаю в стиле «пиксель-арт», то мне нужно было как-то заставить мою библиотеку шума генерировать пикселизированные изображения.

Вот несколько примеров:



Ещё примеры





В одноцветных примера используется 8 цветов, а в других — 16 цветов. В этой статье я расскажу, как создавал пикселизированную туманность для The Last Boundary.
Читать дальше →
Total votes 25: ↑24 and ↓1 +23
Comments 2

Деревянные игрушки, часть вторая — 1986-1988

Reading time 5 min
Views 22K
Продолжая воспоминания про деревянные игрушки. Играть я на компьютерах начал где-то в районе 1988-1989. Первые несколько лет — на работе у родителей друзей, а дальше уже начали и по домам компьютеры появляться. Свой, правда, у меня появился относительно поздно, где-то в 1997. Потому до того момента игры, которые требовали больших вложений времени, мне были редко доступны. Не, были, конечно, игровые сессии по несколько часов, но посидеть спокойно вечер за какой-нибудь ультимой в актуальное время у меня возможности не было. Кое-что наверстывал потом, из-за того, что свой компьютер был 486-33 и актуальные в то время игры на нём уже шли не слишком хорошо. Потому занимался тем, что шерстил старые сборники в поисках интересного или пропущенного в раннем детстве.



Содержание:
Деревянные игрушки — эпилог, что осталось прибитым к потолку
Деревянные игрушки, часть последняя — 1997
Деревянные игрушки, часть десятая — 1996
Деревянные игрушки — неписи
Деревянные игрушки, часть девятая — 1995
Деревянные игрушки, часть восьмая — 1994
Деревянные игрушки, часть седьмая — 1993
Деревянные игрушки, часть шестая — 1992
Деревянные игрушки, часть пятая — 1991
Деревянные игрушки, часть четвертая — 1990
Деревянные игрушки, часть третья — 1989
Деревянные игрушки, часть вторая — 1986-1988
Деревянные игрушки, часть первая — 1982-1985
Читать дальше →
Total votes 40: ↑40 and ↓0 +40
Comments 103

Как я создал фильтр, не портящий изображение даже после миллиона прогонов

Reading time 10 min
Views 8.4K
Завершив создание веб-архитектуры для нашего нового веб-комикса Meow the Infinite, я решил, что самое время написать несколько давно назревших технических статей. Данная статья будет посвящена фильтру, разработанному мной несколько лет назад. Он никогда не обсуждался в области сжатия видео, хотя мне кажется, что это стоит сделать.

В 2011 году я разработал “half-pel filter”. Это особый вид фильтра, который берёт входящее изображение и максимально убедительно отображает, как бы выглядело изображение при сдвиге ровно на полпикселя.

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

При анализе поведения алгоритмов компенсации движения в традиционных halfpel-фильтрах, Джефф Робертс выяснил, что при многократном применении к последовательным кадрам они быстро деградируют, заставляя другие части видеокомпрессора использовать для исправления артефактов больше данных, чем необходимо. Если отключить эти исправления и взглянуть на «сырые» результаты halfpel-фильтра, то такое исходное изображение:


превращается вот в такое:


всего спустя одну секунду видео. Как и должно, оно сдвинуто в сторону, потому что каждый кадр сдвигал изображение на полпикселя. Но результат выглядит не как перемещённая версия исходного изображения, он серьёзно искажён.
Читать дальше →
Total votes 34: ↑32 and ↓2 +30
Comments 11

Создание дизайн-документа миссии повествовательной игры на примере Last of Us

Reading time 12 min
Views 12K
image

Я всегда начинаю с того, что задаю много вопросов и провожу активные исследования. За свою карьеру я успел поработать над множеством сиквелов уже существовавших франшиз. Лучшее, что ты можешь сделать в этом случае — полностью освоить жанр игры и изучить мир. Среди прочих проектов, мне приходилось с головой нырять в Halo, StarWars, Hellboy и Division. Хорошие гейм-дизайнеры — это хорошие исследователи.

Naughty Dog мастерски реализовала The Last of Us: Left Behind, и прежде чем браться за этот проект, мне нужно было хорошо подготовиться. Если вы не играли в Last of Us, то сыграйте! Это одна из самых потрясающих историй и несравненный пример развития персонажей. Другие разработчики очень многому могут научиться у создателей этой игры. Из-за сильного упора на повествование Naughty Dog называет свои дизайн-документы миссий «набросками глав». Мне кажется, это очень милый штрих. Это заставляет больше думать о повествовании при создании контента и придавать дизайну более сюжетную структуру.

Предупреждение — в статье содержатся спойлеры Last of US и Last of Us DLC.
Читать дальше →
Total votes 15: ↑15 and ↓0 +15
Comments 2

Процедурное создание лун

Reading time 6 min
Views 6.5K
image

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

Система предполагает, что луны имеют сферическую основу. К базовой сфере применяется создание геодезического меша, что гарантирует одинаковую площадь всех частей поверхности. Система применяет эту структуру только как вычислительную сетку для процедурной генерации, настоящая поверхность луны будет намного более гладкой, чем сетка генерации.
Читать дальше →
Total votes 26: ↑26 and ↓0 +26
Comments 4

Загадки на пути поисков идеальной случайности

Reading time 5 min
Views 3.7K

Существует ли объективная, идеальная случайность, или она является следствием нашего неведения?




Жизнь – штука непредсказуемая, и случайности происходят с нами постоянно. Можно сказать, что сама по себе Вселенная случайно. И, тем не менее, каким-то образом большие количества случайных событий могут создавать крупномасштабные закономерности, которые наука способна предсказывать. Рассеяние тепла и броуновское движение – всего лишь два примера таких событий.

Недавно случайность даже попала в новостные ленты: оказалось, что у случайных поверхностей имеется скрытый порядок, а ещё мы, возможно, близко подошли к тому, чтобы увидеть, как квантовый компьютер генерирует идеальную случайность. Последний случай, поиски идеальной случайности, важен потому, что случайность приносит непредсказуемость, и у всех не относящихся к квантовым технологиям попыток достичь её есть один скрытый недостаток: они реализованы посредством алгоритмов, которые, теоретически, можно расшифровать. В данной колонке мы изучим, как можно создать случайность и победить её в повседневной жизни, перед тем, как подниматься на философские вершины дебатов о том, что есть истинная случайность.
Читать дальше →
Total votes 17: ↑15 and ↓2 +13
Comments 6

Создание игры Tower Defense в Unity: сценарии и волны врагов

Reading time 15 min
Views 8.9K
[Первая, вторая, третья и четвёртая части туториала]

  • Поддержка врагов малого, среднего и крупного размеров.
  • Создание игровых сценариев со множественными волнами врагов.
  • Разделение конфигурации ассетов и геймплейного состояния.
  • Запуск, пауза, победа, поражение и ускорение игры.
  • Создание бесконечно повторяющихся сценариев.

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

Туториал создавался в Unity 2018.4.6f1.


Становится довольно уютно.
Читать дальше →
Total votes 20: ↑20 and ↓0 +20
Comments 1

Gap — светлое будущее для отступов в Flexbox (как в Grid)

Reading time 4 min
Views 129K


Одна из моих любимых частей спецификации CSS Grid — это grid-gap. Они позволяют легко создавать отступы между элементами внутри сетки.

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

W3C порекомендовала отказаться от свойства grid-gap в пользу простого gap и его использования в Flexbox и Multi-Column.

В этом руководстве мы посмотрим, как добавляли margins в Flexbox раньше и как это делает свойство gap, позволяя нам получить внутренние отступы без дополнительных ухищрений.
Читать дальше →
Total votes 14: ↑14 and ↓0 +14
Comments 22

Тяжела ли работа программиста — взгляд с точки зрения психофизиологии

Reading time 4 min
Views 65K
Во первых словах:
— Работа программистом-разработчиком — тяжелый труд, сравнимый с валкой леса топором. И проблематика данного труда сильно недооценена в общественном сознании.
Сейчас я обосную этот тезис с научной точки зрения.


Читать дальше →
Total votes 118: ↑101 and ↓17 +84
Comments 366

Android для радиоинженера (и не только)

Reading time 6 min
Views 40K
С того самого момента, когда я приобрел свой первый смартфон, работающий под ОС Android, я искал приложения под эту ОС, которые бы помогли мне делать несложные рабочие расчеты «на ладошке». Об одном из таких приложений и пойдет речь.

Читать дальше →
Total votes 69: ↑68 and ↓1 +67
Comments 19

50 оттенков matplotlib — The Master Plots (с полным кодом на Python)

Reading time 39 min
Views 358K
Те, кто работает с данными, отлично знают, что не в нейросетке счастье — а в том, как правильно обработать данные. Но чтобы их обработать, необходимо сначала проанализировать корреляции, выбрать нужные данные, выкинуть ненужные и так далее. Для подобных целей часто используется визуализация с помощью библиотеки matplotlib.



Встретимся «внутри»!
Читать дальше →
Total votes 67: ↑67 and ↓0 +67
Comments 15

Портируем многопользовательскую игру с С++ на веб c Cheerp, WebRTC и Firebase

Reading time 8 min
Views 6.3K

Введение


Наша компания Leaning Technologies предоставляет решения по портированию традиционных desktop-приложений в веб. Наш компилятор C++ Cheerp генерирует сочетание WebAssembly и JavaScript, что обеспечивает и простое взаимодействие с браузером, и высокую производительность.

В качестве примера его применения мы решили портировать для веба многопользовательскую игру и выбрали для этого Teeworlds. Teeworlds — это многопользовательская двухмерная ретро-игра с небольшим, но активным сообществом игроков (в их числе и я!). Она мала как с точки зрения скачиваемых ресурсов, так и требований к ЦП и GPU — идеальный кандидат.


Работающая в браузере Teeworlds
Total votes 27: ↑26 and ↓1 +25
Comments 9

Как мы делали нашу маленькую Unity с нуля

Reading time 8 min
Views 17K


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

  • рендеринг;
  • работа с SDK;
  • работа с операционной системой;
  • с сетью и ресурсами. 

Однако в нем не хватало того, чем так ценится Unity, — удобной системы организации сцен и игровых объектов, а также редакторов к ним.

Здесь я хочу рассказать, как мы внедряли все эти удобства и к чему пришли.
Читать дальше →
Total votes 21: ↑20 and ↓1 +19
Comments 9

Как мы сделали движок и игру на нем за полтора года. Часть вторая. Инфраструктура

Reading time 6 min
Views 13K
Для начала несколько комментариев по следам предыдущей статьи. Мы действительно раньше работали в компании Wargaming, где разрабатывали движок, известный как dava.framework или dava.engine. Поэтому многие старые коллеги, с которыми мы по-прежнему в хороших отношениях, активно участвуют в обсуждении.

У ряда людей возникли сомнения: это та же технология или другая? Ответ: это новая технология, написанная с нуля.

Как же мы справились всего за год? Наша команда имеет огромный опыт. Многие занимаются разработкой движков и игр более 15-и лет.

Почему с нуля, если можно было взять наш старый движок, который к тому же лежит в open-source? Ему около 10 лет, и большая часть кода устарела. Даже самые лучшие части движка, которыми мы гордимся, местами содержали куски кода и какие-то рудименты 5-и, 7-и и иногда даже 10-ти летней давности. Многие архитектурные решения были рассчитаны на устройства того времени — начиная с айфона 3G. Сейчас же мы ориентируемся минимум на iPad Air 1 и аналогичные ему по мощности Android-устройства. Соответственно и подходы несколько поменялись.
Читать дальше →
Total votes 27: ↑25 and ↓2 +23
Comments 4

Каверзные кватернионы

Reading time 4 min
Views 185K


Отгадайте загадку: в четырёх измерениях сидит и комплексными числами воротит?

Подсказка: это вектор со скаляром. И вещественная матрица. И придумал его Гамильтон.

Не помогло? Ну что вы, это же элементарно! Это кватернион! Кватернионы используют для записи вращений в робототехнике, игровых движках, ПО для моделирования и вообще везде, где не нужны проблемы с углами Эйлера или матрицами. Если вас испугала путаница выше с разными представлениями кватерниона, то можете быть спокойны. Кватернионы очень просты в использовании и их внутреннее строение может понадобиться только в очень редких случаях, где нужна тонкая оптимизация. В остальное время с помощью кватернионов можно крутить всё что угодно и как угодно, и оно будет плавно и красиво интерполироваться без шарнирных замков.
Что же такое кватернион?
Total votes 110: ↑102 and ↓8 +94
Comments 48

Процедурная генерация планет

Reading time 19 min
Views 38K

От переводчика:
Представляю вашему вниманию статью авторства Andy Gainey, в прошлом независимого разработчика игровых инструментов, ныне сотрудника Paradox Development Studio. На мой взгляд, автор играючи создал один из лучших процедурных генераторов планет с открытым исходным кодом.

Читать дальше →
Total votes 96: ↑94 and ↓2 +92
Comments 17

Лучшие дистрибутивы Linux для старых компьютеров

Reading time 8 min
Views 479K
Привет!

Меня зовут Рушан, и я автор Telegram‑канала Нейрон. Не забудьте поделиться с коллегами или просто с теми, кому интересны такие статьи.

Вкратце: пока не бросайте свой старый компьютер — используйте легкий дистрибутив Linux, чтобы возродить его!

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

Лучшие легкие дистрибутивы Linux для старых ноутбуков и десктопов


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

10. Peppermint


image

Peppermint  —  это облачно-ориентированный дистрибутив Linux, не требующий мощного железа для запуска. Он основан на Lubuntu и использует окружение рабочего стола LXDE для более плавной работы.
Читать дальше →
Total votes 75: ↑70 and ↓5 +65
Comments 177

Уроки по SDL 2: Урок 4 — Растяжка PNG

Reading time 5 min
Views 13K
Всем привет! Это четвертый урок по SDL 2. Я решил объеденить два урока в один, так как в оригинале они маленькие. Но их можно найти тут и тут. Что ж, начнем урок.

Сначала определимся с тем, что мы будем делать. Сегодня научимся загружать изображения другого расширения (не BMP), а именно: PNG. Переделаем изображение в другой формат для ускорения работы и изменим размеры изображения. Работать будем с этим избражением:

image
Читать дальше →
Total votes 10: ↑9 and ↓1 +8
Comments 1

Information

Rating
Does not participate
Registered
Activity