惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Recent Announcements
Recent Announcements
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Application and Cybersecurity Blog
Application and Cybersecurity Blog
N
News | PayPal Newsroom
P
Proofpoint News Feed
L
Lohrmann on Cybersecurity
S
Security @ Cisco Blogs
K
Kaspersky official blog
A
Arctic Wolf
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Project Zero
Project Zero
L
LINUX DO - 最新话题
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
The Last Watchdog
The Last Watchdog
T
The Exploit Database - CXSecurity.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Security Archives - TechRepublic
Security Archives - TechRepublic
V
V2EX
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
H
Hackread – Cybersecurity News, Data Breaches, AI and More
爱范儿
爱范儿
F
Full Disclosure
I
Intezer
Schneier on Security
Schneier on Security
AWS News Blog
AWS News Blog
C
Cybersecurity and Infrastructure Security Agency CISA
博客园 - 聂微东
M
MIT News - Artificial intelligence
P
Privacy & Cybersecurity Law Blog
Attack and Defense Labs
Attack and Defense Labs
量子位
Google DeepMind News
Google DeepMind News
T
Threat Research - Cisco Blogs
Last Week in AI
Last Week in AI
Google Online Security Blog
Google Online Security Blog
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
Microsoft Security Blog
Microsoft Security Blog
Scott Helme
Scott Helme
C
Check Point Blog
N
Netflix TechBlog - Medium
博客园 - Franky
SecWiki News
SecWiki News
Know Your Adversary
Know Your Adversary
Engineering at Meta
Engineering at Meta
F
Fortinet All Blogs
Blog — PlanetScale
Blog — PlanetScale
S
Securelist

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Как не перепутать мечту, портфолио и вторую работу
Sergei Kushnirenko · 2026-05-08 · via Все публикации подряд на Хабре

Как не перепутать мечту, портфолио и вторую работу

Простой

8 мин

15K

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

Часто бывает что маленький проект, который был на «пару вечеров» внезапно превращается в несколько лет жизни. Я много раз видел это снаружи и изнутри: СorsixTH, 0AD, Akhenaten, Cytopia, StoneKingdoms, (тут больше open‑source‑games) очень разные проекты (из тех куда я комитил), но все они хорошо показывают одну и ту же вещь, что пет‑проект почти никогда не остаётся «просто маленькой штукой». Он либо умирает, либо начинает требовать от автора взрослого отношения и тянет за собой архитектуру, поддержку, документациу, общение с коллегами по цеху и теми кто просто играет, разбора багов, релизов и неприятных компромиссов.

И главный вопрос тут не «как найти мотивацию», а точно ли тебе это нужно?


С играми и тулами есть правило, которое может спасти не один день жизни: если можно не делать, то лучше не делать. Может это и звучит демотивирующе, но зато честно. Пет‑проект в геймдеве редко заканчивается на первом прототипе и даже маленькая библиотека тянет за собой тестирование на разных компиляторах, примеры, README, issue tracker, ожидания пользователей. А если это движок, редактор или реконструкция старой игры, масштаб быстро становится «промышленным» что‑ли.

Akhenaten (Pharaoh 1999©) для меня как раз из таких историй. И если на поверхности или в дискорде это может выглядеть как «ну, возьмем старую игру и восстановим/переосмыслим её поведение», то в реальности сталкиваешься даже не столько со старым кодом. Код можно написать и поменять, а вот понять старую логику, воспроизвести ощущения и при этом не сломать привычки игроков, разобраться с данными, UI, симуляцией, поиском пути и его багами это ой как не просто. Я уже не говорю про сохранения и тысячу тысяч мелких правил, которые нигде нормально не описаны, и в итоге любая «простая» механика оказывается клубком зависимостей, половину из которых ты помнишь не так, как другие люди. Вот такие были старые игры.

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

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

Насчет маленького инструмента: imspinner начался после того, как мне заказали несколько нестандартных анимашек загрузки на плюсах, ну вот была у человека такая хотелка. Это не была попытка построить игровой фреймворк или даже фреймворк вообще, это просто маленькая, понятная, встраиваемая вещь для Dear ImGui в виде набора индикаторов загрузки. У неё маленькая граница ответственности и её можно понять, использовать, доработать и не тащить за собой половину мира.

Пет‑проект и обучение это не одно и то же

Пет‑проекты часто оправдывают обучением вроде «я напишу свой движок, чтобы разобраться». Это не работает. Именно написать движок — не работает. Из порядка тысячи моих игровых контактов игровой движок до состояния «можно показать и потыкать» написали всего два человека (https://www.linkedin.com/in/zenkovich/ и https://github.com/o2-engine/o2) и (https://www.linkedin.com/in/tinaynox/ c Melted Kingdoms, добавьте в вишлист, Дима мне обещал поставить пару баночек пива за рекламу).

Два человека из более чем тысячи, меньше одной десятой процента, и это обычная зависимость начатых и завершенных «до рабочей фазы» пет‑проектов. Тут проблема не в том, чтобы разобраться, а в том, что если вы пишете игру целиком, то неизбежно будете больше времени проводить в тех областях, где уже чувствуете себя уверенно. Программист будет полировать архитектуру и код, художник пойдет в визуал, ГД упорется в механики, а слабые места так и останутся на «потом»: инструменты, ui, сборки, тесты, контентный пайплайн, документация и так далее

На open‑source поле это очень хорошо видно, таже Cytopia как city‑builder загнулась, потому из проекта выдавили пару сильных прогеров (не меня, я там лишь краешком помогал, но всю эту дичь в чатах читать тоже пришлось), а потом и автора проекта, а новые так и не пришли. И техническая часть провисла, утянув всю разработку на дно. Недостаточно написать код, нужно, чтобы другой человек смог собрать проект хотя бы в десять шагов по мало мальски читаемой документации, а еще лучше чтобы мог понять структуру, предложить изменение и не сломать при этом чужую работу. А сломав не потерять интерес к проекту после первых ревью.

StoneKingdoms/Augustus/Akhenaten/OpenTTD/OpenAge показывают другую сторону разработки. Когда работаешь с наследием старых игр, то обучение очень часто идёт, скажем так не по современным стандартам и приходится изучать древние форматы, поведение, инструменты, ограничения оригинала и ожидания сообщества. Это мало похоже на «курс по разработке игр, напишем крайзис за десять дней», скорее на кодо‑археологию пополам с костыле‑инженерией и тренировкой интуиции.

Чтобы поучиться, если хочется именно поучиться вместо большого пет‑проекта полезнее взять маленькую тему и изучить её отдельно: сериализация, ECS, UI layout, навигация, hot reload, локализация, профилирование. Но у маленьких упражнений есть минус, что они редко дают ощущение завершенного проекта и «выброс гормонов радости», которые появляются в живом проекте.

Не каждый проект должен становиться большим

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

Маленькие библиотеки хороши тем, что заставляют думать о границах. Что проект делает? Чего он принципиально не делает? Как его подключить? Можно ли использовать только часть? Насколько он зависит от чужого стека?

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

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

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

Много времени уходит не на идею проекта или игры, а на инфраструктуру вокруг языка: сборки, ABI, шаблоны, зависимости, платформенные различия, reflection, биндинги, кодогенерацию и отладку странных ошибок. Если проекту нужны свойства, события, сериализация, редакторские инспекторы или скриптинг, вы быстро начинаете строить поверх C++ свой маленький язык.

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

При этом маленькие C++ библиотеки всё ещё могут быть отличным форматом, тот же imspinner хорошо зашел сообществу потому, что не пытается закрыть весь UI или претендовать на экосистему Dear ImGui, а просто дополняет её чем то полезным и решает понятную задачу.

Open‑source добавляет ещё одну игру поверх игры

Когда проект открыт, вы получаете не только код, но и людей. А еще Issues, pull requests, ожидания, вопросы, форки, случайных людей, которые приходят раз год и спрашивают, почему что‑то не собирается, и обижаются если не отвечаешь. Часто пара хороших issue или пулреквест возвращает мотивацию лучше любой внутренней дисциплины.

Но open‑source легко превращается в неоплачиваемую поддержку, особенно если проект выглядит «почти готовым», а у пользователей уже есть ожидания как от продукта. open‑source геймдев это не просто «пишем игру вместе», а вторая работа. И там тоже приходится принимать решения, ставить задачи, переписывать системы и объяснить новичкам, где маленькая задача, а в какую архитектурную трясину пока лучше не лезть.

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

Не обязательно делать игру, если можно сделать инструмент для игр. Не обязательно делать движок, если можно сделать библиотеку. Не обязательно... там еще очень много почему НЕ...

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

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

З.Ы. Если кому интересно древнеегипетское градостроение, то я завел девблог, куда добавляю изменения в игре и просто интересные статьи.