
Для своих игр в ASCII-арте я написал библиотеку bear_hug с очередью событий, коллекцией виджетов, поддержкой ECS и прочими полезными мелочами. В этой статье мы посмотрим, как с её помощью сделать минимальную работающую игру.
Читать полностью »

Для своих игр в ASCII-арте я написал библиотеку bear_hug с очередью событий, коллекцией виджетов, поддержкой ECS и прочими полезными мелочами. В этой статье мы посмотрим, как с её помощью сделать минимальную работающую игру.
Читать полностью »

В этой статье разбираются вопросы оптимизации UI-элементов проектов, сделанных в Unity. На основании информации из официальной документации и личного опыта я постарался наглядно объяснить принципы работы UI-элементов. Также здесь вы найдёте практические советы, которые помогут улучшить производительность вашего проекта в том, что касается пользовательского интерфейса.
fBM расшифровывается как Fractional Brownian Motion (дробное броуновское движение). Но прежде чем начать говорить о природе, фракталах и процедурных рельефах, давайте на минуту углубимся в теорию.
Броуновское движение (Brownian Motion, BM), просто, без «дробности» — это движение, при котором положение объекта с течением времени меняется со случайными инкрементами (представьте последовательность position+=white_noise();). С формальной точки зрения BM является интегралом белого шума. Эти движения задают пути, которые являются случайными, но (статистически) самоподобными, т.е. приближенное изображение пути напоминает весь путь. Fractional Brownian Motion — это схожий процесс, в котором инкременты не полностью независимы друг от друга, а в этом процессе существует некая память. Если память имеет положительную корреляцию, то изменения в заданном направлении будут иметь тенденцию к будущим изменениям в том же направлении, и путь при этом будет плавнее, чем при обычном BM. Если память имеет отрицательную корреляцию, то за изменением в положительную сторону с большой вероятностью последует изменение в отрицательную, и путь окажется гораздо более случайным. Параметр, управляющий поведением памяти или интегрированием, а значит и самоподобием, её размерностью фрактала и спектром мощности, называется показателем Хёрста и обычно сокращается до H. С математической точки зрения H позволяет нам интегрировать белый шум только частично (допустим, выполнить только 1/3 интегрирования, отсюда и «дробность» в названии) для создания fBM под любые нужные нам характеристики памяти и внешний вид. H принимает значения в интервале от 0 до 1, которые описывают, соответственно, грубое и плавное fBM, а обычное BM получается при H=1/2.

Здесь функция fBM() использована для генерации рельефа, облаков, распределения деревьев, вариаций их цветов и деталей крон. «Rainforest», 2016: https://www.shadertoy.com/view/4ttSWf
Читать полностью »

Вау-эффекта в играх можно достигнуть не только неожиданными механиками или плоттвистом, но и анимацией — в мобильных проектах на последнем часто делается особый акцент. Поэтому решил поделиться интересным переводом материала по Unity Animator. Внутри — про приоритетность переходов анимации и грамотное переключение между состояниями.Читать полностью »

Всем привет! Мы продолжаем работать над игрой “мечты” Another Way. Это уже третий пост на эту тему, с предыдущим вы можете ознакомиться по ссылке — Через тернии к игре мечты — месяц спустя. Я не писал о прогрессе чуть более месяца, скопилось много много информации, поэтому будет минимум текста, но много картинок. Всем тем кто не боится трафика — добро пожаловать под кат.
Читать полностью »

Несколько лет назад, когда был выпущен первый релиз Cogmind, я без предрассудков относился к выпуску официальной версии под Mac. В конце концов, Cogmind — моя первая коммерческая игра, раньше я выпускал только хобби-проекты в статусе freeware и только под Windows, поэтому не был уверен, какие результаты даст поддержка дополнительных платформ. Поэтому я решил подождать и посмотреть стоит ли в каком-то виде реализовывать официальную поддержку на Mac.
Тем временем я убедился, что Cogmind (и другое моё ПО) идеально работает через Wine и подобные ему пакеты. Разумеется, в Steam я никогда не говорил о поддержке Mac, потому что это не был отдельный скачиваемый файл, работающий сам по себе. Я готовился к выпуску версии 1.0, и откладывал решение о том, стоит ли принимать меры для реализации полной поддержки платформы, на будущее.
На текущий момент я уже достаточно прождал и увидел, чтобы прийти к осмысленному решению: официальная поддержка macOS просто недостижима для меня.
Почему такое решение было принято именно сейчас: если вы следите за разработчиками инди-игр, сообществами или новостями, то должны были слышать о шумихе, связанной с Apple. К сожалению, мой голос тоже присоединится к этому хору.
Читать полностью »

Данная статья ориентирована на школьников, студентов, и тех, кто постарше, кто никогда не пробовал, но очень хочет начать писать компьютерные игры. Кто в детстве не играл в компьютерные игры, и не хотел написать свою игру, которая будет лучше, чем GTA или Crysis? И я хотел, и, как ни странно, всё ещё хочу. И за несколько лет практики обучения таких же программированию, набралось несколько заметок, куда двигаться и что делать.
Читать полностью »

Я единственный художник в нашей игровой студии, а это значит, что мне приходится заниматься анимацией, UI, рекламными материалами, ресурсами для соцсетей, персонажами, предметами и окружениями. Всё, в чём нужно хотя бы немного искусства, ложится на мои плечи. Я часто ощущаю всю лежащую на мне нагрузку, поэтому задаюсь вопросом:
В этой статье я расскажу о том, как мы разрабатываем тайлы 2D-окружений для таких игр, как Levelhead и Crashlands, и покажу методику, позволяющую нам сэкономить немного времени и повысить универсальность графических ресурсов окружений. Этот метод также упрощает создание органически выглядящих типов рельефа, хорошо сочетающихся друг с другом. Я не предлагаю при создании тайлсетов окружений пользоваться только этим способом, но он станет хорошим пополнением набора инструментов для любого художника.
Этот способ называется SPLATTER TILE!
Читать полностью »

Любому программисту будет полезно понимание различных структур данных и способов анализа их производительности. Но на практике мне ни разу не пригождались АВЛ-деревья, красно-чёрные деревья, префиксные деревья, списки с пропусками, и т.д. Некоторые структуры данных я использую только для одного конкретного алгоритма и ни для чего больше (например, кучи для реализации очереди с приоритетом в алгоритме поиска пути A*).
В повседневной работе я обычно обхожусь на удивление малым количеством структур данных. Чаще всего мне пригождаются:
Я посвящу несколько статей тому, как я обычно реализую все эти структуры. Давайте начнём с простейшей и самой полезной — bulk data.Читать полностью »
Выпущенный компанией IO Interactive в 2016 году Hitman вернул франшизу к её корням: созданию богатых и интересных сценариев, в которых Агент 47 должен устранять свои цели, часто импровизированным и непрактичным способом. Для решения этой задачи внутри игры применяется множество систем ИИ, именно их мы и будем изучать. Мы углубимся в структуру систем ИИ, отвечающих в последнем поколении игр Hitman за различные функции: создание реагирующих на ситуацию NPC, телохранителей, системы толп, управляемые искусственным интеллектом анимации и многое другое.

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