
За 50 лет своего существования индустрия видеоигр стала самым высокодоходным сегментом медиа и развлекательного пространства. По прогнозам PwC, в 2026-2027 году продажи видеоигр могут превысить 300 млрд долл.
Разработка игр
За 50 лет своего существования индустрия видеоигр стала самым высокодоходным сегментом медиа и развлекательного пространства. По прогнозам PwC, в 2026-2027 году продажи видеоигр могут превысить 300 млрд долл.
Полное название этой книги «Археолог цифрового века — Том 1. 1966–1979», тем не менее по формату она скорее напоминает томик, ведь читателю предстоит осилить чуть менее двухсот страниц. Однако пусть это вас не разочаровывает: статей у Джимми Мехера наберется аж на девятнадцать таких частей. Пока материалы не оформились в отдельные книги и не обзавелись обложкой с указанием хронологического диапазона, на них можно взглянуть на его сайте. Благодаря поддержке подписчиков блога и донатам автор надеется выпустить столько томов, сколько понадобится, чтобы пересказать всю хронику интерактивных развлечений, цифровой культуры и других смежных вопросов, а пока что мы можем насладиться стартом серии в переводе талантливого Михаила Молчанова.
В этой статье я хочу поделиться своим опытом создания визуальных новелл за ограниченное время, а также полезными ресурсами. Что у нас имеется: соло-разработчик, 48 часа, движок ren’py и сомнительные знания питона. Что вы узнаете: как это было, полезные плагины для ren’py, полезные ресурсы, как распределять время и другое.
Иногда надо создать функцию, которая должна быть и доступна в blueprints, и адаптироваться под входные данные. Особенно это касается wildcard.
Можно прибегнуть к ручной прописке рефлексии UFUNCTION. Однако, у этого есть свои ограничения. Для таких случаев в движке есть довольно старый класс – UK2Node
.
В финальной части нашей трилогии, посвящённой Nau Engine, мы уделим внимание ошибкам, возникающим при разработке классов. Приведённые в статье примеры наглядно демонстрируют, как даже небольшие недоработки могут обернуться серьёзными проблемами в работе приложения.
Ursina — это не просто фреймворк, а настоящий конструктор мечты для разработчиков. Представь: ты пишешь код на Python, а через пару часов уже управляешь 3D-персонажем в собственной игре. Звучит как магия? С Ursina это реальность. Давай разберемся, почему этот движок завоевывает сердца новичков и профессионалов.
Глобальное освещение - одна из самых красивых и одновременно самых сложных задач в компьютерной графике. Она включает не только прямой свет от источников, но и все его переотражения от поверхностей, преломления, рассеяния и прочие танцы фотонов в сцене.
Многие алгоритмы, включая path tracing, radiosity и voxel cone tracing, пытаются справиться с этой задачей десятилетиями. Некоторые дают красивую картинку, но требуют больших вычислительных ресурсов. Другие - быстрые, но страдают от шума, артефактов и утечек света.
Что если можно приблизиться к качеству трассировки бесконечного количества лучей, потратив ограниченное количество ресурсов? Именно такую цель преследует метод Каскадов яркости (Radiance Cascades), впервые предложенный Александром Санниковым из Grinding Gear Games. (заготовку его статьи можно посмотреть вот в этом репозитории).
Из новостей: Eidos Montreal уволит 75 сотрудников, продажи Monster Hunter Wilds достигли 10 миллионов копий, ИИ сгенерировал технодемку Quake II, Eidos Montreal стремится возродить серию Deus Ex.
Из интересностей: современный SSAO в современном рантайме, 3 эпизод про разработку Dwarf Fortress, разрабатываем игру для Wii в 2025.
В свободное от работы время зумеры-айтишники пилят игру в Telegram Mini App, и нет, это не тапалка!
Про игру
Может быть вы помните, а может и не знали, но в 80-е была популярна элегантная стратегическая игра Trax.
Ее придумал Дэвид Смит – дипломированный бухгалтер, семьянин, бизнесмен и даже автор песен. Он опубликовал более 20 игр, но считает Trax своей лучшей придумкой.
Вокруг неё формировались клубы в разных странах, организовывались турниры по электронной почте и даже чемпионаты мира. Из года в год Trax стабильно входил в топы лучших игр на протяжении 80-х и получал многочисленные награды.
И вот спустя годы давно запылившаяся, но когда-то популярная игра Тракс вдруг попалась моему мужу Кириллу, точнее его другу ака одногруппнику из ИТМО, при очень интересных обстоятельствах. Как-то раз он попал на комиссию по отчислению в ИТМО, где случайным образом попадался один из двух билетов:
первый - сделать бесконечные крестики нолики, где нужно сложить диагональ в 10 крестиков (по крайней мере так запомнил мой муж), а другой бесконечный Тракс в консольном варианте. Посмеялись, поиграли и затянуло. Тогда игра была доступна только в двух вариантах: настольная и ПО на Винду. Возможности поиграть онлайн не было, за исключением изощренных способов, например транслировать экран и под диктовку выставлять ходы оппонента или через TeamViewer. И тогда в голове Кирилла появилась мысль – а почему бы не запилить веб-версию Тракса.
Кирилл изначально бэкендер, но когда мы работали в одном IT-стартапе и над своими пет-проектами он подкачал навыки фронтедера и ступил на путь фулл-стек разработчика. И вот когда ему стало хватать навыков для написания этой игры в вэбе, он принялся за дело.
https://www.youtube.com/watch?v=ZqW-WUt11vE
Создаём изометрический автомобильный PvP для мобилок — рассказываю, что готово и что нужно чтобы довести до MVP.
В std::move никто никуда не двигается
В undefined behavior поведение вполне себе определено, просто крашит игру
В GameObject нет ни игры ни объекта, а только баги и куча антипаттернов
Memory leak detector сам протекает
В PhysicsEngine физики столько же, сколько в сказке про Колобка
Из 8 часов работы 6 уходят на попытку собрать билд после мержа со стейблом.
В ProfileMode тормозит всё кроме профайлера
В retrospective meeting обсуждают, почему всё плохо, но оставляют как есть.
В debug билде багов меньше чем в релизном и выше фпс
Всем привет, меня зовут Алексей Ляховский, я на протяжение последних 10 лет занимаюсь изучением, разработкой и развитием экосистемы часов Xiaomi для глобального сообщества.
Я разобрал формат циферблатов Xiaomi последних поколений, сделал распаковщик циферблатов, и компилятор их для оригинального старого редактора циферблатов Xiaomi, сделал мод MiFitness, где активные пользователи сообщества создают и публикуют кастом циферблаты для часов, собрал из китайского IDE отдельный автономный эмулятор часов, для проверки циферблатов и приложений, модифицирую и дорабатываю оригинальные прошивки часов, а так же создаю приложения для данных моделей на JerryScript и LUA, о чем мы познакомимся подробнее чуть позже на примере данной игры.
Давно хотел сделать мобильную игру, но руки никак не доходили. А неделю назад решил, что время пришло, поэтому решено - начинаем делать.
Добро пожаловать в японский преступный видеомир и чуточку настоящий. Принесли в рубрику книгу о франшизе Yakuza. Автор — писатель с образованием в сфере кино и преподаватель. Живёт в Киото уже больше десяти лет, то есть непосредственно близок к стране, об игровом наследии которой пишет. Эта работа напоминает исследование и содержит не только описание и пересказ сюжета, как во многих других не очень хороших книгах про игры. Виктор Муазан анализирует феномен игры, которую Тосихиро Нагоси создавал для узкой аудитории среди самих японцев, но при этом она захватила внимание геймеров по всему миру.
Не так давно ко мне в руки попала игровая ретро-консоль и у меня возникло желание написать для неё свою игру. А возникало ли у вас желание написать свою игру под игровую консоль?
Для «движка», разработанного мной для моей игры, я использую карты высот пиксельной графики, чтобы реализовать различные крутые эффекты: динамическую высоту воды, пересекающуюся геометрию, декали, 3D-освещение и даже z-сортировку сцены.
Один из частых вопросов, которые я получаю от студентов или на наших внутренних студийных лекциях, — это какую стратегию выделения памяти лучше применять при разработке? Ответ: хотелось бы никакую, т.е. не использовать аллокации рантайм, но жизнь вносит свои коррективы.
Мы все знаем, что нельзя просто выделять память, когда вздумается, но откладываем решение этой проблемы до конца проекта. К тому времени дедлайны начинают давить, майлстоуны и некоторые части тела подгорать, и обычно уже слишком поздно, чтобы вносить серьезные изменения. Ну хотябы есть пара недель перед релизом, чтобы поправить основные проблемы.
Динамическое выделение памяти — это как раз то, что относится к той категории вещей для большинства программистов, о которой все знают, но забивают пока не приходит OOM. Хотя немного продуманности и предварительного планирования могут помочь избежать большинства этих проблем, и даст небольшую надежду, что игра не вылит по памяти в самый неподходящий момент.
Попробую убедить вас не использовать std::string/vector в функциях. При написании кода для пк, неважно - игры это или что-то другое, программа обычно разделяется на условно пять областей памяти.
Как для разработчика игр, некоторые из моих самых креативных работ появились из принятия ограничений, а не борьбы с ними. Как бы нелогично это ни звучало, ограничение возможностей оборудования или абстракций заставляет вас мыслить нестандартно гораздо больше.
Чтобы дать вам такой опыт, существуют онлайн фэнтезийные игровые консоли, такие как PICO-8 (небесплатная) и TIC80, которые делают очень доступным создание прототипов и получение минимальных навыков. Также есть аппаратные системы, такие как Playdate (пропиетарная), которые работают с методами ввода и форм-факторами еще больше ограничивая вашу площадку для игр. Наконец, есть процветающие сообщества энтузиастов-любителей вокруг таких консолей как SNES и N64 (посмотрите на этот потрясающий демейк Portal!).
Лично я всегда питал слабость к Wii. Отчасти потому, что я вырос на ее невероятных играх, таких как Super Mario Galaxy 2, но также потому, что моддинг игр для Wii дал мне возможность заглянуть в то, что позже станет моей карьерой: разработку игр. Хотя я и занимался разработкой для Wii в прошлом, я никогда не чувствовал что действительно понимаю что делаю. Пару месяцев назад я решил это исправить. Имея законченное задание по DirectX для университетского курса программирования графики и открытые возможности «вы можете добавлять дополнительные функции, чтобы повысить свои оценки, но они не являются обязательными», я подумал: что, если я приду на экзамены со своим Wii и сделаю презентацию на нем?
Сразу небольшой спойлер: мы сделаем минимально необходимое, набросав основу игры и добившись её устойчивой работы, в то время как дополнительные «плюшки» — игровой счёт, компьютерные противники (кстати, было бы любопытно прикрутить в этом качестве к esp32 нейросеть!) и прочие улучшающие элементы — вы можете сделать самостоятельно, взяв за основу тот код, который будет в конце статьи. Для тех, кто не в курсе, что такое esp32, можно почитать, например, тут, только надо иметь в виду, что там описана одна из версий — а их существует целая линейка и она постоянно пополняется.
Итак...