Pull to refresh
4
0.1
Send message

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

Level of difficultyMedium
Reading time19 min
Views27K

Предисловие: этот пост представляет собой очень длинный перечень мыслей и проблем, возникавших у меня за годы работы; также в нём рассматриваются некоторые из аргументов, которые мне часто говорили. В посте выражено моё мнение, сформировавшееся у меня в процессе разработки игр на 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

Бэкдор в основной версии xz/liblzma, ведущий к компрометации SSH-сервера

Level of difficultyMedium
Reading time9 min
Views6.7K

В последние недели я, работая в системах с установленным дистрибутивом Debian Sid, столкнулся с несколькими странностями, связанными с liblzma (это — часть пакета xz). При входе в систему с использованием SSH очень сильно нагружался процессор, Valgrind выдавал ошибки. И вот я, наконец, нашёл причину всего этого: в основной репозиторий xz и в tar‑архивы xz был встроен бэкдор.

Сначала я подумал, что это — взлом Debian‑пакета, но оказалось, что речь идёт именно о библиотеке.

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

Кто убивает мое производство одежды?

Level of difficultyEasy
Reading time8 min
Views26K

11 лет мое производство шьет спецодежду для врачей и стюардесс, жилеты для неотапливаемых складов Вайлдберриз, и другую униформу. 10 человек на 150 кв.м в Подмосковье отшивают одежды на 1,5 млн в месяц. Сегодня мы переживаем не самые лучшие времена, как и вся отрасль, и вот почему.

В статье расскажу, как я не понял языка откатов, чем страшен женский алкоголизм, сколько можно заработать, когда одеваешь завод, и какие проблемы вас ждут на швейном производстве, если вы не Коко Шанель.

Читать далее
Total votes 80: ↑61 and ↓19+61
Comments153

Разбирая бэклог. Часть 7. Diablo. 5+7 2D и 3D альтернатив или куда меня завело изыскание аналогов известной ARPG серии

Level of difficultyEasy
Reading time17 min
Views2.4K

Однажды вдоволь наигравшись в данную серию игр и первую "Diablo" (1996) в отдельности, я стал интересоваться на предмет, а на что ещё можно обратить внимание со схожими параметрами? Поиск был ограничен следующими критериями:

*. RPG / ARPG. Либо другой жанр, например Action / Shooter, или rogue-like, но с явно выраженными схожими элементами.

*. Год выпуска не имеет значения.

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

2. Умеренная продолжительность, без жёсткого, затяжного захода на 100+ часов.

3. Низкий порог вхождения, отсутствие сложных механик.

4. Атмосфера.

Читать далее
Total votes 8: ↑6 and ↓2+8
Comments10

Алгоритм деления 2W-разрядных чисел с использованием операций с числами разрядностью W

Level of difficultyMedium
Reading time9 min
Views1.9K

На примере 32-битных целых чисел рассматривается масштабируемый алгоритм деления, использующий числа с двукратно меньшей (16 бит) разрядностью. Для иллюстрации работоспособности алгоритма приведен код тестового приложения на языке С++.

Читать далее
Total votes 12: ↑10 and ↓2+17
Comments4

Кто реально угрожает C++ (нет, Rust, не ты)

Reading time14 min
Views74K

Привет! Меня зовут Александр Каленюк, и я крепко подсел на C++. Пишу на C++ 18 лет кряду, и все эти годы отчаянно пытаюсь избавиться от этой разрушительной зависимости.

Всё началось в конце 2005 года, когда мне довелось писать движок для симуляции 3D-пространства. В этом движке было буквально всё, чем язык C++ мог похвастаться в 2005 году. Трёхзвёздочные указатели, восьмиуровневые зависимости, C-подобные макросы повсюду. Кое-где – вкрапления ассемблера. Итераторы в стиле Степанова и мета-код в стиле Александреску. В общем, всё. Кроме ответа на самый важный вопрос: зачем?

Читать далее
Total votes 220: ↑208 and ↓12+244
Comments361

Как популярность DOS/4GW помогла играм в Windows 95

Level of difficultyEasy
Reading time3 min
Views7.4K

В начале 1990-х самым популярным расширителем DOS был DOS/4GW. Во время разработки Windows 95 я очень много времени тратил на решение задачи совместимости с играми под MS-DOS, поэтому видел много баннеров расширителей DOS, и чаще всего это был DOS/4GW.

Вы можете задаться вопросом: «Как эти игры вообще запускались в Windows 95, если они поставлялись с расширителем DOS? Разве расширитель не пытался бы безуспешно перейти в защищённый режим, потому что Windows уже управляла защищённым режимом?»

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

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

Месяц назад поставил Linux как основную ОС. Какие проблемы возникли? Рассказываю

Level of difficultyEasy
Reading time3 min
Views79K

Через 1,5 года заканчивается поддержка Windows 10, а 11-я мне не подходит, ибо нельзя вертикально поставить панель задач (см. cнимок экрана, как у меня всё организовано). Поэтому решил попробовать переехать на Linux. Я не использую каких-то хитрых виндовых программ, под “Линуксом” всё оно точно есть: Firefox, Thunderbird, Telegram, Skype, LibreOffice для локальных документов, Гуглодоки для остальных, калькулятор, простенький редактор изображений, OneDrive и Яндекс.Диск; пожалуй, и всё.

Для себя выбрал окружение KDE, как наиболее похожее на “Винду”. Как раз вышло большое обновление - 6.0. Выбрал Fedora в качестве дистрибутива, ибо она внутри одной версии обновляется до более свежего ПО (КДЕ, ядро и пр.), что мне более по душе. Например Kubuntu 23.10 сидит на старой версии КДЕ 5.27.8, хотя давно вышло обновление 5.27.11; и даже только что вышедшая версия “кубунты” 24.04 не получила КДЕ 6.х.

Сначала поставил на старый ноутбук “Федору” 39 с КДЕ 5.27, использовал как кроватный бук для интернетанья. Хотя ноутбук старый и заметно тормозит (даже 1080 видео не тянет), но ради науки я честно страдал. :) Начал изучать как и что устроено, как настроить этот красноглазый “Линукс” и какие могут быть проблемы. На поверку оказалось, что всё настраивается просто и даже без правок в коде и компиляции чего-либо. :)

Как вышла бета “Федоры” 40, сразу обновился, а там уже есть КДЕ 6.0. И на медленном буке КДЕ 6.0 действительно работает пошустрее.

Несколько месяцев попользовался таким образом, понял, что в общем и целом, жить на “Линуксе” можно, хотя и есть неприятные косяки. Решился поставить на отдельный винт на свой настольный компьютер с двумя мониторами и использовать в боевом режиме. И тоже ничего страшного не случилось, вполне можно пользоваться. Если бы не пару косяков описанных ниже, от работы в “Винде” можно и не отличить.

Читать далее
Total votes 80: ↑55 and ↓25+45
Comments626

В 10-17 раз быстрее, чем что? Анализ производительности Intel x86-simd-sort (AVX-512)

Level of difficultyMedium
Reading time18 min
Views5.8K

В статье приведён анализ производительности недавно ставшей популярной [1] реализации сортировки Intel AVX-512.

Intel опубликовала невероятно быструю библиотеку сортировки для AVX-512, Numpy переходит на неё, чтобы ускорить сортировку в 10-17 раз

В этом анализе мы рассмотрим производительность x86-simd-sort компании Intel и сравним её с другими обобщёнными реализациями сортировки, например, с std::sort из стандартной библиотеки C++ и vqsort — ещё одной высокопроизводительной реализацией сортировки с ручной векторизацией. Сведение сложных характеристик производительности к единому числу может быть сложной задачей, а получаемые прогнозы могут быть неточными. В своём анализе я хочу шире взглянуть на это значение «10-17 раз» и понять, как оно соотносится с другими высокопроизводительными реализациями.

TL;DR: бенчмаркинг — это сложно. Если вы пользуетесь x86-simd-sort, то можете повысить общую производительность и избежать катастрофического масштабирования при определённых паттернах входных данных с помощью vqsort + Clang. Кроме того, в анализе показано, что аппаратно-зависимая ручная векторизация с широкими AVX-512 SIMD — не единственный способ писать эффективное ПО. Несмотря на свою обобщённость, ipnsort демонстрирует сравнимую с x86-simd-sort производительность, оптимизированную не только под пиковую производительность, используя команды только до уровня SSE2.

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

Как я разогнал fail2ban* в тысячу раз с помощью SIMD

Reading time15 min
Views20K

Fail2ban — утилита чрезвычайно полезная во многих случаях. Думаю, многие используют её для того, чтобы в автоматическом режиме блокировать особенно назойливых «посетителей». К сожалению, если входящий поток становится слишком большим, fail2ban теряет все свои полезные свойства, потому что разбор лога безнадёжно отстаёт от реальности.

Лог nginx из 100 тысяч строчек fail2ban при самых простых настройках разбирает порядка 45 секунд. Нехитрыми манипуляциями его можно ускорить раз в 6, но этого оказалось недостаточно. Наивная реализация на аналогичного фильтра на Rust уже обеспечила требуемую производительность, но если уж взялся за оптимизацию, то остановиться трудно.

* только необходимую часть функционала

Читать далее
Total votes 97: ↑95 and ↓2+117
Comments76

Сортировка массивов фиксированной длины с применением SIMD

Reading time4 min
Views4.4K

Простая сортировка массива очень простая задача, в то время как эффективная сортировка очень сложная, во многом из-за простоты задачи.

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

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

Pet-проект на Rust нуждается в конструктивной критике

Level of difficultyMedium
Reading time1 min
Views5.5K

Примерно 8 месяцев назад я написал на Rust pet-проект, который пытается быть подобием Hibernate в экосистеме Java. Я даже опубликовал его в качестве Open Source, но получил негативный отзыв и удалил его с GitHub.

Сейчас я решил вернуться к этому проекту, но подойти к нему с другой стороны. Я бы хотел услышать идеи по проекту от опытных разработчиков на Rust. Что в моем проекте сделано не в идиоматическом стиле Rust и т.д. и т.п. В общем, хочется получить чек-лист того, что в проекте не так и как это исправить.

Читать далее
Total votes 24: ↑10 and ↓14+4
Comments15

Их Айти VS наш Айти: чем отличается разработка в Европе и в РФ

Level of difficultyEasy
Reading time5 min
Views53K

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

Различий между российскими и европейскими программистами не так много. И те, и другие работают в Jira, используют одни и те же инструменты и подчас даже читают одни и те же книги. Однако нюансы есть.

Читать далее
Total votes 52: ↑41 and ↓11+36
Comments291

RISC-V шагает по планете: в Китае появилась еще одна компания по производству чипов. Что о ней известно?

Reading time4 min
Views3.5K

В том, что в КНР начнет работу новая компания, разрабатывающая RISC-V процессоры, вроде бы нет ничего удивительного. В стране очень мощная отрасль производства электроники, в ней работают тысячи и тысячи компаний. Но глава этого "новичка" - экс-руководитель "дочки" ARM в Китае Аллен Ву (Allen Wu). У него огромный опыт, и, вероятно, он сможет быстро развернуть производство. Подробности - под катом.

Читать далее
Total votes 12: ↑6 and ↓6+9
Comments0

«Где угодно работать, только не в локальных конторах» — у меня есть что сказать

Reading time9 min
Views102K
image

23 года я работал в американских компаниях SAS и C3 AI. Это, если что, очень дорогой интеллектуальный анализ данных корпораций и производств. Причём SAS много лет занимал места с 1-го по 3-е в мире как лучший работодатель, поэтому некоторая избалованность присутствует. Последние полтора года до ухода C3 AI из России я работал в подразделении EMEA с непосредственным руководителем в Париже.

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

Я пошёл в отечественную компанию. И не просто в отечественную компанию, а в ОМК, то есть на группу заводов (а на заводах, «ну это же общеизвестно», всегда стоит большая очередь кандидатов за забором, и где типа айтишников не ценят, всё вокруг в солидоле и мазуте, и вообще).

Ладно, про лужи смазки — для некоторых цехов это отчасти правда: утечки бывают.

По остальному мне есть что сказать. Сразу поясню: меня никто не заставлял писать этот пост, никакие эйчары не приходили и не просили. Просто достали те, кто ноет. Хорош ныть!
Читать дальше →
Total votes 277: ↑228 and ↓49+227
Comments246

«Ситилинк» и «Мерлион»: о чем стоит знать перед трудоустройством

Reading time4 min
Views26K

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

Читать далее
Total votes 111: ↑101 and ↓10+119
Comments140

Как физик-ядерщик делает алюминиевые палки и продает на 20 млн ₽ в год

Level of difficultyEasy
Reading time8 min
Views135K

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

Читать далее
Total votes 133: ↑108 and ↓25+114
Comments226

Дуров рассказал как сесть между двумя стульями, а исторический халвинг Биткоина дал неожиданный результат

Reading time6 min
Views23K

Почти все самые важные и интересные финансовые новости в России и мире за неделю: прекращение льготных ипотек в РФ, Дональд Трамп готовится к стрижке биржевых хомяков, Китай банит WhatsApp и Telegram, Атлант расправил электрические культяпки, нейросети дают ответы на самые важные вопросы (про енотов), а крипто-кузен Ави всё-таки сядет в тюрьму.

Читать далее
Total votes 44: ↑24 and ↓20+12
Comments7

Я скучаю по механикам из старых игр

Reading time13 min
Views73K

За время существования индустрии разработки игр формул разных механик, способных развлечь нас, придумали не одну сотню. Что-то умерло засветившись в паре игр, что-то ушло со временем, какие-то существуют до сих пор. Есть и такие, которые не просто выжили, но стали мейнстримом, хотя только портят нервы игрокам. Игровой дизайн большинства старых игр, от второго фолыча до первого FarCry и пятью активными перками, пусть и не был вершиной искусства - затягивал не хуже современных песочниц с миллионом активностей. Редкую игру захочется пройти второй раз, а как вспомню, что на прохождение можно потратить под сотню и больше часов - думаю, а оно мне действительно было надо? Можно же было заняться чем-то более интересным. Я знаю, чем закончился второй фолыч, знаю это уже четвертый раз, но каждый раз игра удивляет меня чем-то новым. А вот нового "Аватара" бросил на половине, слишком много всего и все недоделанное, и прозрачные стены... просто бич игры. И тут вопрос, чего-то не хватает в этой раздутой, перекачанной сотней механик игре? Только задумайтесь - в аватаре больше сотни основных механик, которые влияют на окружение. Может в играх что-то потерялось? Хотя "потерялось" - звучит странно - за столько лет индустрия только создала просто море всего нового. Статья ориентирована на "побурчать", так что не ждите каких-то великих секретов и тонкостей мастерства.

Раньше и флешки квадратнее были...
Total votes 135: ↑130 and ↓5+150
Comments457

Тайное знание: синхронизация, многопоточность, очереди

Level of difficultyHard
Reading time16 min
Views9.6K

Может ли быть так, что в большинстве популярных языков отсутствует самый эффективный механизм синхронизации? Что инженеры Microsoft, Oracle и мн. др., не говоря уже об остальных, вплоть до 2024 года так и не догадались, как же эффективнее всего синхронизировать доступ к данным? А все что знает абсолютное большинство программистов, в том числе топовых IT компаний (за исключением редких разработчиков платформ Apple) о синхронизации — ошибочно? Сегодня попробуем разобраться.

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

Читать далее
Total votes 19: ↑8 and ↓11-1
Comments73

Information

Rating
3,111-th
Location
Россия
Registered
Activity