Pull to refresh
1
0
Рудьковский Алексей @AlexRudkowskij

User

Send message

Построение компонентов с выпадающими блоками с помощью Angular и Material CDK

Reading time5 min
Views8K

Каждое приложение использует компоненты с выпадающими блоками. Такие панели используются в выпадающем списке, Autocomplete, Tooltip и т.д. В Material CDK есть инструмент Overlay для создания такого функционала.

В этой статье мы рассмотрим какую проблему решает Overlay CDK, кто использует его и напишем свой компонент на базе этого инструмента.

Читать далее
Total votes 6: ↑6 and ↓0+6
Comments2

От int main() до BeginPlay: как происходит инициализация Unreal Engine под капотом

Reading time16 min
Views18K

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

Но когда вы пишете игровой код на Unreal Engine, вы не имеете дело с игровым циклом напрямую. Вы не начинаете работать сразу с основной функцией — сначала вы определяете подкласс GameMode и переопределяете функцию под названием InitGame. Или пишете одноразовые классы Actor и Component и переопределяете их функции BeginPlay или Tick для добавления собственной логики. Это самый минимум того, что вам нужно сделать: обо всем остальном движок позаботится за вас.

Unreal Engine также предлагает вам как программисту мощный и гибкий инструментарий: конечно, он имеет открытый исходный код, но также возможно и расширение несколькими другими способами. Даже если вы только начинаете работать с этим движком, было бы не лишним получить представление о его GameFramework: о таких классах, как GameMode, GameState, PlayerController, Pawn и PlayerState.

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

Читать далее
Total votes 21: ↑21 and ↓0+21
Comments2

Как создать свою собственную Луну

Reading time6 min
Views8K

В этой статье рассказывается, как с нуля изготовить 3D-модель Луны. Казалось бы, Зачем создавать модель Луны самому, если её можно купить? Хотя бы потому, что при самостоятельном изготовлении модели Луны вы сможете задавать желаемые параметры, например размеры и толщину оболочки, разрешение изображения, пределы вращения, положение секущей плоскости, сможете сделать отверстие для лампы и так далее. Приступим же к творению своей собственной Луны.

Приятного чтения
Total votes 11: ↑9 and ↓2+7
Comments1

Уникальные тропы Death Stranding или гениальный левел-дизайн

Reading time4 min
Views35K
Привет, Хабр! Представляю вашему вниманию перевод статьи «Death Stranding — Level Design Tropes» автора Iuliu-Cosmin Oniscu.



Играл в Death Stranding и пытался сформулировать, чем она отличается от других игр с открытым миром по «классической» формуле. И пришел к выводу, что игра целится совсем в другое. Под катом — разбор оригинального левел-дизайна проекта Хидео Кодзимы.
Читать дальше →
Total votes 47: ↑41 and ↓6+35
Comments23

Как я делал свой самолёт

Reading time4 min
Views28K
image

Здравствуйте, дорогие Хабровчане!

Меня зовут Константин Томаревский. Я инженер компании Deutsche Telekom IT Sotutions. Хотел поделиться с Вами своей давней задумкой, которую пытаюсь воплотить в «железе».

По образованию я авиационный инженер. Когда я поступал в Университет СПбГПУ, я мечтал о том, что буду конструировать самолёты (ну или космические ракеты), буду работать в каком-нибудь конструкторском бюро и проводить рабочие дни за математическими расчётами, лабораторными стендами и полевыми испытаниями. Я закончил Университет, получив там очень много теоретических знаний, но ни разу не прикоснувшись к настоящей практике. Прошло уже много времени, но мысль о том, что мои знания так и остались знаниями, и не воплотились в практической плоскости, не покидала меня и я решил попробовать сделать пусть и совсем не большой, но реально функционирующий по всем правилам летательный аппарат.

image

Первоначальная идея


Мой университетский профиль – это системы управления летательными аппаратами. Мне всегда было интересно, как ведёт себя летательный аппарат (планер, самолёт) в зависимости от управления им, то есть от того, каким образом отклоняются его управляющие поверхности, как быстро и в какой конфигурации. Ещё один интересный момент – эффективность управляющих плоскостей. На разной скорости полёта их отклонение действует на летательный аппарат с разными усилиями. Если подобрать отклонения для разных скоростей, можно сделать мягкое управление летательным аппаратом.
Читать дальше →
Total votes 70: ↑70 and ↓0+70
Comments163

Анализ графики Red Dead Redemption 2

Reading time11 min
Views19K
Одна из моих любимейших игр, Red Dead Redemption, в 2018 году вернулась с приквелом для консолей. В 2019 году её выпустили для PC, и мне наконец удалось поиграть в неё; меня сразу же поразила её графика. Однако я расстроился: мне едва удавалось играть при средних настройках с 25 FPS на настольном GPU 1050Ti. Понимаю, машина у меня не очень мощная, но 25 FPS на средних настройках?

Сегодня мы рассмотрим несколько примеров кадров из игры и проанализируем использованные в игре графические приёмы.

Предисловие


Это неофициальный анализ игры. Я просто проанализировал захват кадров при помощи RenderDoc. Если вы хотите узнать информацию от самих разработчиков, то можете изучить слайды с доклада на SIGGRAPH Фабиана Байера. Слайды (внизу страницы), видео (начинается с 1:58:00).

Также можно прочитать анализ графики GTA5, выполненный Адрианом Корреже [перевод на Хабре]. Так как и RDR2, и GTA5 созданы одной компанией и используют один движок, часть приёмов из GTA5 присутствует и здесь.

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

Разбираем кадр


Вот наш основной кадр для анализа:


Кадр захвачен на PC со средними настройками.
Читать дальше →
Total votes 25: ↑25 and ↓0+25
Comments2

Программируем квадрокоптер на Arduino (часть 1)

Reading time18 min
Views357K


Здравствуйте, хаброжители!
В этой серии статей мы с вами приоткроем крышку квадрокоптера чуть больше, чем этого требует хобби, а также напишем, настроим и запустим в воздух собственную программу для полетного контроллера, которым будет являться обычная плата Arduino Mega 2560.

У нас впереди:
  1. Базовые понятия (для начинающих коптероводов).
  2. PID-регуляторы с интерактивной web-демонстрацией работы на виртуальном квадрокоптере.
  3. Собственно программа для Arduino и настроечная программа на Qt.
  4. Опасные тесты квадрокоптера на веревке. Первые полёты.
  5. Крушение и потеря в поле. Автоматический поиск с воздуха средствами Qt и OpenCV.
  6. Окончательные успешные тесты. Подведение итогов. Куда дальше?

Материал объемный, но постараюсь уложиться в 2-3 статьи.
Сегодня нас ожидает: спойлер с видео, как наш квадрокоптер полетел; базовые понятия; PID-регуляторы и практика подбора их коэффициентов.
Читать дальше →
Total votes 107: ↑106 and ↓1+105
Comments96

Артикли в английском: безжалостная война правил и исключений

Reading time21 min
Views68K


В русском языке есть такие сложные грамматические понятия как род и падеж существительных. Даже нам, носителям языка, порой бывает сложно. А что уже говорить об иностранцах, изучающих русский?

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

Нет смысла писать ещё одну статью о базовых правилах употребления артиклей в английском. Сегодня я расскажу о правилах и о способах их нарушить.
Читать дальше →
Total votes 42: ↑40 and ↓2+38
Comments69

Процедурная гидрология: динамическая симуляция рек и озёр

Reading time15 min
Views7.9K
Примечание: полный исходный код проекта выложен на Github [здесь]. В репозитории также содержится подробная информация о том, как читать и использовать код.

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

Я исследовал уже существующие методики процедурной генерации рек и озёр, но найденные результаты меня не устроили.

Основной задачей многих методов является создание систем рек (очень красивых) при помощи различных алгоритмов (иногда на основании заранее созданной карты высот или обратной задачи), но им недостаёт сильной реалистичной связи между рельефом и гидрологией.

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

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

В своём методе я стремлюсь одновременно и к простоте, и к реализму ценой небольшого повышения сложности базовой системы эрозии. Рекомендую прочитать мою предыдущю статью об этой системе [здесь, перевод на Хабре], потому что новая модель строится на её основе.
Total votes 22: ↑22 and ↓0+22
Comments4

Руководство по сжатию скелетных анимаций

Reading time11 min
Views5.2K

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


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

Основы анимации и сжатия


Скелетная анимация — довольно простая тема, если забыть о скиннинге. У нас есть концепция скелета, содержащего преобразования костей персонажа. Эти преобразования костей хранятся в иерархическом формате; по сути, они хранятся как дельта между своей глобальной позицией и позицией родителя. Терминология здесь сбивает с толку, потому что в игровом движке локальным часто называют пространство модели/персонажа, а глобальным — мировое пространство. В терминологии анимации локальным называется пространство родителя кости, а глобальным — или пространство персонажа, или мировое пространство, в зависимости от того, есть ли движение корневой кости; но давайте не будем об этом особо беспокоиться. Важно то, что преобразования костей хранятся локально относительно их родителей. Это имеет множество преимуществ, и особенно при смешении (блендинге): если бы при смешении двух поз кости были глобальными, то они бы линейно интерполировались в позиции, что приводило бы к увеличению и уменьшению костей и деформации персонажа.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments0

Советы по использованию алгоритма коллапса волновой функции

Reading time7 min
Views12K
image

В последнее время я много экспериментировал с процедурной генерацией на основе ограничений. В частности, с алгоритмом Wave Function Collapse (WFC, коллапс волновой функции). Я даже написал собственную open source-библиотеку и ассет unity.

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

В этой статье я расскажу, чему научился и что сможет поднять генераторы на основе ограничений на новый уровень.
Total votes 36: ↑36 and ↓0+36
Comments4

Service Discovery в распределенных системах на примере Consul. Александр Сигачев

Reading time8 min
Views39K

Предлагаю ознакомиться с расшифровкой доклада Александра Сигачева Service Discovery в распределенных системах на примере Consul.


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


Total votes 14: ↑14 and ↓0+14
Comments1

Идея децентрализованной социальной сети следующего поколения

Reading time13 min
Views31K

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

С интернетом что-то не так


Впервые я познакомился с Интернетом в 2000 году. Конечно, это далеко не самое начало — Сеть уже существовала до этого, но то время можно назвать как первый расцвет Интернета. Всемирная паутина — гениальное изобретение Тима Бернерса-Ли, web1.0 в его классической канонической форме. Множество сайтов и страничек, ссылающихся друг на друга гиперссылками. На первый взгляд — простая, как все гениальное, архитектура: децентрализованная и свободная. Хочу — путешествую по сайтам других людей, переходя по гиперссылкам; хочу — создаю свой сайт, на котором публикую то что мне интересно — например свои статьи, фотографии, программы, гиперссылки на интересные для меня сайты. А другие размещают ссылки на меня.

Казалось бы — идиллическая картина? Но вы уже знаете чем всё это закончилось.
Читать дальше →
Total votes 43: ↑38 and ↓5+33
Comments192

Основа геймплея игры на C++ для Unreal Engine

Reading time13 min
Views57K
image

Основа геймплея для Unreal Engine 4 предоставляет разработчику мощный набор классов для создания игры. Ваш проект может быть шутером, симулятором фермы, глубокой RPG — это неважно, основа очень универсальна, делает за вас часть тяжёлой работы и задаёт некоторые стандарты. Она довольно сильно интегрирована в движок, поэтому рекомендую вам придерживаться этих классов, а не пытаться изобретать собственную основу игры, как это часто бывает в движках наподобие Unity3D. Понимание этой основы очень важно для успешной и эффективной работы над проектами.

Для кого эта статья?


Для всех, кого интересует создание игр в UE4, а конкретно на C++, и кто хочет больше узнать о основе геймплея Unreal. В этом посте рассматриваются базовые классы, которые вы будете использовать в основе геймплея, и объясняется их применение, процесс создания их экземпляров движком и способ получения доступа к этим классам из других частей кода игры. Бо́льшая часть информации справедлива также и для блюпринтов.
Читать дальше →
Total votes 27: ↑25 and ↓2+23
Comments3

Реалистичная анимация персонажей в играх с помощью ИИ

Reading time5 min
Views20K


Разработчиками из Эдинбургского Университета представлен новый алгоритм для создания реалистичных движений персонажей в играх. Обученная на Motion Capture траекториях нейросеть пытается копировать движения реальных людей, но при этом адаптирует их под персонажей видеоигр.

Одна нейросеть способна управлять сразу несколькими действиями в игре. Открывание дверей, перенос предметов, использование мебели. При этом она динамично изменяет положения ног и рук, чтобы персонаж мог реалистично держать ящики разного размера, садиться на разные по размеру стулья, а также пролезать в проходы разной высоты.
Total votes 31: ↑30 and ↓1+29
Comments4

Workflow одного спринта команды разработки

Reading time9 min
Views22K
Если вы озаботитесь хотя бы некоторыми полезными вещами:

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

то они улучшат рабочий климат в команде разработке.
Читать дальше →
Total votes 24: ↑22 and ↓2+20
Comments6

Разработка приложения для потокового вещания с помощью Node.js и React

Reading time21 min
Views47K
Автор материала, перевод которого мы сегодня публикуем, говорит, что работает над приложением, которое позволяет организовывать потоковое вещание (стриминг) того, что происходит на рабочем столе пользователя.

image

Приложение принимает от стримера поток в формате RTMP и преобразует его в HLS-поток, который может быть воспроизведён в браузерах зрителей. В этой статье будет рассказано о том, как можно создать собственное стриминговое приложение с использованием Node.js и React. Если вы привыкли, увидев заинтересовавшую вас идею, сразу же погружаться в код, можете прямо сейчас заглянуть в этот репозиторий.
Читать дальше →
Total votes 39: ↑37 and ↓2+35
Comments6

Как реализован рендеринг «Ведьмака 3»: молнии, ведьмачье чутьё и другие эффекты

Reading time44 min
Views29K
image

Часть 1. Молнии


В этой части мы рассмотрим процесс рендеринга молний в Witcher 3: Wild Hunt.

Рендеринг молний выполняется немного позже эффекта занавес дождя, но всё равно происходит в проходе прямого рендеринга. Молнии можно увидеть на этом видео:


Они очень быстро исчезают, поэтому лучше просматривать видео на скорости 0.25.

Можно увидеть, что это не статичные изображения; со временем их яркость слегка меняется.

С точки зрения нюансов рендеринга здесь есть очень много сходств с отрисовкой занавес дождя в отдалении, например, такие же состояния смешивания (аддитивное смешивание) и глубины (проверка включена, запись глубин не выполняется).
Total votes 48: ↑48 and ↓0+48
Comments2

История интернета: опорная сеть

Reading time20 min
Views24K


<< До этого: Многократное переизобретение

Введение


В начале 1970-х в компанию AT&T, огромную телекоммуникационную монополию США, пришёл Ларри Робертс с интересным предложением. В то время он был директором вычислительного подразделения управления перспективных исследовательских проектов (Advanced Research Projects Agency, ARPA), относительно молодой организации, действующей в рамках Министерства обороны, и занимавшейся долгосрочными исследованиями, оторванными от действительности. За прошедшие до этого момента пять лет Робертс курировал создание ARPANET, первой из достаточно важных компьютерных сетей, соединявшей компьютеры, расположенные в 25 различных местах по всей стране.

Сеть оказалась успешной, но её долгосрочное существование и вся связанная с этим бюрократия не попадала под полномочия ARPA. Робертс искал способ сбросить эту задачу на кого-то другого. И вот он связался с директорами AT&T, чтобы предложить им «ключи» от этой системы. Тщательно обдумав предложение, AT&T в итоге отказалась от него. Старшие инженеры и менеджеры компании считали, что фундаментальная технология ARPANET была непрактичной и нестабильной, и ей не было места в системе, спроектированной для предоставления надёжного и универсального сервиса.
Читать дальше →
Total votes 44: ↑38 and ↓6+32
Comments12
1
23 ...

Information

Rating
Does not participate
Location
Запорожье, Запорожская обл., Украина
Registered
Activity