Pull to refresh
22
0
Илья Лебедев @lebedec

User

Send message

Топ книг по биохакингу и мозгу

Level of difficultyEasy
Reading time2 min
Views6.5K


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

Смотреть подборку самых классных книг
Total votes 3: ↑3 and ↓0+4
Comments4

Почему я отказался от разработки игр на Rust, часть 1

Level of difficultyMedium
Reading time19 min
Views28K

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

Пост не будет ни научной оценкой, ни A/B-исследованием. Это моё личное мнение после разработки игр на Rust маленькой инди-командой (два человека) в попытках заработать достаточно денег, чтобы финансировать процесс. Мы не одни из тех разработчиков с бесконечными финансами от инвестора и многолетним запасом времени. Если вы находитесь в этой категории и получаете удовольствие от многолетней разработки систем, то всё написанное ниже к вам не относится. Я рассматриваю всё с такой точки зрения: «Мне хочется создать игру максимум за 3-12 месяцев, чтобы люди могли сыграть в неё, а я — немного заработать». Статья не написана с точки зрения «Я хочу изучить Rust, а разработка игр — это весело», хотя это и вполне нормальная цель; просто она никак не согласуется с тем, чего хотим мы — заниматься разработкой игр коммерчески успешным и самодостаточным образом.

Мы выпустили несколько игр на Rust, Godot, Unity и Unreal Engine, и многие люди сыграли в них в Steam. Мы создали с нуля собственный игровой 2D-движок с простым рендерером, а также в течение нескольких лет использовали Bevy и Macroquad во многих проектах, некоторые из которых были очень нетривиальными. Кроме того, я бэкенд-разработчик на полную ставку и пишу код на Rust. Этот пост — не какое-то поверхностное мнение после изучения нескольких туториалов или разработки небольшой игры для геймджема. За три с лишним года мы написали сильно больше ста тысяч строк кода на Rust.

Задача этого поста — развеять популярные и часто повторяемые аргументы. Но это всё-таки субъективное мнение; по большей части я написал пост, чтобы не объяснять снова и снова одно и то же. Пусть это будет справочный материал о том, почему мы, скорее всего, откажемся от Rust как от инструмента для разработки игр. Мы ни в коем случае не планируем прекращать создавать игры, просто не будем делать это на Rust.

Читать далее
Total votes 68: ↑65 and ↓3+81
Comments81

Создаем изометрические уровни игры с помощью Stable Diffusion

Level of difficultyEasy
Reading time5 min
Views21K

Всем привет. Сегодня я покажу вам, как можно создавать 2.5D уровни в изометрии с помощью быстрого прототипирования техникой grayboxing, и генеративного искусственного интеллекта, а именно Stable Diffusion. Практически весь процесс, описываемый в статье, довольно легко автоматизируется.

Если интересно, добро пожаловать под кат.

Читать далее
Total votes 75: ↑75 and ↓0+84
Comments27

Недельный геймдев: #162 — 25 февраля, 2024

Level of difficultyEasy
Reading time6 min
Views1.7K

Из новостей: Balatro продалась тиражом в 250к копий за первые три дня, Valve в опенсорс выложила Audio SDK, Suicide Squad не оправдала ожиданий Warner Bros, вышел Bevy 0.13.

Из интересностей: отличнейшая статья про генерацию карты игры, как в играх появляются рычаги, основы 2D‑движения в Unity, не работайте с CREON GAMES и особенно с Климом Мироновым.

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

Когда одной работы мало: жизнь в режиме сверхзанятости

Reading time5 min
Views12K

В конце января в нашего бота обратной связи обратился айтишник с необычной ситуацией. Он был «сверхзанят» на трёх аутстафф-работах: на основной по трудовому договору и ещё на двух через ИП. В какой-то момент основной работодатель узнал о других работах сотрудника и потребовал уволиться по собственному желанию. Мы предложили действовать по нашему стандартному сценарию для таких случаев и перевести трудовой конфликт в юридическую плоскость, отправив письмо генеральному директору. Это подействовало на работодателя, и работнику удалось договориться о выплате выходного пособия в размере зарплаты за 1 месяц. Принуждение к увольнению по собственному желанию — самый распространённый случай нарушения трудовых прав, с которым мы сталкиваемся. Но сегодня хотим рассказать о проблемах, с которыми сталкиваются сверхзанятые. Для этого мы пообщались с двумя IT-специалистами, Андреем и Артёмом.

Читать далее
Total votes 30: ↑26 and ↓4+28
Comments15

Как работает сеть в контейнерах: Docker Bridge с нуля

Level of difficultyMedium
Reading time21 min
Views39K

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

* Как виртуализировать сетевые ресурсы, чтобы контейнеры думали, что у них есть отдельные сетевые среды?

* Как превратить контейнеры в дружелюбных соседей и научить общаться друг с другом?

* Как выйти во внешний мир (например, в Интернет) изнутри контейнера?

* Как связаться с контейнерами, работающими на хосте Linux, из внешнего мира?

* Как реализовать публикацию портов, подобную Docker?

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

Передавать пустые срезы между Rust и C/C++ на удивление сложно

Level of difficultyMedium
Reading time11 min
Views8.6K

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

В общих чертах она выглядит так:

  • В правила работы с указателями и memcpy в С не заложены грамотные способы представления пустого среза памяти.
  • В С++ с правилами указателей проблем нет, но поведение memcpy здесь аналогично её поведению в С.
  • Интерфейс внешних функций (Foreign Function Interface, FFI) в Rust не лишён накладных издержек. Rust использует несовместимое с C/C++ представление срезов, требуя их преобразования при передаче в обоих направлениях. При этом о преобразовании очень легко забыть.
  • Срезы в Rust также несовместимы с арифметикой указателей, что создаёт проблемы в работе итератора срезов стандартной библиотеки. (Обновление от 2024-01-16: похоже, над этой проблемой работают).

Поскольку проблемы FFI касаются нескольких языков, я писал статью в качестве общей справки, описывающей их несогласованность.
Читать дальше →
Total votes 42: ↑37 and ↓5+54
Comments53

Проверка работодателя: как минимизировать риски при трудоустройстве

Level of difficultyEasy
Reading time8 min
Views19K

Вы IT-специалист и решили сменить место работы. Что обычно делают в таких случаях айтишники? Ходят по собеседованиям, работают над ошибками в случае отказов — и всё по новой до тех пор, пока не будет получен подходящий оффер. Многие ли из айтишников оценивают надёжность будущего работодателя во время поисков? При планировании профсоюзных кампаний мы проводим исследование работодателей с использованием множества источников и методик. Эта статья была написана с целью помочь специалистам любого уровня, от интернов до архитекторов, ведь никто не застрахован от проблем на работе. Мы поделимся опытом и надеемся, что он поможет вам не нарваться на недобросовестного работодателя.

Читать далее
Total votes 55: ↑54 and ↓1+65
Comments10

«Галоп пикселя — часть шестая» — Анимация персонажей. Бег

Level of difficultyMedium
Reading time48 min
Views9.6K


«Галоп пикселя», часть I — базовые понятия, этапы взросления, прикладные упражнения (линк)
«Галоп пикселя», часть II — перспектива, цвет, анатомия и прикладные упражнения (линк)
«Галоп пикселя», часть III — Анимация (линк)
«Галоп пикселя», часть IV — Анимация света и тени (линк)
«Галоп пикселя», часть V — Анимация персонажей. Ходьба (линк)
«Галоп пикселя», часть VI — Анимация персонажей. Бег (линк)

Доброго времени суток, Хабр. Мы продолжаем цикл «Галоп Пикселя». И хотя паузы между главами этой саги достигли практически четырехлетнего перерыва — я рад (надеюсь и вы тоже) продолжить двигаться вперёд. Миля за милей, дорога за дорогой, в этой вечной былине о пиксель-арте. Пространном повествовании о пикселях, их жизни, способе их создания, приёмах и уловках в работе с ними.

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

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


Лопатить пиксели
Total votes 92: ↑92 and ↓0+92
Comments37

Какого специалиста искать для озвучания игры? Звуковая команда: структура и обязанности

Reading time12 min
Views1K

Приветствую всех, кто интересуется разработкой игр!

Начиная с момента, когда я впервые попал в мир геймдева в 2008 году, я увидел, как игровой саунд-дизайн совершенствуется и становится важной частью игр. 

Мой путь в области игрового аудио начинался с работы техническим саунд-дизайнером в компании, которая специализировалась на разработке игр и CG видеороликов. Позже я много времени провел, работая в качестве саунд- дизайнера, создавая звуковые ресурсы. Затем, профессиональная карьера привела меня в компанию Playrix, где я занимал должность саунд-продюсера, а позже, исполнительного саунд-продюсера, руководя разработкой аудио для лучших продуктов компании. После этого я работал в компании G5 Entertainment, где занимал должность директора звукового отдела. В настоящее время я руковожу студией по разработке звукового дизайна для игр.

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

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

Читать далее
Total votes 4: ↑3 and ↓1+5
Comments2

Собственный строковый тип на Rust

Level of difficultyMedium
Reading time14 min
Views6.9K

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

pub enum Expr<'src> {
  Int(u32)
  Ident(&'src str),
  // ...
}

Когда мы парсим идентификатор, то вместо копирования его названия в новую String мы заимствуем его из входной исходной строки. Это позволяет избежать дополнительных распределений, дополнительного копирования и экономит слово на представлении данных. Компиляторы могут быть очень требовательны к памяти, поэтому стоит выбирать краткое представление.
Читать дальше →
Total votes 48: ↑47 and ↓1+63
Comments6

Теория типов

Level of difficultyMedium
Reading time43 min
Views31K

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

Что можно узнать из этой статьи?
Total votes 75: ↑75 and ↓0+75
Comments70

Единственное в мире число-субфакторион — это 148349. Что это такое?

Level of difficultyEasy
Reading time2 min
Views206K

С понятием факториала знакомы все, но в математике есть еще и субфакториал. Разобравшись с ним, мы подойдем к уникальному в своём роде числу 148 349

Читать далее
Total votes 102: ↑97 and ↓5+119
Comments94

Фреймворк vtb_scorekit для разработки интерпретируемых скоринговых моделей

Level of difficultyMedium
Reading time14 min
Views2.6K

Всем привет! Меня зовут Сакович Руслан, я занимаюсь корпоративным риск-моделированием, и сегодня расскажу о построении скоринговых моделей. Эти модели позволяют оценивать кредитные риски и являются крайне важными в деятельности банка. К ним предъявляются высокие требования в плане точности, стабильности и интерпретируемости результатов, поэтому мы в основном не можем использовать методы «черные ящики» (как например бустинги или нейросети), и обычно вынуждены пользоваться логистической регрессией. Сам по себе метод логистической регрессии довольно простой с точки зрения математики, однако для построения хорошей модели он требует тщательной предварительной обработки и энкодинга исходных данных, а также последующего довольно трудоемкого отбора переменных в модель. Причем стандартные библиотеки вообще не предоставляют возможности построения хоть какой-нибудь адекватной модели прямо из коробки. Мы решили стандартизировать весь процесс разработки скоринговых моделей, собрали используемые нами алгоритмы и объединили в библиотеку vtb_scorekit.

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

Создание модов для Age of Empires II с помощью нейросети

Level of difficultyEasy
Reading time4 min
Views4.8K

В прошлом месяце я занялся придумыванием способа создания собственных спрайтов цивилизаций для наших с друзьями игр в Age of Empires II.

В этой статье рассказывается о процессе создания гибкого генератора изображений на основе промтов. Для начинающих я посоветую Alpaca, а тем, кто умеет кодить — Stable Diffusion Web UI и Python.

Выражаю особую благодарность сообществам моддеров AoEII OpenAgeSLX Studio и Age of Kings Heaven.

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

Технический геймдизайн. Конфиги, баланс и контент на примере PC стратегии

Level of difficultyMedium
Reading time13 min
Views9.1K

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

Читать далее
Total votes 12: ↑11 and ↓1+13
Comments17

Ветер над городом и поквартирная вентиляция через фасад

Reading time11 min
Views4.6K

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

Теперь попытаемся обобщить технические решения по вентиляции, которые пригодные для отдельных квартир. Обобщение сделаем для «отдельных помещений» в составе «больших зданий».

К категории «отдельных помещений» можно причислить что угодно: от  квартир и офисов  до производственных мастерских и торговых помещений.

Ну, а к категории «больших зданий» можно причислить тоже обширный ряд сооружений: от плоских и длинно-широких одно-двух этажных Торговых центров (ТЦ)  до высотных зданий офисных центров с квартирами и апартаментами на верхних этажах (далее БЦ).

К категории ТЦ также можно причислить широкий ряд малоэтажных протяжённых сооружений технического назначения: заводские корпуса, склады, гаражи и т.д.

Для всех перечисленных типов зданий от ТЦ до БЦ свойственно одно общее свойство, а именно:

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

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

Читать далее
Total votes 17: ↑15 and ↓2+14
Comments15

Как организовать самостоятельные дальние походы без гида. Личный опыт

Reading time14 min
Views18K

Статья о том, как мы с мужем несколько лет назад придумали себе новое хобби на двоих – пеший туризм – и с тех пор влюбились в него. Здесь делимся ТОП-3 своих маршрутов, советами по снаряжению и его стоимости, нашим опытом путешествий с палаткой, а также про внутреннюю трансформацию и полную перезагрузку мозга во время дальних походов. Надеемся, что наши советы помогут организовать вам свой собственный поход, избежать хотя бы некоторых ошибок и получить от этого времяпрепровождения огромное удовольствие.

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

Читать далее
Total votes 46: ↑41 and ↓5+47
Comments70

Как разработчику защитить права на компьютерную игру?

Reading time8 min
Views4.5K

Компьютерные игры популярны, индустрия уверенно развивается. Разработчики не хотят терять то, что создано с огромными усилиями и приносит доход. Компании разрабатывают инновации, чтобы стимулировать пользователей к использованию IT-продукта. Нередко компьютерные игры крадут, копируют или просто используют без разрешения правообладателя. Права на разработку необходимо защищать. Пока единого закона для защиты компьютерных игр нет, но в целом существующие нормы позволяют регулировать отношения в этой сфере. 

Как защитить права на компьютерную игру, расскажем в статье.

Читать далее
Total votes 3: ↑1 and ↓2-1
Comments0

Гайд по написанию пользовательских историй и критериев приёмки

Level of difficultyEasy
Reading time6 min
Views25K

Всем привет! Меня зовут Валентина Ляликова. Я ведущий бизнес-аналитик в X5 Tech и преподаватель направления «Пользовательские истории и критерии приёмки» в Школе бизнес-анализа X5 Tech. 

Большой опыт работы на разнообразных проектах помог сформировать мне список правил, которых я придерживаюсь каждый день при написании User Story и Acceptance Criteria (US+AC). В этой статье хочу поделиться ими с вами и показать на примерах ошибочных вариантов написания документа US+AC, почему так важно применять эти правила в работе.

Читать далее
Total votes 13: ↑10 and ↓3+9
Comments2

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity

Specialization

Backend Developer, Game Developer
Rust
Python
TDD/BDD
Unity3d
C#
TypeScript
Web
OpenAPi specification