Обновить
6
0
Иван GiB$ON@gibson_dev

Пользователь

Отправить сообщение

Фотореалистичная графика на уровне ААА в Unity

Время на прочтение12 мин
Охват и читатели39K

До сих пор распространено мнение о том, что Unreal Engine превосходит Unity в графическом плане, но так ли это в действительности? (Спойлер: нет.)

Такое мнение сформировалось по ряду причин. Одна из причин отсылает нас к 2015 году, когда в Unity был доступен лишь встроенный конвейер рендеринга с рядом ограничений. На тот момент добиться сопоставимого с Unreal Engine визуала было очень сложно. Другой причиной является порог входа в Unity: он довольно низкий, а начинающим программистам и дизайнерам совсем не очевидна концепция компонентной системы Unity, что порождает довольно много слухов по сей день.

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

Всем под кат! Далее мы расскажем, как добиться фотореалистичной графики в Unity.

Читать далее

Мультиплеер в Unreal Engine: Подключение и Хостинг

Время на прочтение11 мин
Охват и читатели30K

Привет Хабр!

В этой статье я хочу раскрыть механику создания онлайн сессии и подключения к ней. Все выполнено в с использованием Online Subsystem для возможного расширения вашей игры в контексте Steam, Origin, Play Station Store и т.д

Читать далее

Хакаем CAN шину авто. Мобильное приложение вместо панели приборов

Время на прочтение7 мин
Охват и читатели132K

Я продолжаю изучать CAN шину авто. В предыдущих статьях я голосом открывал окна в машине и собирал виртуальную панель приборов на RPi. Теперь я разрабатываю мобильное приложение VAG Virtual Cockpit, которое должно полностью заменить приборную панель любой модели VW/Audi/Skoda/Seat. Работает оно так: телефон подключается к ELM327 адаптеру по Wi-Fi или Bluetooth и отправляет диагностические запросы в CAN шину, в ответ получает информацию о датчиках.

По ходу разработки мобильного приложения пришлось узнать, что разные электронные блоки управления (двигателя, трансмиссии, приборной панели и др.) подключенные к CAN шине могут использовать разные протоколы для диагностики, а именно UDS и KWP2000 в обертке из VW Transport Protocol 2.0.

Как телефон взаимодействует с автомобилем

Мини-куб из 3456 светодиодов

Время на прочтение4 мин
Охват и читатели30K


Не знаю почему, но мне очень нравятся светодиоды, и видеть их можно почти во всех моих проектах. Буквально недавно меня вдохновил Грег Дэвилл своим проектом миниатюрного LED-куба с 3456 светодиодами. Немного поразмышляв на эту тему, я решил собрать такой же чудесный куб сам, о чем и поделюсь с вами в данной статье.
Читать дальше →

Григорий Остер — Вредные советы для учителей программировать

Время на прочтение15 мин
Охват и читатели30K

Есть у человека такой замечательный перк. Он может обучить другого человека чему-то полезному. Да, конечно, некоторые животные тоже так могут делать, но им далеко до того грандиозного масштаба, с которым мы обучаем друг друга. Мы это дело поставили на поток и проворачиваем в таких объёмах, что тут можно только позавидовать.

Доводилось ли Вам кого-нибудь учить?

Что? Вас уже корёжит и передёргивает от одного только упоминания этого мероприятия? Вы постоянно вспоминаете о том самом стажёре, который был настолько туп, что Вы просто не могли себя сдержать?

Кто-то обвалил собранную базу данных, потому что не увидел разницы между rm -rf ./old и rm -rf . /old?

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

Заходите, поговорим.
Читать дальше →

Создаем CLI-приложение с помощью React.js

Время на прочтение7 мин
Охват и читатели9.4K

Приложения с интерфейсом в виде командной строки (Command-Line Interface — CLI) стали популярными в экосистеме разработчиков по целому ряду причин. Самые банальные из них — это простота использования (CLI) и то, что многие важнейшие инструменты разработки представляют из себя терминальные приложения или предоставляют интерфейс командной строки, и многие разработчики уже к ним привыкли.

Читать далее

Лучший способ выбора случайной точки в круге

Время на прочтение10 мин
Охват и читатели27K
image

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

История о том, как я за минуту разработал приёмопередающую систему для МинПромстроя, сэкономив миллионы советских рублей

Время на прочтение10 мин
Охват и читатели10K

1972 год. Сентябрь. Я поступил в Политехнический институт на вечернее отделение!

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

Читать далее

Ускоряем pow

Время на прочтение7 мин
Охват и читатели34K

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

Сравнить точность алгоритмов можно прямо сейчас на этой странице.

В конце будет краткая памятка по тому, где и когда лучше применять какой из методов. При правильном выборе можно добиться увеличения скорости вычислений в 5 раз при погрешности ~1%, а иногда и вовсе без неё.

Ускорь мои степени!

Оптимизация игр на Unity: проверенный в деле план

Время на прочтение10 мин
Охват и читатели43K

Оптимизация игр — отдельная головная боль разработчиков, процесс, который может идти бесконечно. Нужно учесть загрузку процессора, видеокарты и не потерять FPS. Нашли статью, автор которой 13 лет разрабатывает на Unity и делится советами по оптимизации. Под катом есть пошаговый план, как сделать проект на Unity более производительным.

Читать далее

Java.  The composite pattern on Game Server

Время на прочтение4 мин
Охват и читатели3.6K

Паттерн Компоновщик - так же известен как Дерево, Composite.

Суть паттерна

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

Проблема

Использование шаблона Composite имеет смысл только тогда, когда базовая модель вашего приложения может быть представлена в виде дерева.

Например, представьте, что у вас есть два типа объектов: конфигурация награды и конфигурация сундука. Сундук может содержать несколько Наград, а также несколько Сундуков меньшего размера. Эти маленькие сундуки также могут содержать некоторые награды или даже сундуки меньшего размера и т. Д.

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

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

Читать далее о паттерне Компановщик

Как я получил 4 оффера в FAANG в Европе или из Воронежа в Лондон

Время на прочтение16 мин
Охват и читатели46K


Очередная история успеха после череды неудач. Расскажу, чего мне стоило получить офферы от Facebook*, Google, Amazon, JP Morgan в Европе, как я готовился, сколько собесов зафейлил перед тем, как удача повернулась ко мне правильной стороной.


TL;DR. Послал сотни резюме. Прорешал около 100 задач на Leetcode. Прочел книжку по архитектуре (не той, которая про дома, а той, которая system design). Прошел 9 интервью. Получил 4 оффера. Принял 1. Жил, пока что, не очень долго, но, вполне себе, счастливо в Лондоне.
Читать дальше →

Траблшутинг в буддийском монастыре

Время на прочтение17 мин
Охват и читатели5.6K

Виктор Живицкий на момент описанных здесь событий имел двадцатилетний опыт в сетевой инженерии. У него была жена, дочь и рабочая виза в Таиланде. Когда в 2015 году в центре Бангкока прогремел взрыв, он потерял и жену и дочь. Он не смог вернуться к работе, начал забывать спать, есть, и стал находить себя среди незнакомых мест, дорогу к которым кветиапин и венлафаксин исправно вычёркивали из памяти. Когда и медстраховка исчерпала себя, Виктор был в том же состоянии, в которое его погрузила весть о гибели жены и дочери: он крепко отсутствовал в себе.

Жизнь не щадит слабых и сломленных. Виктор быстро скатился до бродяжничества. Иногда он появлялся у кофейни Eiah Sae 益生 на улице Phat Sai, у таицев знаменитой тем, что однажды её посетил член королевской семьи (о чём есть фотография в огромной позолоченной рамке прямо над кассой), у китайцев же известной за лучший кофе в Бангкоке. По обеим из этих причин эту кофейню посещал Д., который во время пандемии организует фонд помощи соотечественникам и поможет множеству людей, застрявшим в Таиланде. 

В один из дней Д. заметил Виктора и подошёл к нему. 

Эта встреча заронила зерно выздоровления в больную душу Виктора и тысячу бат в его карман на дорогу в буддийский монастырь. Так началось его путешествие, о котором ваш покорный слуга узнает по нескольким траблшутинг-постам на форуме Huawei. С Виктором удастся связаться, получить от него эту историю и опубликовать здесь с его согласия, не изменив ни слова. Эта история о том, как знания после десятилетий практики стали частью самого человек, и, может быть, помогли выстоять ему в трагедии, из-за которой лучшая часть его души была вырвана безвозвратно.

Читать далее

Функциональные  опции в Go: реализация шаблона опций в Golang

Время на прочтение4 мин
Охват и читатели14K

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

Читать далее

Почему графику в видеоиграх по-прежнему так сложно создавать?

Время на прочтение28 мин
Охват и читатели35K

Введение


В этом посте будут рассмотрены трудности и аспекты производства, которые нужно учитывать при создании новых методик и алгоритмов рендеринга/графики, особенно в контексте прикладных исследований рендеринга реального времени. Я буду рассказывать о своём личном опыте работы над Witcher 2, Assassin’s Creed 4: Black Flag, Far Cry 4 и God of War.

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

Я слышал вопросы типа «почему эта великолепная исследовательская методика X не используется в продакшене?» и от геймеров, и от коллег из научных кругов. На то всегда бывают очень веские причины!

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

Я вспоминаю об этой теме ещё и каждый раз, когда слышу дискуссии о том, что «фотограмметрия, трассировка лучей, нейронный рендеринг, [вставить любую другую новую тему] станет универсальным решением для рендеринга и заменит всё остальное!». Спойлер: этого не случится (по крайней мере, в ближайшее время).
Читать дальше →

Протокол безопасности транспортного уровня (TLS), версия 1.2 (RFC 5246) (Часть 1)

Время на прочтение26 мин
Охват и читатели21K

На настоящий момент (август 2021 года) автором данного перевода не было найдено хоть сколько-нибудь приемлемого перевода стандарта протокола TLS версии 1.2 на русский язык. Единственный найденный перевод находится сайте protocols.ru и, во-первых, доступен только в кэше поисковика, а во-вторых, при всем уважению к его переводчику, не устраивает автора по причине неудобочитаемости и трудности восприятия. И хотя на сайте efim360.ru находится качественно выполненный перевод стандарта протокола TLS версии 1.3, многие места этого перевода могут вызвать некоторые трудности для понимания, особенно у начинающего изучать криптографию читателя. Для устранения таких «белых пятен»   и было задумано осуществить перевод стандарта протокола TLS версии 1.2 на русский язык.     

Читать далее

Про многопоточность 1. Thread

Время на прочтение13 мин
Охват и читатели53K

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

Читать далее

Когда используется Power Delivery, и что происходит при установлении соединения между блоком питания и устройством

Время на прочтение6 мин
Охват и читатели53K

В прошлый раз я рассказывал про минимальный набор компонентов, который может быть включён в устройство для поддержки базовых функций USB-C. Но бывают ситуации, когда этих базовых возможностей недостаточно – например, нужно использовать несколько профилей напряжения, чтобы блок питания от одного устройства подходил к другому. Или же есть необходимость подстроить сами профили. Или просто нужна бОльшая мощность питания (в случае с USB-C доступный максимум – 15 Вт). Во всех этих ситуациях на помощь придёт стандарт Power Delivery. Он, например, используется в линейке зарядных устройств Apple – профили с бОльшим напряжением доставляют бОльшую мощность к устройству и позволяют его быстро заряжать. В нашем смарт-экране SberPortal есть узлы, которые требуют значительной мощности питания – прежде всего это высокопроизводительная система на кристалле (SoС) и акустика. Один только звук требует около 30 Вт. Поэтому при разработке устройства пришлось усложнить систему питания и реализовать Power Delivery. Об этом стандарте и пойдёт ниже речь.

Также разберёмся в его особенностях и посмотрим, как со временем изменился способ передачи данных в стандарте. А ещё я расскажу и покажу с помощью анализатора протокола, что происходит при установлении подключения в устройствах, на примере ноутбука с Power Delivery. Затем посмотрим, как мы реализовали PD в нашем смарт-экране SberPortal.

Читать далее

Приёмы ускорения кода на JS и других языках: подборка от разработчика поиска Яндекса

Время на прочтение17 мин
Охват и читатели73K
Привет! Меня зовут Виктор Хомяков, в Яндексе я работаю над скоростью страниц поиска. Однажды мне в голову пришла идея обобщить свой опыт и систематизировать приёмы ускорения работы кода на JavaScript. То, что получилось в итоге, собрано в этом материале.

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


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

С++ на практике

Время на прочтение11 мин
Охват и читатели51K


Все мы знаем, что С++ — мощный язык, у которого много сторонников. Но чем могут быть недовольны даже сторонники? Где сталкиваешься с неудобствами и чем они вызваны? Почему в примитивном приложении могут вылезти неожиданные сложности и чего не хватает в стандартной библиотеке? А главное, что можно сделать для улучшения ситуации?


Антон Полухин (antoshkka), состоящий в комитете по стандартизации C++ и работающий в «Яндекс.Такси», рассказал обо всём этом в докладе «C++ на практике». Сам доклад появился ещё в 2019-м, и с выходом C++20 что-то изменилось, но главные тезисы и вывод остались актуальны. Поэтому теперь, готовя новую конференцию C++ Russia 2021, мы решили сделать для Хабра пост на основе этого доклада. Под катом — и текст, и видеозапись. Далее повествование идёт от лица Антона.

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

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность