Pull to refresh
64
0
Александр Симилетов @elmm

User

Send message

Советы по использованию алгоритма коллапса волновой функции

Reading time7 min
Views12K
image

В последнее время я много экспериментировал с процедурной генерацией на основе ограничений. В частности, с алгоритмом Wave Function Collapse (WFC, коллапс волновой функции). Я даже написал собственную open source-библиотеку и ассет unity.

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

В этой статье я расскажу, чему научился и что сможет поднять генераторы на основе ограничений на новый уровень.
Total votes 36: ↑36 and ↓0+36
Comments4

Blitz Engine & Battle Prime: ECS и сетевой код

Reading time28 min
Views14K


Battle Prime — первый проект нашей студии. Несмотря на то, что многие члены команды имеют приличный опыт в разработке игр, мы, естественно, сталкивались с разными сложностями во время работы над ним. Они возникали как в процессе работы над движком, так и в процессе разработки самой игры.

В геймдев индустрии огромное количество разработчиков, которые охотно делятся своими историями, наработками, архитектурными решениями — в том или ином виде. Этот опыт, выложенный в публичное пространство в виде статей, презентаций и докладов, является отличным источником идей и вдохновения. Например, доклады команды разработки из Overwatch были для нас очень полезны при работе над движком. Как и сама игра, они очень талантливо сделаны, и я советую посмотреть их всем интересующимся. Доступны в GDC vault и на YouTube.

Это одна из причин, по которой мы также хотим вносить вклад в общее дело — и эта статья одна из первых, посвященная техническим деталям разработки движка Blitz Engine и игры на нем — Battle Prime.

Статья будет поделена на две части:

  • ECS: имплементация Entity-Component-System паттерна внутри Blitz Engine. Этот раздел важен для понимания примеров кода в статье, и сам по себе является отдельной интересной темой.
  • Неткод и геймплей: все, что касается высокоуровневой сетевой части и ее использования внутри игры — клиент-серверная архитектура, клиентские предсказания, репликация. Одной из важнейших вещей в шутере является стрельба, так что ей будет уделено большее количество времени.

Под катом много мегабайт гифок!
Читать дальше →
Total votes 30: ↑30 and ↓0+30
Comments8

Справочная: главное про новые «затычки» AirPods Pro

Reading time7 min
Views66K


Год назад я сравнивал четыре пары TWS-наушников и в итоге за удобство выбрал вкладыши AirPods, хотя они и выдают не лучший звук. В ноябре 2019 Apple их обновила, а вернее сделала «форк», выпустив затычки AirPods Pro. И я их, конечно, протестил — хожу с ними со старта продаж в России. Если совсем кратко, то разница в 7,5 тысяч ₽ между базовой версией и «прошкой» того стоит: шумодав — огонь, время работы не хуже, а звучание лучше.
Total votes 45: ↑42 and ↓3+67
Comments96

Наша с девушкой первая видеоигра. Разработка на Unity. Часть 2

Reading time6 min
Views17K
У-у-у… Кто обитает на дне океана? Cubicity — квадратная игра.

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


Читать дальше →
Total votes 24: ↑20 and ↓4+26
Comments28

Наша с девушкой первая видеоигра. Разработка на Unity. Часть 1

Reading time7 min
Views36K
Ну как первая… Если не считать релизы только под Android и с десяток заброшенных проектов у финиша, то да, это первая наша игра с замахом больше чем на одну платформу. Как же всё начиналось? А всё просто, работали мы значит над другим проектом, назовем его «проект А», работали уже долгое время и решили, а не сделать ли нам за пару месяцев игру и потренировать на ней наши маркетинговые навыки, а «проект А» выпустим сразу после с большим опытом в продвижении игр. Но звезды не сошлись, петух не свистнул и «проект А» залег на дно ровно на год. Но эта история не о нем, а о логической игре под названием «Cubicity: Slide puzzle».


Читать дальше →
Total votes 104: ↑98 and ↓6+92
Comments34

Физика в Unity-проекте на примере мобильного файтинга

Reading time8 min
Views14K

Физика стала неотъемлемой частью любой современной игры. Будь то простая симуляция ткани или полноценная физика движения транспорта. Не являются исключением и мобильные игры. Однако, настраивая физику для них, нужно оглядываться на ограничения, связанные с относительно низкой производительностью поддерживаемых устройств старого поколения. Ведущий технический 3D-художник Banzai.Games Роман Терский рассказал, как его команда интегрировала физику в игровой процесс мобильного файтинга Shadow Fight 3, какие приемы использовала для оптимизации и как переписала “с нуля” физику для персонажей для достижения ее полной детерминированности в синхронном PVP.
Читать дальше →
Total votes 18: ↑17 and ↓1+27
Comments10

Процедурные дороги в Houdini и Unity

Reading time5 min
Views15K
image

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

Раньше, когда не знал о Houdini, я писал на C# собственные инструменты процедурной генерации мешей для Unity. Добавление новых функций было очень долгим процессом, и когда я однажды услышал, что Houdini предназначен для подобных задач, то сразу перешёл на него. Я поэкспериментировал с разными способами генерации городов и улиц, и в этой статье я вкратце расскажу о методике, которая в конечном итоге была использовала для игры.

Сначала я создал инструмент для генерации сети улиц, которые можно было бы использовать в городе. Моё решение основано на изложенных здесь концепциях, а также на использованной по ссылке статье. Там много говорится о тензорных полях и собственных векторах, и всё написано очень технически, но вкратце это можно объяснить так: для моего случая (генерации дорожной сети на рельефе) мне нужно было сгенерировать контурные линии рельефа, а также линии, перпендикулярные им.
Читать дальше →
Total votes 37: ↑37 and ↓0+37
Comments8

Анализируем телеметрию «Берешита», или Что случилось около Луны 11 апреля 2019 года

Reading time9 min
Views18K
image

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


Общий объем показанной телеметрии таков, что в целом позволял оценить многие нюансы, связанные как с конструкцией станции, так и с особенностями ее посадки. Это действительно интересно. Дело в том, что посадка на Луну — очень непростой процесс, нюансы которого публикуются редко. В частности, реальная телеметрия обычно не публикуется вообще.

Total votes 81: ↑81 and ↓0+81
Comments43

Создание игры для SEGA Mega Drive/Genesis в 2019 году

Reading time12 min
Views46K
image

Даже сегодня люди по-прежнему продолжают создавать новые игры для старых консолей. Мы называем их «homebrew». Иногда это способ реализовать детскую мечту о создании игры для консоли, на которой играл ребёнком. Но кроме того это ещё и интересная задача для любого дизайнера или разработчика игр: ретро-железо обладало множеством ограничений, бросающих вызов креативности авторов. В 90-х для профессиональных разработчиков эти ограничения были привычными. Сегодня, когда у нас есть более совершенные инструменты, создание игр для подобных машин стало гораздо доступнее.

В прошлом году я написал статью о создании игры для Game Boy. Сегодня я поделюсь своим опытом создания трёх игр для домашней консоли SEGA Mega Drive/Genesis. Вероятно, благодаря современным мощным инструментам, это самая простая машина для разработки homebrew-игры. Например, мне даже удалось создать (очень простую) игру всего за 60 минут, и она на самом деле запускается на консоли!
Total votes 55: ↑55 and ↓0+55
Comments2

Морти, мы в UltraHD! Как посмотреть любой фильм в 4K, дорисовав его через малоизвестную нейросеть

Reading time3 min
Views115K
Наверное, вы слышали про технологию Яндекса DeepHD, с помощью которой они как-то раз улучшили качество советских мультфильмов. Увы, в публичном доступе ее еще нет, а у нас, рядовых программистов, вряд ли найдутся силы написать свое решение. Но лично мне, как обладателю Retina-дисплея (2880х1800), недавно очень захотелось посмотреть «Рика и Морти». Какого же было мое разочарование, когда я увидел, как мыльно на этом экране выглядит 1080р, в котором существуют оригиналы этого мультсериала! (это прекрасное качество и обычно его вполне достаточно, но поверьте, ретина так устроена, что анимация с ее четкими линиями в 1080р выглядит мыльновато, словно 480р на FHD-мониторе)

Я твердо решил, что хочу увидеть этот мультсериал в 4К, хотя и совершенно не умею писать нейросети. Однако решение было найдено! Любопытно, что нам даже не придется писать код, понадобится лишь ~100 ГБ места на диске и немного терпения. А результат — четкое изображение в 4К, которые выглядит достойнее, чем любая интерполяция.

image
Читать дальше →
Total votes 222: ↑218 and ↓4+214
Comments187

Увеличение видео 1080P до 4K, или Как я научился не волноваться и полюбил апскейл с помощью нейросетей

Reading time27 min
Views190K
Читая недавно очередную статью про апскейл (Upscale — масштабирование изображения до более высокого разрешения), на этот раз про коммерческий продукт Topaz AI Gigapixel, я оставил комментарий следующий содержания:
Жаль, что пост — простой перевод, хотелось бы сравнения с чем-нибудь бесплатным, вроде того же waifu2x. Полагаю, разницу найти будет очень сложно, даже несмотря на то, что waifu2x предназначена для анимации.
Ну а раз статья была переводом, я решил взять дело в свои руки. Итак, не будем тратить времени, знакомьтесь:


Под катом лонгрид, а также гайды по апскейлу видео с помощью Instant 4K, Waifu2x, Lanczos и Topaz Gigapixel AI.

Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments29

NURBS моделирование в Rhino 3D и T-Spline

Reading time14 min
Views25K

Существует, как минимум, два подхода к созданию 3D моделей. В одном из них, наиболее популярном, объекты состоят из множества полигонов. В другом (freeform surface modelling) — из NURBS поверхностей, которые задаются кривыми (сплайнами).

Каждый из подходов имеет свои преимущества и недостатки, во многом схожие с различиями между растровой и векторной 2D графикой. Особенностям работы с ПО для полигонального моделирования посвящено довольно много статей но, что касается средств NURBS моделирования, тут, на мой взгляд, ситуация сложнее. Большинство таких статей либо являются туториалами по созданию конкретных объектов, либо предназначены скорее для создателей ПО, нежели для его пользователей и полны терминов вида «веса, T-точки, кривые n-го порядка, », и т п. Я же попробую пройти посередине.
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments0

Истории лунного компьютера. Часть 1

Reading time15 min
Views13K
Часть 2
Часть 3

Часть фотографий была взята с сайта Hack The Moon.

Статья была представлена на 27-й ежегодной конференции по навигации и управлению Американского Общества Астронавтики (AAS) в Брекенридже, штат Колорадо, 6 февраля 2004. Предлагаемая вам версия содержит дополнительные иллюстрации, комментарии и небольшие исправления.



ABSTRACT: Миссия Аполлон 11 совершила успешную посадку на Луну, несмотря на две проблемы с компьютером, повлиявшие на лунный модуль в период управляемой посадки. Неустранённая проблема в интерфейсе радара сближения отняла около 13% времени цикла бортового компьютера, приведя к пяти сбоям программы и перезагрузкам. Менее известная проблема была вызвана ошибочными данными, что привело к флуктуациям тяги двигателя посадки лунного модуля, так как алгоритм управления тягой находился на границе устойчивости. Объяснение этих проблем даёт возможность описать операционную систему бортового компьютера Аполлона и программу управления посадкой на Луну.
Читать дальше →
Total votes 38: ↑36 and ↓2+34
Comments2

GPU Bound. Как перенести на видеокарту все и немножко больше. Анимации

Reading time11 min
Views9.9K
Когда-то давно, было огромным событием появления на GPU блока мультитекстурирования или hardware transformation & lighting (T&L). Настройка Fixed Function Pipeline была магическим шаманством. А те кто умел включать и использовать расширенные возможности конкретных чипов через D3D9 API hacks, считали себя познавшими дзен. Но время шло, появились шейдеры. Сначала, сильно лимитированные как по функционалу, так и по длине. Далее все больше возможностей, больше инструкций, больше скорость выполнения. Появился compute (CUDA, OpenCL, DirectCompute), и область применения мощностей видеокарт стала стремительно расширяться.

В этом цикле (надеюсь) статей я постараюсь расказать и показать, как «необычно» можно применить возможности современного GPU, при разработке игр, помимо графических эффектов. Первая часть будет посвящена анимационной системе. Все что описано, основано на практическом опыте, реализовано и работает в реальных игровых проектах.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments4

Создание дизайн-документа миссии повествовательной игры на примере Last of Us

Reading time12 min
Views12K
image

Я всегда начинаю с того, что задаю много вопросов и провожу активные исследования. За свою карьеру я успел поработать над множеством сиквелов уже существовавших франшиз. Лучшее, что ты можешь сделать в этом случае — полностью освоить жанр игры и изучить мир. Среди прочих проектов, мне приходилось с головой нырять в Halo, StarWars, Hellboy и Division. Хорошие гейм-дизайнеры — это хорошие исследователи.

Naughty Dog мастерски реализовала The Last of Us: Left Behind, и прежде чем браться за этот проект, мне нужно было хорошо подготовиться. Если вы не играли в Last of Us, то сыграйте! Это одна из самых потрясающих историй и несравненный пример развития персонажей. Другие разработчики очень многому могут научиться у создателей этой игры. Из-за сильного упора на повествование Naughty Dog называет свои дизайн-документы миссий «набросками глав». Мне кажется, это очень милый штрих. Это заставляет больше думать о повествовании при создании контента и придавать дизайну более сюжетную структуру.

Предупреждение — в статье содержатся спойлеры Last of US и Last of Us DLC.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments2

Как мы делали нашу маленькую Unity с нуля

Reading time8 min
Views17K


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

  • рендеринг;
  • работа с SDK;
  • работа с операционной системой;
  • с сетью и ресурсами. 

Однако в нем не хватало того, чем так ценится Unity, — удобной системы организации сцен и игровых объектов, а также редакторов к ним.

Здесь я хочу рассказать, как мы внедряли все эти удобства и к чему пришли.
Читать дальше →
Total votes 21: ↑20 and ↓1+19
Comments9

Алкоголизм последней стадии

Reading time2 min
Views248K
Комментарий модератора. Эта статья находилась в Песочнице и была отклонена на премодерации. Но сегодня был поднят важный и сложный вопрос в статье. А этот пост раскрывает признаки распада личности и может быть полезным тем, кто, как выразился автор упомянутой статьи, в метре от водопада. Поэтому решено её выпустить.
Здравствуйте, уважаемые читатели!

Пишу вам в состоянии глубочайшего запоя (более 3-х месяцев), из которого выйти не могу. Дозы — в день около 1 — 1,5 л. крепкого алкоголя и одна-две бутылки сухого вина. Лежал в психиатрической клинике около месяца год назад — не перенёс распад семьи, сломался. Делали т.н. «кодировку» инъекцией. После ввода лекарства алкоголь и нюхать нельзя — он не перерабатывается. Отличительная черта, извините — запах мочи. Резкий, как уксус. Отвратительный.

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

Итак, по пунктам:
Читать дальше →
Total votes 270: ↑210 and ↓60+150
Comments599

Реализация физически корректных объемных облаков как в игре Horizon Zero Dawn

Reading time16 min
Views17K
Раньше облака в играх рисовались обычными 2D спрайтами, которые всегда повернуты в направлении камеры, но последние годы новые модели видеокарт позволяют рисовать физически корректные облака без заметных потерь в производительности. Считается, что объемные облака в игры принесла студия Guerrilla Games вместе с игрой Horizon Zero Dawn. Конечно, такие облака умели рендерить и раньше, но студия сформировала что-то вроде промышленного стандарта на исходные ресурсы и используемые алгоритмы, и в настоящее время любая реализация объемных облаков так или иначе этому стандарту соответствует.

UPD. Картинка обновлена. Изменения описаны в конце статьи.


Читать дальше →
Total votes 42: ↑40 and ↓2+38
Comments18

Unity: отрисовываем множество полосок здоровья за один drawcall

Reading time9 min
Views24K
Недавно мне нужно было решить задачу, достаточно распространённую во многих играх с видом сверху: рендерить на экране целую кучу полосок здоровья врагов. Примерно вот так:


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

Я не буду никого стыдить за код, но достаточно сказать, что некоторые из решений были не совсем блестящими, например, кто-то добавлял к каждому врагу объект Canvas (что очень неэффективно).

Метод, к которому я в результате пришёл, немного отличается от всего того, что я видел у других, и не использует вообще никаких классов UI (в том числе и Canvas), поэтому я решил задокументировать его для общества. А для тех, кто хочет изучить исходный код, я выложил его на Github.
Читать дальше →
Total votes 30: ↑28 and ↓2+26
Comments9

Nixie clock или теплый ламповый свет вам в дом

Reading time3 min
Views17K
Все началось в тот момент, когда на работе в одном из ящиков со старыми радиодеталями была найдена вот такая поделка. Кто ее сделал — история умалчивает, работала ли она тоже достоверно не известно.


Total votes 35: ↑31 and ↓4+27
Comments53
1
23 ...

Information

Rating
Does not participate
Location
Донецк, Донецкая обл., Украина
Date of birth
Registered
Activity