Как стать автором
Обновить
-3
0
Кирилл Свидерский @kaiZer_dragomir

C++ Unreal Engine Developer

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

Как получил оффер от Microsoft

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

О чем эта статья

Это продолжение моих похождений по ФААНГ. Предыдущая статья была о моем опыте собеседования в Амазоне.

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

К слову, все собеседования тоже сейчас проходят онлайн, и никаких онсайт интервью нет.

Читать далее
Всего голосов 88: ↑80 и ↓8+72
Комментарии139

Unity «Best» Practices

Время на прочтение11 мин
Количество просмотров26K

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

Что такое AssetPostprocessor и чем Animation отличается от Animator? Почему не стоит доверять OnTriggerExit и зачем вам CanvasGroup? Чем хорош GameObject.Find и как вас спасут Property?

Далее в статье обсудим это, а также другие «особенности» работы с движком Unity.

Читать далее
Всего голосов 40: ↑38 и ↓2+36
Комментарии12

Как создавать уникальные лабиринты

Время на прочтение11 мин
Количество просмотров14K

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

А что если мы хотим тоже сделать свой интересный и уникальный лабиринт? Очевидно, нужно создать эти самые правила. Далее я постараюсь кратко, понятно и без лишних непонятных букв рассказать о разработке своего подхода к генерации различного рода лабиринтов. Объясню, почему я этим занялся, с чего начинал и как всё развилось до вполне приличного алгоритма на основе подхода и почему каждый из вас может взять этот подход за основу и адаптировать его под свои желания.
Погрузиться в мир лабиринтов
Всего голосов 45: ↑45 и ↓0+45
Комментарии14

Как LINQ, только быстрый и без аллокаций

Время на прочтение4 мин
Количество просмотров24K

Кому не нравится LINQ в C#? Встроенная и уже достаточно старая фича языка C# и рантайма .NET.

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

Читать далее
Всего голосов 47: ↑47 и ↓0+47
Комментарии28

Питон против Безумного Макса, или как я посты на Хабре замораживал

Время на прочтение8 мин
Количество просмотров36K

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

Потом что-то пошло не так, начали появляться какие-то полутехнические статьи, и (далее моя интерпретация событий) чтобы сохранить Хабр, всех нетехнических писателей заманили в один корабль и отправили куда подальше на гиктаймс - подобно тому, как врач ампутирует руку пациенту, чтобы спасти жизнь. В данном случае, правда, врач подержал эту руку, посмотрел на неё, а потом пришил обратно. Что из этого вышло?

Что из этого вышло
Всего голосов 395: ↑383 и ↓12+371
Комментарии193

Я рефакторю компании

Время на прочтение11 мин
Количество просмотров21K

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

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

Мы превращаем людей в скрипты, а потом заменяем их, если получается.

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

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

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

Итак, давайте покажу процесс верхнеуровнево: как разобрать и собрать процессы заново, выстраивая это всё в систему.

Читать дальше →
Всего голосов 66: ↑63 и ↓3+60
Комментарии23

C++ быстрее и безопаснее Rust, Yandex сделала замеры

Время на прочтение15 мин
Количество просмотров121K

Спойлер: C++ не быстрее и не медленнее и вообще смысл не в этом. Эта статья является продолжением славных традиций развенчания мифов крупных российских компаний о языке Rust. Предыдущая была "Go быстрее Rust, Mail.Ru Group сделала замеры".


Недавно я пытался заманить коллегу, сишника из соседнего отдела, на Тёмную сторону Rust. Но мой разговор с коллегой не задался. Потому что, цитата:


В 2019 году я был на конференции C++ CoreHard, слушал доклад Антона antoshkka Полухина о незаменимом C++. По словам Антона, Rust еще молодой, не очень быстрый и вообще не такой безопасный.

Антон Полухин является представителем России в ISO на международных заседаниях рабочей группы по стандартизации C++, автором нескольких принятых предложений к стандарту языка C++. Антон действительно крутой и авторитетный человек в вопросах по C++. Но доклад содержит несколько серьёзных фактических ошибок в отношении Rust. Давайте их разберём.

Всего голосов 230: ↑214 и ↓16+198
Комментарии1196

[Пятничное] Теория Жоп

Время на прочтение5 мин
Количество просмотров197K

Эту полу-шуточную теорию о проектном управлении я излагал коллегам по ИТ цеху лет 15 назад, и тогда же неоднократно слышал советы загрузить этот текст на Хабр, но руки не дошли. На днях, разгребая старые файлы наткнулся на свои записи и решил все таки поделиться ими с Вами. Частое употребление ключевого слова к сожалению, неизбежно и не отделимо для целостности этого текста, прошу принимать или нет 'as is'. Итак...

Каждая карьера развивается от Жопы к Жопе, и никак иначе. Хочешь повышения - ищи Жопу и принимай, как говорят в Америке, "challenge". Если Вам предлагают возглавить новый проект, либо занять какую то должность, да что угодно - знайте, там Вас ждет Жопа. Иначе не предложили бы, а сами бы справились. Равно как и если Вы ожидаете избавиться от надоевшей Вам сейчас деятельности, надеясь вырваться из "этого ада" и заняться "чем то новеньким" - будьте готовы встретиться с Большой Жопой.

Читать далее
Всего голосов 496: ↑485 и ↓11+474
Комментарии99

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

Время на прочтение10 мин
Количество просмотров21K
image

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

Нанять нельзя отсеивать — ставим запятые

Время на прочтение9 мин
Количество просмотров11K

В очередной раз народ на Reddit радуется жизни. Новое резюме, которое состоит из слов, встречающихся в поисковых оптимизаторах, в 90% случаев приводит к ответу от компаний-нанимателей. Нет, на самом деле: зайдите, посмотрите на это замечательное резюме. 

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

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

Изначально резюме было достаточно стандартным и обычным. Но после этого SEO-апгрейда она получила предложения от таких компаний как Notion, Blend и Airbnb. Atlassian ответили на него в течение часа. 

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

Замечательно, ничего не скажешь. Система найма в настоящее время превратилась в болото, которым правит великий и могучий AI.

Читать далее
Всего голосов 44: ↑34 и ↓10+24
Комментарии39

20 вещей, которые я узнал за 20 лет работы инженером-программистом

Время на прочтение8 мин
Количество просмотров99K

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

Особенно отзываются пункты «стройте компактные системы» и «лучший код — это отсутствие кода». Последний совет я превращаю в цитату из какого-то второсортного фильма про самураев: «Лучшая победа — та, которую ты одержал, не доставая меч из ножен» (думаю, сослуживцы за моей спиной уже закатывают глаза). И, конечно, бесконечные разговоры про легендарных 10x-программистов постоянно хочется прервать советом не связываться с 0,1x-программистами (которые реально существуют, в отличие от 10x).

Читать далее
Всего голосов 186: ↑181 и ↓5+176
Комментарии158

Переписка со спамерами: избранное

Время на прочтение4 мин
Количество просмотров69K

Конец XIV века, неизвестный автор: Комиссия ФАС изучает отмазки спамера.

Я радуюсь, получая спам – ведь у меня появляется новая возможность пополнить бюджет любимой страны (откуда берутся деньги на пенсии старикам, больницы, школы, домики для уточек и вот это вот все). Каждое полученное от спамеров сообщение я аккуратно пересылаю в ФАС, давая ей возможность пополнить бюджет на лишние 100-500 тысяч рублей, а потом наслаждаюсь материалами «расследований», проливающих свет на грязную подноготную «солидного бизнеса» и его подельников. Вранье, подтасовка документов и далее со всеми остановками – наслаждайтесь!
Читать дальше →
Всего голосов 446: ↑445 и ↓1+444
Комментарии187

Туториал по Unreal Engine. Часть 2: Blueprints

Время на прочтение12 мин
Количество просмотров325K
image

Blueprints — это система визуального скриптинга Unreal Engine 4. Она является быстрым способом создания прототипов игр. Вместо построчного написания кода всё можно делать визуально: перетаскивать ноды (узлы), задавать их свойства в интерфейсе и соединять их «провода».

Кроме быстрого прототипирования, Blueprints также упрощают создание скриптов для непрограммистов.

В этой части туториала мы будем использовать Blueprints для следующих операций:

  • Настройка камеры с видом сверху
  • Создание управляемого игроком актора с простыми движениями
  • Настройка ввода игрока
  • Создание элемента, исчезающего при контакте с игроком
Читать дальше →
Всего голосов 22: ↑21 и ↓1+20
Комментарии2

Шахматы на Delphi. Как я изобретал велосипед

Время на прочтение7 мин
Количество просмотров18K

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

Читать далее
Всего голосов 68: ↑65 и ↓3+62
Комментарии52

Программирование — это сложно

Время на прочтение10 мин
Количество просмотров74K


Большинство новичков в программировании рано или поздно сталкивается с такой чарующей фразой: «Программирование — это просто, ему может научиться любой». Эта фраза сопровождается угрожающим сообщением о том, что людям, занимающимся гейткипингом, надо прекратить. Этой статьёй я хочу сказать, что это неправда. Программирование — это сложно, оно не для каждого, и хотя сейчас им может заняться каждый, большинству определённо не стоит писать код.

Программирование легкодоступно


Когда глупые люди говорят, что программировать просто, что им может заниматься каждый, они на самом деле имеют ввиду доступность сферы программирования. Если у вас есть простейшее средство доступа к Интернету, то достаточно легко получить доступ к ресурсам для изучения. Ни одна из наук не доступна настолько, как компьютерная наука, и большинство работ по ней выложено в открытый доступ — компьютерная наука процветает в Интернете, и хотя отдельные её ветви закрыты, большинство контента доступно свободно и процветает благодаря этой доступности. Вы можете скачивать компиляторы, редакторы, IDE, даже получить доступ к документации, обсуждать с другими людьми свои проблемы, и так далее. Это огромное сообщество, уровень гостеприимности и открытости которого несравним с любой другой наукой в истории человечества.
Всего голосов 108: ↑93 и ↓15+78
Комментарии419

Совместная игра в Factorio — лучшее собеседование для программистов, что мы проводили

Время на прочтение11 мин
Количество просмотров79K
В последнее время много копий сломано вокруг технических собеседований. Очевидно, что инвертирование двоичного дерева на доске практически никак не связано с практическими навыками реального программиста. Примитивный Fizzbuzz по-прежнему остаётся самым эффективным тестом. Как следствие, выросло внимание к опенсорсным проектам, но оказалось, что это тоже не очень хороший показатель, потому что у большинства профессионалов нет на них времени.

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

Все эти методы интервью не сравнятся с очень простой метрикой: совместная игра в Factorio. Прохождение всего цикла Factorio — практически идеальный показатель, насколько хорошо человек решает общие технические проблемы. Можно даже настроить прохождение игры на основе будущей должности, чтобы лучше понять, как кандидат справится со своей ролью.
Читать дальше →
Всего голосов 110: ↑106 и ↓4+102
Комментарии144

Как устроены абилки в War Robots

Время на прочтение7 мин
Количество просмотров16K


Привет! Меня зовут Владимир Попов, и я клиентский разработчик на проекте War Robots.

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

О том, как устроена и как эволюционировала система способностей в нашей игре, просто и без особых технических подробностей я расскажу в этой статье.
Читать дальше →
Всего голосов 26: ↑24 и ↓2+22
Комментарии3

Идиомы Pimpl и Fast Pimpl – указатель на реализацию

Время на прочтение5 мин
Количество просмотров49K
Другие названия: Bridge, Compilation Firewall, Handle/Body
Допустим, нам необходимо написать кроссплатформенное сетевое приложение с использованием сокетов. Для этого нам необходим класс GeneralSocket (“Видимый класс”), который будет инкапсулировать в себе детали реализации конкретной платформы (“Скрываемый класс”). Часто требуется скрыть детали реализации от пользователей или других разработчиков:
Читать дальше →
Всего голосов 10: ↑8 и ↓2+6
Комментарии3

Meta Gameplay Framework, или бэкенд без серверных разработчиков

Время на прочтение8 мин
Количество просмотров5.6K


Привет! Меня зовут Кирилл, я руководитель отдела серверной разработки в Pixonic. Здесь я работаю уже более 5 лет. Долгое время Pixonic была компанией одной игры — War Robots. Но однажды к нам пришло осознание, что так больше продолжаться не может, и мы начали работу над созданием новых проектов.

Поначалу мы взялись за это дело по старинке, используя традиционные для нас подходы: писали клиент на Unity 3D, бэкенд разрабатывали на Java. Это было привычно, понятно, но имело ряд серьезных недостатков. Проекты разрабатывались медленнее, чем нам бы хотелось. Для выполнения любой задачи необходимо было задействовать как минимум двух разработчиков. Однако, когда в разработке участвуют два и более человека, неизбежно возникают ошибки в духе: то один не так понял другого, то второй работает быстрее, чем первый. Такие ситуации приводят к тому, что кому-то из разработчиков в дальнейшем приходится возвращаться к задаче, которую он, казалось, уже давно закончил, а ведь у него и других дел полно. Так мы начали думать над тем, как разрешить эту проблему.
Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии5

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

Время на прочтение16 мин
Количество просмотров18K

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

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

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

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

Читать далее
Всего голосов 21: ↑21 и ↓0+21
Комментарии2
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность