Как стать автором
Поиск
Написать публикацию
Обновить
292.65

Разработка игр *

Разработка игр

Сначала показывать
Порог рейтинга
Уровень сложности

От проблем большого геймдева — к соло-разработке и внутреннему миру: беседуем с геймдизайнером Ричардом Levelord Греем

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров4.8K

Ричард Levelord Грей — известный гейм-дизайнер, один из основателей Ritual Entertainment, активно участвовавший в создании таких легендарных игр, как Duke Nukem, American McGee’s Alice и Serious Sam. В 2019 году мы беседовали с Ричардом о его пути в индустрию и работе над «дюком». Сегодня мы поговорим о более поздних (и нередко скандальных) проектах Ричарда по известным франшизам, о его независимой разработке и о том, как Levelord видит геймдев сегодня.
Читать дальше →

Game++. Cooking vectors

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров6.6K

В разработке игр динамические и статические массивы являются основным инструментом при работе с набором объектов, буду дальше называть их vector. Вы можете подумать про разные map, set, и другие ускоряющие структуры, но их тоже предпочитают делать поверх векторов. Почему так? Вектора просты для понимания, удобны для большого числа задач, особенно там, где объём данных заранее неизвестен или примерно известен. Но как вы понимаете, за все надо платить, и расплачиваться приходится производительностью, которой, как обычно, всегда не хватает. Так что, использование динамических массивов имеет свои ограничения и особенности.

Читать далее

Практическое обучение с подкреплением: от забав с MuJoCo'м до битв на арене

Уровень сложностиСредний
Время на прочтение14 мин
Количество просмотров3.7K

Добрый день, уважаемые хабровчане! Я хочу поделиться с вами очень интересным проектом, над которым работал в последнее время.

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

Готовы? Тогда — вперед!

Внимание! Тяжёлые гифки под катом.

На арену!

Создание прототипа RPG-игры на движке GemRB

Уровень сложностиСредний
Время на прочтение50 мин
Количество просмотров2.4K

Цель статьи - описание процесса того, как можно собрать небольшой прототип RPG-игры для движка GemRB. Кто не знает, GemRB (расшифровывается Game Engine Made with pre-Rendered Background) - это проект с открытым исходным кодом, направленный на создание клона движка Infinite Engine, того самого на котором в конце девяностых - начале нулевых были сделаны такие классические ролевые партийные игры как Baldur's Gate, Planescape: Torment, Icewind Dale и другие. Нынешнее состояние движка GemRB позволяет пройти все эти игры, используя их оригинальные ресурсы (графику, звук, тексты и прочее).

Одно из достоинств проекта GemRB в том, что под него можно сделать отдельную, совершенно независимую игру. По своей сути создание такой игры похоже на создание мода для игры Baldur's Gate (или другой подобной). В большинстве случаев используются те же механизмы и методы. В данной заметке хотелось бы рассказать, как можно сделать небольшой игровой проект в изометрическом стиле. Будем делать полностью с нуля, используя набор заранее подготовленных ассетов.

Читать далее

Blockbench, или Как я перестал беспокоиться и полюбил 3D-моделирование

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров34K

Возможно, вы, как и я, много раз пробовали осваивать 3D-моделирование, но каждый раз ударялись о высокий входной порог. А может быть, вы выбираете себе подходящий инструмент для начинающих? Тогда вы можете представить мою радость, когда я узнал о Blockbench — минималистичном 3D-редакторе, предназначенном для создания твердотельных моделей. Для меня он пока остаётся идеальным компромиссом между сложностью обучения и возможностями.

Что такое Blockbench


Blockbench — редактор, изначально рассчитанный на моделирование блоков, предметов и скинов персонажей Minecraft (Bedrock Edition). Добавляем в сцену примитив, навешиваем на него текстуру (заморачиваться с UV-развёрткой не нужно, она создаётся автоматически), разрисовываем текстуру прямо на модели, при необходимости добавляем анимации — вуаля, у нас есть готовый 3D-объект!
Читать дальше →

Arnis: как перенести реальный мир в Minecraft за пару кликов

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров20K


На днях энтузиасты с GitHub выпустили Arnis — утилиту, которая переворачивает представление о строительстве в Minecraft. Теперь, опираясь на реальные данные из OpenStreetMap, за считаные минуты можно создать масштабную копию существующего города.

Тем, кто годами возводил здания и улицы вручную, такая автоматизация может показаться настоящей магией. Достаточно пары кликов вместо часов кропотливой работы: выбираете локацию на карте — и Arnis тут же генерирует виртуальную копию. Но так ли все идеально? Давайте разберемся, как работает Arnis, чем он хорош, есть ли ограничения и какие открываются перспективы при использовании этой технологии. Все подробности — под катом.
Читать дальше →

Простая система частиц на SFML C++

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

Простая система частиц на SFML C++

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

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

Создадим отдельный класс для управления системой частиц.

Назовём его ParticleSystem. Ниже реализация кода данного класса.

Читать далее

Крестики-нолики на printf

Уровень сложностиСложный
Время на прочтение6 мин
Количество просмотров8.7K

Представляем вам реализацию игры в крестики-нолики на С с помощью одного вызова printf. Написана для участия в IOCCC в 2020 году.

Читать далее

Как вывести приложение в топ Google Play и App Store: ASO, мотивированный трафик и реклама. Практические советы

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров1.7K

На разработке приложений зарабатывают единицы! Я являюсь довольно опытным ASO‑специалистом и хочу раскрыть правду о мобильном маркетинге для широкой аудитории и помочь вам достичь желаемых результатов. В данной статье 80% практической информации и 20% воды, которая показывает, что все не так радужно, как вам рассказывают «эксперты».

Читать далее

Шейдер береговой линии для Unity

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров4K

В своей работе я больше склоняюсь к стилизованной картинке, однако полученный в статье результат можно будет адаптировать и для реалистичного стиля/PBR. В этом посте мы поговорим о шейдере воды, относящемся к береговой линии, не касаясь материала песка и других деталей воды, например, преломления и каустики (о них можно прочитать в Water Shader Breakdown или по другим ссылкам в разделе Water на странице Resources). Впрочем, шейдер выполняет и смешение прозрачности/альфы, чтобы затенить материал под ним для симуляции мокрого песка.

Мы поговорим о двух способах наложения волн в сцене: при помощи текстуры глубин и ручных UV. Ниже я перечислю замечания, плюсы и минусы каждого способа. В последующих разделах мы поработаем над ними по очереди.

Читать далее

Game++. String interning

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров8.6K

«String interning», иногда это называют «пулом строк» — это оптимизация (https://en.wikipedia.org/wiki/String_interning), при которой хранится только одна копия строки, независимо от того, сколько раз программа ссылается на нее. Среди других оптимизаций по работе со строками (SWAR, SIMD-cтроки, immutable strings, StrHash, Rope string, и немного других), часть которых была описана тут, она считается одной из самых полезных оптимизаций в игровых движках, есть правда небольшие недостатки у этого подхода, но экономия памяти и скорость работы при правильной подготовке ресурсов и работе с лихвой их перекрывают.

Вы 100% когда-нибудь писали одну и ту же строку несколько раз в одной программе. Например:pcstr color = "black"; А позже в коде пришлось написать: strcmp(color, "black");Как видите, строковый литерал "black" встречается несколько раз. Означает ли это, что программа содержит две копии строки "black"? Более того, означает ли это, что в оперативную память загружаются две копии этой строки? На оба вопроса ответ — зависит от компилятора и вендора. Благодаря некоторым оптимизациям в сlang (Sony) и GCC, каждая строка-литерал хранится в программе только в одном экземпляре, и, следовательно, только одна копия загружается в оперативную память, поэтому иногда cтановятся возможными разные фокусы.

Просто не копируй это...

Недельный геймдев: #208 — 12 января, 2025

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров1.8K

Из новостей: игры становятся всё дороже из-за неэффективного управления, Assassin’s Creed Shadows ещё раз перенесли, Square Enix начала активнее защищать сотрудников от токсичных фанатов.

Из интересностей: первый взгляд на FSR4, создание прототипов игр на LÖVE, шахматный движок на 84688 регулярных выражениях.

Читать далее

Разбор рендеринга в Unity, часть первая: Built-in rendering

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров17K

Наверное, все игровые разработчики знают, как происходит рендеринг. Ну там вертексы, треугольники, растеризация, буфер экрана... Но детали процесса для многих внезапно являются сюрпризом. Например, сколько раз рендерится объект в Unity (да и в других движках) в обычном случае? Один?... Если разработчик отключит все что можно, то да. Но как правило - минимум 2. А может быть и 8 раз. Как так? Добро пожаловать в удивительный мир рендеринга...

Читать далее

Ближайшие события

Создание прототипов игр на LÖVE

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров4.3K

Одна из моих целей на 2025 год — создание завершённой игры. Завершённой, то есть её можно будет купить в Steam или App Store за $2,99 или около того. Я уже делал маленькие игры, но завершение и выпуск игры, вероятно, будет самым крупным моим проектом (если не считать блога).

В зимние каникулы я какое-то время писал прототипы игр на LÖVE — фреймворке для создания 2D-игр на Lua. Таким образом я хотел изучить инструменты разработки игр, подходящие к моему набору навыков, и определить свои сильные стороны, чтобы в 2025 году распоряжаться временем эффективно.

До работы над этими прототипами я написал примерно двести строк кода на Lua, но у меня не возникло никаких проблем в освоении нужного мне синтаксиса.

Оказалось, что API LÖVE простой и мощный. Одно из преимуществ использования фреймворка вместо игрового движка в том, что я могу показать вам полный пример всего в десяти строках кода (в отличие от игрового движка, где пришлось бы определять объекты сцены, прикреплять скрипты и так далее).

Читать далее

Шахматный движок на 84688 регулярных выражениях

Уровень сложностиСредний
Время на прочтение21 мин
Количество просмотров17K

В праздничные выходные мне пришло в голову, что я давно не занимался чем-то бессмысленным. Представляю вашем вниманию... Regex Chess: набор из 84688 регулярных выражений, которые при выполнении по порядку генерируют ход (валидный, то есть не совсем ужасный) для переданного в качестве входных данных состояния шахматной доски. [Прим. переводчика: здесь в оригинале статьи есть интерактивный виджет, позволяющий сыграть с движком.]

Вот вся программа, которая делает ходы против игрока (серьёзно, я не шучу, она действительно такая короткая):

let regex_list = [/* очень длинный список регулярных выражений */]
let board = "rnbqkbnr / pppppppp / 8 / 8 / 8 / 8 / PPPPPPPP / RNBQKBNR w KQkq - 0 1";
for (regex of regex_list) {
board = re.replace(regex.pattern, regex.target)
}
display(board)

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

* Снобы могут заявить что-то типа «Вы сказали, что будете использовать регулярные выражения, но они не регулярные!" Но меня это не волнует.

Как всегда, код проекта выложен на GitHub.

Читать далее

Коммерческий проект: механика обрезки кустов

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров795

В прошлом (уже) году я работал над интересным проектом в Unreal Engine с точки зрения реализации. Сделал почти весь проект в одиночку игру-симулятор и хотел бы поделиться как создавал главную механику игры. Я не программист, но опыт создания игр на Blueprints UE есть. 

Читать далее

Silent Hill 2 Remake: боевка, монстры и ностальгия

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

Бонджорно, мои золотые! Это Идар Табухов из МТС Диджитал. Сегодня будем окунаться в ностальгию. Как я говорил в посте про ожидаемые игры осени 24, прошлый год порадовал нас ремейком Silent Hill 2.

У меня были большие ожидания: все-таки с этой игрой связаны мои детские воспоминания. Отлично помню: сидели у друга в гостях и вместе смотрели, как его отец проходит Silent. Сначала это была первая часть франшизы, на старушке PS ONE, а потом уже на PS2. К сожалению, не сильно помню все уровни: прохождение не удавалось застать целиком. Но четко запомнил пирамидоголового и минимально одетых медсестер. Вспоминаю леденящую атмосферу — она не давала расслабиться вплоть до следующего места для сохранения. Музыку, которая сбивает с толку. Фиксированную камеру, не позволяющую заглянуть за угол и увидеть, что там происходит. Еще помню вечно косого ГГ — ну, или это мы просто всегда мазали. В общем, от ремейка хотелось той же атмосферы «одного места». Оправдались ли мои ожидания — расскажу дальше, но вы точно должны поиграть сами и получить свой опыт. Теперь погнали!

Читать далее

Недельный геймдев: #207 — 5 января, 2025

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.3K

Из новостей: продажи Stardew Valley превысили 40 миллионов копий, Notch собирается заняться преемником Minecraft, Black Myth: Wukong не выходит на Xbox из-за проблем с оптимизацией.

Из интересностей: почему студии делают RPG с прохождением через насилие, про будущее повествования с Кеном Левином, героические цивилизации — гибрид двух легендарных игр, как продать более 1 миллион копий своей игры.

Читать далее

Как спроектировать игровую математическую модель, забалансить её и не сдуреть. Разбор на практических кейсах

Уровень сложностиПростой
Время на прочтение17 мин
Количество просмотров20K

Мы идём от общего к частному. Задаём системе вопросы на самом общем уровне и постепенно углубляемся в детализацию. Если на какой-то вопрос мы не смогли ответить, значит, скорее всего, мы пропустили какой-то более общий вопрос, от которого зависит рассматривая ступень детализации, в этом случае не стесняемся вернуться на один или несколько уровней абстракции назад.

Читать далее

Монетизационные механики AFK Journey

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров5.7K

Здравствуйте, дорогие читатели!

Меня зовут Евгений Розанов. Я занимаюсь разработкой мобильных free-to-play игр, а точнее их продюсированием, достаточно большую часть времени я занимаюсь анализом рынка в поиске новых идей для механик, для удобства я собираю свою базу референсов и интересных решений.

В данной статье я собрал монетизационные механики из AFK Journey.

Приятного прочтения!

Читать далее

Вклад авторов