Pull to refresh
2
0
Александр Коротаев @lekzd

User

Send message

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

Reading time6 min
Views13K
image

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

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


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

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

Проектирование пользовательского интерфейса Windows 95

Reading time19 min
Views44K
Три года назад мне попалась интересная научная статья сотрудника Microsoft Кента Салливана о процессе и результатах проектирования нового пользовательского интерфейса для Windows 95. С тех пор веб-страница исчезла — одна из причин, почему я такой цифровой Плюшкин.

Статья описывает некоторые общие проблемы оболочки Менеджера программ в Windows 3.1 и рассматривает варианты разработки отдельной оболочки для «новичков». Я склоняюсь к мнению, что она предположительно создавалась в духе программы At Ease от Apple, довольно популярной во времена System 7. Я хорошо помню, как мы запускали At Ease в начальной школе, так что детишкам не приходилось возиться с жёстким диском в Finder.

Итак, вот что Кент дословно написал в своей статье под названием «Пользовательский интерфейс Windows 95: конкретный пример проектирования функциональности» (The Windows 95 User Interface: A Case Study in Usability Engineering). Публикуем её, чтобы документ никогда не потерялся.
Читать дальше →
Total votes 45: ↑45 and ↓0+45
Comments137

Игры, в которых нужно писать код (часть 2)

Reading time3 min
Views59K


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

Total votes 64: ↑64 and ↓0+64
Comments33

Продвинутый Three.js: шейдерные материалы и постобработка

Reading time10 min
Views24K


В сети довольно много введений в основы работы с Three.js, но можно заметить нехватку материалов по более продвинутым темам. И одна из этих тем – это объединение шейдеров и сцены с трехмерными моделями. В глазах многих начинающих разработчиков это как будто несовместимые вещи из разных миров. Сегодня на простом примере “плазменной сферы” мы посмотрим, что такое ShaderMaterial и с чем его едят, а также что такое EffectComposer и как можно быстро сделать постобработку для отрендеренной сцены.

Total votes 19: ↑18 and ↓1+17
Comments2

Интро Newton Protocol: что можно уместить в 4 килобайта

Reading time8 min
Views21K
image

Недавно я участвовал соревнованиях демосцены Revision 2019 в категории «PC 4k intro», и моё интро выиграло первое место. Я занимался кодингом и графикой, а dixan сочинял музыку. Основное правило соревнования — необходимо создать исполняемый файл или веб-сайт, имеющий размер всего 4096 байта. Это означает, что всё приходится генерировать с помощью математики и алгоритмов; никаким другим способом не получится ужать изображения, видео и аудио в такой крошечный объём памяти. В этой статье я расскажу о конвейере рендеринга своего интро Newton Protocol. Ниже можно посмотреть готовый результат, или нажать сюда, чтобы посмотреть как оно выглядело вживую на Revision, или зайти на pouet, чтобы прокомментировать и скачать участвовавшее в конкурсе интро. О работах конкурентов и об исправлениях можно прочитать здесь.

Total votes 89: ↑89 and ↓0+89
Comments32

Wolfenstein 3D: трассировка лучей с помощью WebGL1

Reading time8 min
Views17K
image

После появления прошлым летом графических карт Nvidia RTX трассировка лучей (ray tracing) снова обрела былую популярность. За последние несколько месяцев мою ленту в Twitter заполнил бесконечный поток сравнений графики со включенным и отключенным RTX.

Полюбовавшись на такое количество красивых изображений, я захотел самостоятельно попробовать скомбинировать классический упреждающий рендерер (forward renderer) с трассировщиком лучей.

Страдая синдромом неприятия чужих разработок, я в результате создал собственный гибридный движок рендеринга на основе WebGL1. Поиграть с демо рендеринга уровня из Wolfenstein 3D со сферами (которые я использовал из-за трассировки лучей) можно здесь.
Читать дальше →
Total votes 50: ↑50 and ↓0+50
Comments14

JS-битва: как я написал свой eval()

Reading time21 min
Views16K
Вы можете помнить Александра Коротаева по браузерной версии «Героев Меча и Магии»: расшифровка его доклада о ней собрала на Хабре громадное количество просмотров. А теперь он сделал игру, ориентированную на программистов: играть в неё надо JS-кодом.

В этот раз на разработку ушли не годы, а недели, но без интересных челленджей всё равно не обошлось. Как сделать, чтобы игра была удобна даже разработчикам, ранее не трогавшим JavaScript? Как защититься от простых способов перехитрить игру?



В итоге Александр снова сделал доклад на HolyJS, а мы (организаторы конференции) снова подготовили для Хабра текстовую версию.
Читать дальше →
Total votes 45: ↑44 and ↓1+43
Comments29

Мой любимый файл в кодовой базе Chromium

Reading time6 min
Views87K
Код Хромиума весьма обширен, там каждому найдётся что-то по вкусу. А я вот решил рассказать о своём любимом файле в нём (а у вас есть такой?). Этот файл отражает всё: боль, разочарование, надежду, упорство, силу воли, ответственность за чужие провалы и самопожертвование. Я иногда читаю его и плачу и проникаюсь пониманием, какая же огромная часть айсберга скрыта под водой. Это, в общем, даже не файл с кодом. Это файл с конфигом, описывающим баги видеокарт, которые Хромиуму приходится обходить для нормального отображения своих страниц на разных платформах. Вот он: https://cs.chromium.org/chromium/src/gpu/config/gpu_driver_bug_list.json

О чём вообще идёт речь? Давайте вспомним, как работает браузер: вы набираете какой-то адрес в адресной строке, браузер загружает контент и отображает его. Чуть детальнее об этом рассказывает хорошая статья «What happens when you type google.com into your browser and press enter?» (и сразу несколько её переводов на Хабре). В ней одним из последних пунктов упоминается, мол, «а теперь, когда всё готово, отрисовываем картинку на экране». Ага, вот так берём и отрисовываем, конечно.
Читать дальше →
Total votes 186: ↑185 and ↓1+184
Comments179

Как мы в X-Ray х64 завозили

Reading time4 min
Views7.7K

Предисловие


Доброго времени суток, речь пойдёт о игровом движке X-Ray, а точнее о его форке X-Ray Oxygen В декабре 2016 года был опубликован проект X-Ray Oxygen. Тогда я разрабатывал его один и не мечтал о том, чем он стал на данный момент.

Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments20

Что такое Entity System Framework и зачем он нужен в геймдеве?

Reading time18 min
Views52K
На Хабре уже есть очень много интересных статей про создание игры с нуля, но мало статей, описывающих что делать, чтобы своя любимая поделка не превратилась во Франкенштейна и дошла до вменяемого состояния. Автор оригинальной статьи рассказывает, как эволюционировал код игрового движка от кучи хлама в основном цикле к продуманной, расширяемой архитектуре, использующей Entity Component System. В статье много кода, который почти весь часто повторяется — но я не стал его выбрасывать, поскольку с ним будет понятнее, какие изменения вносит автор и как это отражается на всей структуре. Статья рассчитана на новичков, вроде меня, которые уже настрочили несколько «гениальных» прототипов, но теперь не знают, как разобраться в их коде.
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments12

«Герои Меча и Магии» в браузере: долго, сложно и невыносимо интересно

Reading time22 min
Views104K
Как реализовать в браузере игру, на которой годы назад залипал без всякого браузера? С какими сложностями столкнёшься в процессе, и как их можно решить? И, наконец, зачем вообще это делать?

В декабре на конференции HolyJS Александр Коротаев (Tinkoff.ru) рассказал, как он сделал браузерную версию «Героев». Ранее уже появилась видеозапись доклада, а теперь для Хабра мы сделали ещё и текстовую версию. Кому удобнее видео — запускайте ролик, а кому текст — читайте его под катом:

Читать дальше →
Total votes 214: ↑210 and ↓4+206
Comments63

Каково это — создавать игру для Game Boy в 2017 году

Reading time10 min
Views18K
image

У всех была детская мечта. Лично я мечтал создать игру для моей первой консоли: Nintendo Game Boy. Сегодня моя мечта реализовалась — я выпустил первую игру для Game Boy на настоящем картридже: Sheep It Up!

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

  • Часть 1: использованные инструменты/технические сложности/сложности с графикой
  • Часть 2: ограничения звука/создание картриджей/отзывы игроков (эта часть пока пишется)
Читать дальше →
Total votes 48: ↑48 and ↓0+48
Comments15

Доделал игру, работающую на видеокарте

Reading time3 min
Views87K
Наконец-то я доделал игру, которая работает на видеокарте. Она несколько месяцев повисела в раннем доступе на стиме, и теперь я её окончательно выпустил. Основная фишка игры в том, что она представляет собой физическую симуляцию, которая выполняется на графическом процессоре. Основной код игры — это огромный compute shader, 6 тысяч строк на HLSL. Десятки тысяч взаимодействующих частиц обрабатываются параллельно, и выходит довольно быстро. Всё в игре сделано из этих частиц. Вот несколько гифок о том, как это работает:

image
Читать дальше →
Total votes 287: ↑276 and ↓11+265
Comments187

Постмортем Shadow Tactics: Blades of the Shogun

Reading time22 min
Views11K
image


В прошлом году немецкий разработчик Mimimi Productions привлёк большое внимание к своей игре в жанре тактического стелса реального времени Shadow Tactics: Blades of the Shogun, вдохновлённой такими старыми проектами, как Desperados и Commandos.

Shadow Tactics имеет интригующий дизайн (см. эту статью о механике динамического распознавания). Она стала огромным успехом для Mimimi — несмотря на то, что в процессе выпуска компания едва не развалилась. Подробнее о том, как это произошло (и о том, какие уроки извлекли разработчики) можно прочитать в этом честном постмортеме игры, написанном коллегами-основателями Mimimi Иоганнесом Ротом и Домиником Абе.

Около года назад Mimimi была ещё мало кому известна. Наша предыдущая трёхмерная экшн-адвенчура The Last Tinker: City of Colors показала себя хорошо, но не собрала большой аудитории.

К декабрю 2016 года наши самые большие мечты осуществились: Shadow Tactics: Blades of the Shogun, наше признание в любви к Commandos и Desperados, наконец вышла и завоевала признание игроков и прессы.

В то же самое время мы были почти банкротами и уже уволили бо́льшую часть команды. У нас уже не было денег, чтобы пережить ещё один месяц.

В этом постмортеме два основателя Mimimi Доминик Абе (креативный директор) и Иоганнес Рот (управляющий директор) подробно расскажут о том, в чём они были правы, а в чём (ужасно) ошиблись.
Total votes 39: ↑38 and ↓1+37
Comments14

Ретроспектива: Heroes of Might & Magic III

Reading time23 min
Views73K
image

Heroes of Might & Magic III через полтора года исполняется 20 лет. Игра, покорившая не одно поколение своим волшебством, не потеряла своей привлекательности и сегодня — многие называют её «новыми шахматами», утверждая, что превзойти «магическую» формулу третьих «Героев» с тех пор так никому и не удалось.

Сегодня вашему вниманию предлагается рассказ о том, как появились на свет HoMM III и её наследники. Учитывая, что знания, проливающие свет на события тех дней, всегда могут кануть в Лету, и их не спасет даже The Internet Archive (что уже произошло с некоторыми интервью) — а сама серия, по слухам, волей Ubisoft отправлена в глубокую «заморозку» из-за неважных финансовых показателей последней части франшизы — лучше сделать это сегодня, чем завтра.

Мой рассказ является реконструкцией событий, происходивших два десятилетия назад, и в его основе лежат десятки источников — поэтому он может содержать некоторые неточности; к счастью, история пока сохранила для нас достаточно сведений про то, как New World Computing и 3DO смогли произвести на свет игру, удавшуюся настолько, что мы годы спустя продолжаем в неё играть. Узнаете вы и про то, что произошло после выпуска третьих «Героев».
Когда всё закончится, ты забудешь о том, как тяжело тебе было, и захочешь повторить это снова.
Джон Ван Канегем, «Напутствие тем, кто переживает кранч»

Дисклеймер: каждый раз, когда речь заходит про «Героев», обязательно находится человек, который сразу же идёт их устанавливать. Вот почему лучшего дня для публикации этого поста, чем пятница, попросту не существует — чтобы к утру понедельника абсолютно все успели прийти в себя.
Total votes 60: ↑60 and ↓0+60
Comments51

«Блендер на 28 докладов, каждый из которых равен десяти статьям» — интервью с Программным комитетом HolyJS 2017 Moscow

Reading time18 min
Views3.5K

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


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


Это происходит само собой, просто по статистике? Если набрать достаточное количество докладов, всё получится автомагически? Как бы не так. Всё подстроено. Как программу на JS проектируют архитекторы, так и за каждой конференцией стоит команда отличных инженеров, которые проектируют её специальным образом. Они проектируют не только структуру, но и вместе с докладчиками «отлаживают» каждый доклад, строчка за строчкой, раз за разом. Проводят кросс-ревью, оценку, починку багов. Пишутся специальные инструменты и выкладываются на GitHub. И так до тех пор, пока не скомпилируется хорошо работающая, безбажная конференция.


Наверное, каждый иногда хотел пообщаться с разработчиками тех инструментов, которыми мы все пользуемся. К примеру, кто хотел бы сказать пару ласковых создателям React или Node.js? А кто хотел бы узнать от них парочку тайн о внутренней кухне проекта?


Это интервью — с разработчиками конференции HolyJS 2017 Moscow, с её Программным комитетом. Мы будем обсуждать:


  • какие сложности возникают при разработке программы конференции и как их побеждают;
  • кто допущен к сакральному процессу отбора докладов и нужно ли для этого быть богом JavaScript;
  • совместима ли работа в ПК с обычной жизнью;
  • какие доклады стоит послушать и на какие ни в коем случае не стоит приходить хипстерам;
  • кучу рандомных интересных фактов.

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

Как работает видеопроцессор

Reading time29 min
Views72K
image

[Прим. пер.: оригинал статьи называется GPU Performance for Game Artists, но, как мне кажется, она будет полезной для всех, кто хочет иметь общее представление о работе видеопроцессора]

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

Мы надеемся, что художники создадут ресурсы, которые не только хорошо выглядят, но и будут эффективны при рендеринге. Если художники немного больше узнают о том, что происходит внутри видеопроцессора, это может оказать большое влияние на частоту кадров игры. Если вы художник и хотите понять, почему для производительности важны такие аспекты, как вызовы отрисовки (draw calls), уровни детализации (LOD) и MIP-текстуры, то прочитайте эту статью. Чтобы учитывать то влияние, которое имеют ваши графические ресурсы на производительность игры, вы должны знать, как полигональные сетки попадают из 3D-редактора на игровой экран. Это значит, что вам нужно понять работу видеопроцессора, микросхемы, управляющей графической картой и несущей ответственность за трёхмерный рендеринг в реальном времени. Вооружённые этим знанием, мы рассмотрим наиболее частые проблемы с производительностью, разберём, почему они являются проблемой, и объясним, как с ними справиться.
Читать дальше →
Total votes 54: ↑53 and ↓1+52
Comments12

Как я браузерный 3D-футбол писала. Часть 2

Reading time12 min
Views8.7K
Привет, Хабр!

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



На всякий случай ссылка на первую часть — Как я браузерный 3D-футбол писала. Часть 1
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments7

Ищем сокровища в исходном коде Aladdin

Reading time34 min
Views35K
image


На момент своего выхода в 1993 году Disney’s Aladdin на Sega Genesis (или Mega Drive, если в начале 90-х вы жили с другой стороны лужи) была удивительно красивой игрой.

Благодаря использованию технологии, которая позже стала известной, как Digicel, правильному выбору промежуточного ПО и впечатляющему таланту авторов Aladdin смогла выделиться на фоне других игр Genesis той эпохи. Красивая нарисованная от руки графика Aladdin установила новую планку качества для того, чего можно добиться на «железе» Genesis. Это стало возможным не с помощью особенно интересных растровых эффектов или тайных аппаратных приёмов, а благодаря сочетанию эффектной графики, дизайна и правильно выбранной технологии.

Эта уникальная смесь графики и технологий стала основной причиной, позволившей игре Aladdin занять особое место в истории видеоигр. Поэтому мне так радостно было найти архив с полным исходным кодом игры в коллекции Video Game History Foundation! Кроме бесценного источника данных, этот архив является для меня отличной возможностью создать стандарты для сохранения исходного кода, отслеживания зависимостей инструментов и многих других процессо-ориентированных аспектов в VGHF.
Total votes 109: ↑107 and ↓2+105
Comments14

Использование SVG в качестве Placeholder’a

Reading time7 min
Views38K
image

Генерация SVG из изображений может использоваться для Placeholder’ов.

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

В последние дни я сталкивался с некоторыми методами загрузки, которые используют SVG, и я хотел бы описать их в этом посте.

В этом посте мы рассмотрим следующие темы:

  • Обзор различных типов Placeholder’ов
  • Placeholder на основе SVG (контуры, фигуры и силуэты)
  • Автоматизация процесса.

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

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity