Pull to refresh
0
@DFoozread⁠-⁠only

User

Send message

Дизайн интерфейса для игры, рисуем кольцо Хавеля из Dark Souls 3

Reading time4 min
Views10K
Здравствуйте, дорогие друзья!

Я Михаил Кравченко, дизайнер игровых интерфейсов.

Это статья о том как нарисовать кольцо Хавеля из игры Dark Souls 3. Перед вами результат, которого я добился примерно за полтора часа работы в фотошопе.



Дизайнера интерфейсов периодически просят нарисовать несколько иконок для игры, например, когда художник в отпуске и что-то срочно понадобилось. Так что иметь такой навык в своем арсенале довольно полезно. Ниже я опишу процесс рисования иконки.
Читать дальше →

Дизайн интерфейса для игры, рисуем пак иконок

Reading time7 min
Views20K
Всем привет!

Я Михаил Кравченко, дизайнер игровых интерфейсов.
Это статья о том как нарисовать пак иконок для игры. Ниже вы видите результат.



Фиксируем требования к результату


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

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

Список требований нужно составить, опираясь на описание задачи и собственные представления о том как стоит эту задачу решить. Дальше нужно сходить с этим списком к заказчику и убедиться, что мы понимаем задачу одинаково. Возможно в списке нужно будет что-то поправить. В итоге получим список требований к результату.

Вот пример такого списка:

  • Предметы должны быть похожи на другие подобные предметы из прошлых вторжений;
  • Будет 5 типов предметов — кольца, браслеты, броши, подвески и камни;
  • У каждого типа предмета будет три степени редкости. Чем более редкий предмет, тем больше силы он дает;
  • Степень редкости предмета нужно как-то показать визуально;
  • У камней помимо редкости есть 4 цвета — синий, красный, желтый и зеленый;
  • Предметы выпадают из бойцов армии вторжения, поэтому должны иметь характерные для этих противников черты и цвета;
  • Картинки нужны в формате Tga, размер — 128x128 пикселей.
Читать дальше →

23 непростых вопроса для JavaScript-собеседования

Reading time15 min
Views71K
Хотите подготовиться к собеседованию по JavaScript и ищете вопросы, на которых можно попрактиковаться? Если так — считайте, что ваши поиски окончены. Автор материала, перевод которого мы сегодня публикуем, говорит, что собрал более двух десятков вопросов по JavaScript, предназначенных для тех, кто хочет превратиться из джуниора в сеньора, для тех, кто стремится успешно пройти собеседование в сфере фронтенд-разработки и получить интересное предложение от работодателя.


Читать дальше →

Создание интерфейса для игры

Level of difficultyMedium
Reading time11 min
Views49K
Всем привет.

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

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




Читать дальше →

Разработка hexapod с нуля (часть 8) — улучшенная математика передвижения

Reading time6 min
Views11K

Всем привет! В результате перехода на удаленную работу у меня появилось больше свободного времени на разработку гексапода (+2 часа в день за счет экономии на дороге). Я наконец-то смог сделать универсальный алгоритм для построения траектории движения в реальном времени. Новая математика позволила реализовать базовые движения путем изменения всего двух параметров. Это очередной шаг к внедрению «автопилота». В этой статье я постараюсь подробно рассказать о новой математике и как это вообще работает. Будет много картинок и gif.

Этапы разработки:

Часть 1 — проектирование
Часть 2 — сборка
Часть 3 — кинематика
Часть 4 — математика траекторий и последовательности
Часть 5 — электроника
Часть 6 — переход на 3D печать
Часть 7 — новый корпус, прикладное ПО и протоколы общения
Часть 8 — улучшенная математика передвижения
Часть 9 — завершение версии 1.00

Знаменитые дизайнеры vs научные исследования про читаемость шрифтов

Reading time6 min
Views71K
Я работаю дизайнером около 10 лет. В дизайне не очень много объективных и проверяемых законов, и когда мне нужно было что-то выяснить, я искала информацию в профессиональных книгах, блогах крутых ребят, спрашивала у знакомых арт-директоров и приставала к людям в коридорах.

А потом узнала, что ученые уже сто лет как выяснили то, про что до сих пор спорят дизайнеры.

Мы в Тинькофф сравнили мнение знаменитых дизайнеров и ученых о том, какие шрифты легче читать: антикву(с засечками) или гротески(без засечек).


Читать дальше →

Анатомия накопителей: SSD

Reading time6 min
Views57K
image

Часть 1. Анатомия накопителей: жёсткие диски

Твёрдый, как камень


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

Первые шаги на этом пути были сделаны компанией Toshiba, предложившей в 1980 году концепцию флеш-памяти. Четыре года спустя она создала NOR-память, а в 1987 году — NAND-память. Первый коммерческий накопитель с использованием флеш-памяти (solid state drive, или SSD) был выпущен SunDisk (позже переименованной в SanDisk) в 1991 году.
Читать дальше →

Краткая история меха: как Sony Pictures Imageworks создавала графику для «Стюарта Литтла»

Reading time11 min
Views7K
image

Роб Бредоу — исполнительный креативный директор и глава ILM. Около двух десятков лет назад он был ведущим аниматором эффектов фильма «Стюарт Литтл» в Sony Pictures Imageworks — студии, в которой он позже станет руководителем отдела VFX и техническим директором.

«Стюарт Литтл» режиссёра Роба Минкоффа стал одним из первых серьёзных работ Imageworks про живых существ, и поэтому студии пришлось вплотную заняться решением задачи меха. После выхода фильма Бредоу на SIGGRAPH 2000 рассказал о работе студии по рендерингу меха в RenderMan. Важным моментом презентации стало то, что в сопроводитлеьной статье SIGGRAPH был опубликован реальный поверхностный шейдер (вместе с некоторыми другими шейдерами).

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

Руководство по сжатию скелетных анимаций

Reading time11 min
Views5.4K

Эта статья будет кратким обзором методики реализации простой схемы сжатия анимаций и некоторых связанных с ней концепций. Я ни в коем случае не являюсь специалистом в этом вопросе, но по этой теме есть очень мало информации, и она довольно фрагментарна. Если вы хотите прочитать более глубокие статьи по этой тематике, то рекомендую пройти по следующим ссылкам:


Прежде чем мы начнём, стоит представить краткое введение в скелетную анимацию и некоторые её базовые понятия.

Основы анимации и сжатия


Скелетная анимация — довольно простая тема, если забыть о скиннинге. У нас есть концепция скелета, содержащего преобразования костей персонажа. Эти преобразования костей хранятся в иерархическом формате; по сути, они хранятся как дельта между своей глобальной позицией и позицией родителя. Терминология здесь сбивает с толку, потому что в игровом движке локальным часто называют пространство модели/персонажа, а глобальным — мировое пространство. В терминологии анимации локальным называется пространство родителя кости, а глобальным — или пространство персонажа, или мировое пространство, в зависимости от того, есть ли движение корневой кости; но давайте не будем об этом особо беспокоиться. Важно то, что преобразования костей хранятся локально относительно их родителей. Это имеет множество преимуществ, и особенно при смешении (блендинге): если бы при смешении двух поз кости были глобальными, то они бы линейно интерполировались в позиции, что приводило бы к увеличению и уменьшению костей и деформации персонажа.
Читать дальше →

Как Crash Bandicoot взламывал Playstation

Reading time19 min
Views33K

Энди Гэвин из Naughty Dog рассказывает об управлении памятью и 3D-анимациях 90-х.

«Памяти в Crash Bandicoot настолько не хватало, что мне приходилось красть небольшие кусочки лишней памяти из библиотек Sony. Я просто пробовал удалять те части, которые, как мне казалось, я не использую, и проверял, продолжает ли всё работать. Если всё работало, то я помечал их как свободные и делал хаки их кода, меняя байт-коды. Я думал: у меня получится, если Sony не хочет исправить это сама, то я просто изменю их код. Это была свободная память. [смеётся] Память была ограниченной. Но нам совершенно точно никто не разрешал этого делать».

Привет, я Энди Гэвин, сооснователь Naughty Dog Inc и ведущий программист Crash Bandicoot. Мы решили создать первый экшн-платформер с трёхмерным персонажем, и чтобы сделать всё правильно, нам в буквальном смысле пришлось взламывать оборудование.

Это было частью философии Naughty Dog — делать всё возможное, использовать каждый цикл ЦП или GPU, каждый байт памяти. Если в машине существовала такая возможность, то мы пытались разобраться, как выжать из неё максимум вне зависимости от того, пригодится ли это нам или нет, и будем ли мы использовать какие-то безумные трюки. Летом 1994 года мы с моим партнёром Джейсоном Рубином завершали файтинг для 3DO под названием Way of the Warrior и размышляли над тем, какую игру хотим сделать следующей. Самым популярным жанром на консолях в то время были экшн-платформеры, такие как Super Mario World и всевозможная другая классика 16-битных платформенных игр. В то же время на аркадных автоматах появилось новое 3D-оборудование и некоторые жанры начали переход из традиционного 2D в 3D.
Читать дальше →

Иерархический буфер глубин

Reading time15 min
Views6.9K

Краткий обзор


Иерархический буфер глубин — это многоуровневый буфер глуби (Z-буфер), используемый как ускоряющая структура (acceleration structure) для запросов глубин. Как и в случае mip-цепочек текстур, размеры каждого уровня обычно являются результатами деления на степени двойки размеров буфера полного разрешения. В этой статье я расскажу о двух способах генерации иерархического буфера глубин из буфера полного разрешения.

Сначала я покажу, как генерировать полную mip-цепочку для буфера глубин, сохраняющую точность запросов глубин в пространстве координат текстуры (или NDC) даже для размеров буферов глубин, не равных степеням двойки. (В Интернете мне встречались примеры кода, не гарантирующие этой точности, что усложняет выполнение точных запросов на высоких mip-уровнях.)

Затем для случаев, в которых требуется только один уровень даунсэмплинга, я продемонстрирую, как сгенерировать этот уровень при помощи одного вызова вычислительного (compute) шейдера, использующего атомарные операции в общей памяти рабочей группы. Для моего приложения, где требуется только разрешение 1/16 x 1/16 (mip-уровень 4), способ с вычислительным шейдером в 2-3 раза быстрее, чем обычный подход с даунсэмплингом mip-цепочки в несколько проходов.
Читать дальше →

Как я сгенерировал на Python тысячу лиц для своей игры

Reading time3 min
Views32K
На определённом этапе разработки своей игры я осознал, что мне нужна система диалогов с лицами-аватарами.

Поэтому я решил создать генератор лиц на основе знаменитой игры Papers, Please.


Генератор лиц Dukope (из Papers, Please)

Сбор данных


Я скачал примерно 50 портретов с pixabay.com (все изображения имеют лицензию CC и не требуют указания авторства).

Затем я вырезал фон каждого изображения в Photoshop (просто выбрал всё инструментом выделения многоугольника и нажал на Delete). В дальнейшем я планировал воспользоваться эффектом cutout , чтобы скрыть все недочёты.


Изображения с удалённым фоном
Читать дальше →

Эмуляторы SNES всего в нескольких пикселях от абсолютного совершенства

Reading time20 min
Views20K

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

В течение последних 15 лет как кодер эмулятора bsnes я пытался довести до совершенства эмуляцию Super Nintendo, но теперь мы столкнулись с последней проблемой: точным таймингом тактов видеопроцессоров SNES. Чтобы достичь этого завершающего этапа точности эмуляции, требуется помощь всего сообщества, и я надеюсь на вашу поддержку. Но для начала я расскажу, чего мы уже добились.

Текущее состояние


Сегодня ситуация с эмуляцией SNES очень хороша. Если не считать необычные периферийные устройства, которые сопротивляются эмуляции (например, клюшка для гольфа с датчиком света, велосипедный тренажёр и dial-up-модем, который в Японии использовали для ставок на конных скачкахJapan), все официально лицензированные игры для SNES полностью играбельны, и ни в одной игре нет очевидных проблем.

Эмуляция SNES стала такой точной, что мне даже пришлось разделить эмулятор на две версии: higan, которая стремится к абсолютной точности и соответствию документации железа, и bsnes, которая стремится к скорости, широким возможностям и простоте использования.
Читать дальше →

Реалистичный боевой ИИ для 2D-игры

Reading time6 min
Views14K
image

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

Окружение и ограничения


Игровое окружение состоит из полигонов. Большинство полигонов блокирует движение, область видимости и стрельбу, однако есть и «низкие» полигоны, только блокирующие движение. Окружение плотно заставлено препятствиями и укрытиями.

ИИ тоже ограничен несколькими техническими факторами. Самый важный из них: сервер, на котором выполняются боты, когда онлайн находится мало игроков, должен быстро работать на недорогом VPS как минимум при десяти ботах. Кроме того, нагрузка на ЦП должна оставаться достаточно низкой, чтобы можно было выполнять несколько инстансов сервера на одном VPS без превышения лимита ЦП, и не при этом вызвать санкций со стороны поставщика услуг VPS.

Миллион спрайтов при 120 с лишним fps

Reading time8 min
Views5.9K
image

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

Поэтому я форкнул репозиторий и решил проверить, можно ли использовать его в Academia. Я немного поэкспериментировал с ним, посмотрел, как он рендерит один спрайт, сотню, затем тысячи. Выяснилось, что он не совсем готов к использованию в нашей игре. В нём отсутствуют некоторые аспекты, например, сортировка спрайтов сзади вперёд. Я попытался написать хак этой функции. Когда я читал код, то осознал, что возможно стоит написать совершенно новую библиотеку, которую мы сможем использовать. Мне только нужно было разобраться, как он рендерит спрайты, а принцип я уже понял.
Читать дальше →

Как разработчикам Myst удалось уместить на одном CD-ROM целую вселенную

Reading time11 min
Views35K
image

Привет, я Рэнд Миллер, соавтор «Myst». Мы поставили перед собой задачу создать реальный мир «Myst», но болезненно ударились о реальные ограничения CD-ROM. Играми я начал заниматься ещё с начала старшей школы, и я уже не молод, то есть это было довольно давно. Игры, которые у меня тогда были на компьютере, непохожи на современные. Меня очень захватила игра Lunar Lander. Я помню её до сих пор. В ней не было графики. Это была строка текста на ЭЛТ-экране, сообщавшая мне, насколько далеко я был от лунной поверхности, насколько быстро я перемещался, сколько топлива осталось, а ещё вопросительный знак. Нужно было вводить количество топлива, которое вы хотите сжечь, нажимать на ввод, и так повторять, пока не упадёшь на поверхность.

В начале старшей школы друг из колледжа взял меня с собой в компьютерный центр Университета Нью-Мексико. Я увидел эту игру на экране, и это была настоящая магия. Для меня это была магия. И он сказал: «Есть и другие игры», и что можно самому делать игры. «Вот, ты пишешь программы, чтобы они делали это». Для меня это изменило всё, и с тех пор я захотел этим заниматься. Cyan была образована примерно в середине 80-х, и в то время нам казалось, что это очень многозначное название, поэтому мы можем заниматься чем угодно. У нас с моим братом Робином была идея голубого неба, и она нам понравилось, поэтому мы выбрали такое название.
Читать дальше →

Как демо Memories умещается в 256 байт

Reading time17 min
Views14K

Введение


Привет! Меня зовут «HellMood», а эта статья посвящена небольшой программе для MS DOS под названием «Memories». Эта программа имеет размер 256 байт, она выиграла в категории «PC 256 byte» соревнований демосцены «Revision» 2020 года, а также получила приз зрительских симпатий. Видео вывода программы можно посмотреть здесь, а видео с реакцией онлайн-аудитории и модераторов — здесь. Скачать релиз и оставить комментарии можно здесь. В этой статье будет представлен глубокий анализ программы, рассказано об исторических отсылках и этапах разработки. Статья выложена в sizecoding wiki. Она не только позволит вам понять внутреннее устройство «Memories», но и поможет самим создать нечто похожее. Изучите её! Если вы новичок в sizecoding-е (написании программ в рамках нужного размера) или в ассемблере x86, то рекомендуется начинать с основ этой wiki. Принципы понять легко, но с подробностями реализации разобраться бывает не так просто.

Краткий обзор


В этой статье мы будем говорить об отправленной на конкурс версии для DosBox (256 байт). В архиве также содержатся версии для FreeDos и Windows XP DOS, которые на момент написания поста работали не на всех компьютерах. Эти альтернативные версии были включены в архив как proof of concept, чтобы показать, что программа не только работает в эмуляторе. В категории «PC 256 bytes» соревнований «Revision» 2020 года можно было указать в качестве платформы «FreeDos» или «DosBox» (последняя в конкретной конфигурации). Как доказывают альтернативные версии, на самом деле можно модифицировать версию для DosBox так, чтобы она работала во FreeDos, MS DOS, WinXP и Win98, но статья будет не об этом.
Читать дальше →

Процедурная гидрология: динамическая симуляция рек и озёр

Reading time15 min
Views8.8K
Примечание: полный исходный код проекта выложен на Github [здесь]. В репозитории также содержится подробная информация о том, как читать и использовать код.

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

Я исследовал уже существующие методики процедурной генерации рек и озёр, но найденные результаты меня не устроили.

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

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

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

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

Анализ библиотеки ИИ ботов из Quake 3

Reading time4 min
Views7.2K

Изучение исходного кода ИИ уже выпущенных игр — превосходный способ изучения хитростей на реальных примерах. Quake 3 Arena — интересный образец, потому что код игры полностью выложен в открытый доступ (за исключением инструментов), а сама игра стала примером архитектуры движка ИИ на рубеже веков. В коде содержится полнофункциональный ИИ ботов для deathmatch, написанный на старом добром C; если вы понимаете синтаксис языка, изучать его на удивление просто. Наряду с простой архитектурой задач в коде присутствуют серьёзные технологии Area Awareness System (AAS), а также системы поиска пути (или маршрутизации).

Загрузка и установка исходного кода


Исходный код Quake 3 был открыт в 2005 году, поэтому мы можем свободно скачивать кодовую базу при условии соблюдения лицензии GPL. Однако если вы хотите запустить игру, вам понадобятся ассеты, не включённые в состав исходного кода. Можно воспользоваться кодом и ассетами Id Software:

  1. Скачайте полный исходный код Quake 3. Текущая версия имеет номер 1.32b и она совместима с последним патчем.
  2. Чтобы игра заработала со всеми необходимыми ресурсами, то можно использовать её полную версию.
  3. Также есть вероятность того, что можно будет запустить демо-уровни, но это зависит от версии скомпилированного движка. Не забудьте поместить исполняемые файлы в нужную папку.
Читать дальше →

Создание 1k/4k intro для Linux, часть 1

Reading time10 min
Views9.5K
«на русской сцене мы удивляем друг друга тем, что вообще что-то делаем», © manwe
(из статуса SCRIMERS на demoscene.ru/forum)

Пятиминутка мета: в этом тексте вам, котятки, предстоит прочитать о том, как потратить свое время совершенно неэффективно с точки зрения отношения размера полученного продукта к потраченным времени и усилиям.
Предположим, что мы хотим сделать что-нибудь эдакое, например, интру размером до 4кб, но мы нищеброды, и у нас нет денег на виндовс и видеокарту с шейдерами, поддерживающими ветвления. Или мы просто не хотим брать стандартный набор из apack/crinkler/sonant/4klang/боже-что-там-еще-есть, делать очередную «смотрите все! я тоже умею рэймарчинг дистанс филдс!» и теряться среди десятков-сотен таких же. Ну или же мы просто любим выпендриваться как попало в надежде, что девочки на нас наконец-то обратят внимание.

В общем, не важно. Пусть у нас просто есть какой-нибудь линукс со слабой видеокартой и вся юность впереди. Попробуем со всем этим теперь создать запускаемый файл размером не более, скажем, 1024 байт, который при запуске умудрялся бы каким-нибудь образом создавать и показывать пользователю что-нибудь (эдакое).



омг сколько текста

Information

Rating
Does not participate
Registered
Activity