Pull to refresh
14
0
Денис Лазарев @0xff80ff

Программист

Send message

Как я научил ИИ играть в Tetris для NES. Часть 2: ИИ

Reading time39 min
Views7.2K
image

Первая часть (анализ кода) находится здесь: https://habr.com/post/420725/.

Алгоритм


Описание


Алгоритм непрерывно выполняет следующие шаги:

  1. Ждёт, пока не создастся новое тетримино.
  2. Проверяет тип нового созданного тетримино, тип следующего тетримино (фигура в поле предпросмотра) и содержимое игрового поля.
  3. Исследует все возможные способы добавления двух тетримино на игровое поле и оценивает каждую вероятность.
  4. Перемещает новое созданное тетримино, чтобы оно совпадало с местом наилучшенней обнаруженной вероятности.

Каждый из этих этапов подробно описан ниже.

Поиск блокировки


Рассмотрим упрощённую версию Tetris, в которой фигуры не падают автоматически. Единственный способ спустить фигуру вниз — это мягкий спуск. Убрав из игры тайминги, мы можем полностью описать состояние активного тетримино его позицией и ориентацией. Фигура имеет известное место изначального создания, а для преобразования из одного состояния в другое используются следующие операции:

  • Перемещение на один шаг вниз
  • Перемещение на один шаг влево
  • Перемещение на один шаг вправо
  • Поворот на один шаг против часовой стрелки
  • Поворот на один шаг по часовой стрелке
Total votes 29: ↑27 and ↓2+25
Comments3

Рендерим облака на мобильных девайсах

Reading time3 min
Views21K
3 года назад художник спросил меня:
— Слушай, а можно в нашу мобильную игру добавить красивые облачка?
— Нет, это абсолютно невозможно, у нас постоянно вращается камера, так что билборды будут смотреться очень фальшиво даже если на них добавить карты нормалей, а другие способы…
*художник погружается в летаргический сон*

Для меня нет большего удовольствия, чем выяснять, что я был неправ.



Про фотореалистичный рендеринг облаков написано много статей, но если хочется рисовать облака на смартфоне, приходится придумывать кучу всяких хаков, упрощений и допущений.
Под катом подробное описание рендеринга облаков на мобильных и много html5 гифок.
Поехали!
Total votes 73: ↑71 and ↓2+69
Comments20

Как добиться того, чтобы обучение в играх не раздражало

Reading time10 min
Views14K
image

Когда я пишу статьи об обучении в видеоиграх, вокруг них всегда начинаются яростные обсуждения. Люди неизбежно начинают перечисляют все неудачные фрагменты обучения, неуклюжие техники и провалившиеся эксперименты как примеры того, что «обучение — это плохо, лучше бы его вообще не было!».

Если поискать на сайте tvtropes.org (это база данных клише поп-культуры) слово «tutorial», то найдётся больше десяти разных тропов, связанных с тем, что люди ненавидят в процессе обучения видеоигр. Для сравнения: я нашёл всего два обсуждения того, как сильно пользователи ненавидят скачиваемый контент.

Самое печальное в этом то, что когда я пишу об обучении, я имею в виду не такое обучение.

Из-за этого заблуждения я не могу сообщить об обучении то, что хочу.

Когда я говорю об обучении в видеоиграх, то стремлюсь свести всё к очень простой идее, которая, как мне кажется, отлично реализована в лучших играх: если создать очень умный дизайн уровней, то можно обучать игроков просто… дав им играть.
Читать дальше →
Total votes 16: ↑16 and ↓0+16
Comments15

Как сделать хорошее видео для страницы приложения в App Store

Reading time7 min
Views27K
Привет, Хабр!

Меня зовут Алёна, я работаю в студии motion-графики. Недавно приложение с нашим роликом успешно прошло модерацию, так что хочу поделиться опытом, как сделать видео для страницы в App Store и не облажаться: что и как может сделать сам разработчик, что лучше отдать на аутсорс, а от каких фишек лучше вообще отказаться.


Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments25

Готовим Physically Based Rendering + Image-based Lighting. Теория+практика. Шаг за шагом

Reading time24 min
Views36K
Хей, привет. 2017 год на дворе. Даже простенькие мобильные и браузерные приложения начинают потихоньку рисовать физически корректное освещение. Интернет пестрит кучей статей и готовых шейдеров. И кажется, что это должно быть так просто тоже обмазаться PBR… Или нет?

В действительности же честный PBR сделать достаточно сложно, потому что легко достичь похожего результата, но сложно правильного. И в интернете полно статей, которые делают именно похожий результат, вместо правильного. Отделить мух от котлет в этом хаосе становится сложно.
Поэтому цель статьи не только разобраться, что же такое PBR и как он работает, но и научиться писать его. Как отлаживать, куда смотреть, и какие ошибки типично можно допустить.
Статья рассчитана на людей, которые в достаточной мере уже знают hlsl и неплохо знакомы с линейной алгеброй, и можете написать свой простейший неPBR Phong свет. В общем я постараюсь как можно проще объяснить, но рассчитываю на то, что некоторый опыт работы с шейдерами вы уже имеете.
Читать дальше →
Total votes 46: ↑46 and ↓0+46
Comments11

Unity 5 uNet – новая сетевая подсистема. Этюд по авторитарной архитектуре

Reading time8 min
Views38K
image

Пример реализации сетевой архитектуры в Unity3D с авторитарным сервером


В виду того, что:
а) старые сетевые принципы Unity3D, как говорится, устарели;
б) я всё равно не понимал, как у меня заработало то колдунство.
в) назойливо появился новый метод и начал прыгать в глаза при каждом запуске Unity.
я решил, что надо в сетевом обмене разобраться плотнее и устранить область “here be dragons”.
Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments7

Мультиплеер в быстрых играх (части I, II)

Reading time7 min
Views141K


  1. Части I, II (синглплеер с авторитарным сервером)
  2. Часть III (Появление врага)
  3. Часть IV (Хэдшот!)


Предлагаю вашему вниманию перевод статьи Fast-Paced Multiplayer (Part I): Introduction.

Разработка игры — само по себе непростое занятие. Но мультиплеерные игры создают совершенно новые проблемы, требующие разрешения. Забавно, что у наших проблем всего две причины: человеческая натура и законы физики. Законы физики привнесут проблемы из области теории относительности, а человеческая натура не даст нам доверять сообщениям с клиента.
Читать дальше →
Total votes 136: ↑132 and ↓4+128
Comments109

Техники захвата внимания пользователя — от фокусника и специалиста по вопросам дизайнерской этики в Google

Reading time13 min
Views62K
Я эксперт в области того, как в технологиях используются слабые места нашей психики. Вот почему я проработал последние три года как специалист Google по этике в дизайне. Моя работа состояла в проектировании ПО таким образом, чтобы защитить умы миллиарда людей от «уловок».

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

Как технология эксплуатирует слабые места нашего разума?


Я научился так думать, когда был фокусником. Фокусники всегда начинают с поиска слепых пятен, краев, уязвимостей и пределов восприятия, так что они способны влиять на поведение людей, а последние даже не осознают этого. После того, как вы узнаете, как правильно нажимать на эти людские «кнопки», вы можете начать играть на них, будто на фортепиано.

image
Это я, творящий «волшебство» при помощи ловкости рук, на дне рождения моей матери

Именно это и делают дизайнеры с вашим разумом. Они играют на психологических уязвимостях (сознательно или бессознательно) для того, чтобы захватить ваше внимание.

И я хочу показать вам, как они это делают.
Читать дальше →
Total votes 58: ↑49 and ↓9+40
Comments60

15 нестандартных инструментов продвижения приложения

Reading time23 min
Views34K
Ненавижу статьи про продвижение мобильных приложений. Потому что в 99% процентах из них будет одна вода, избитые, всем известные инструменты, без живых цифр и примеров. Не для этого я захожу на Хабр.

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

Запасайтесь чаем и добро пожаловать под кат

Читать дальше →
Total votes 35: ↑28 and ↓7+21
Comments11

50 типичных ошибок проектирования игровой камеры (часть 1)

Reading time13 min
Views38K
image

Эта статья — перевод выступления Джона Нески (John Nesky) с GDC14.

Вторая часть тут

Джон — один из разработчиков в компании TGC, известной своей игрой Journey. Он начал работать там в роли гейм-дизайнера, но впоследствии увлёкся настройкой работы камеры в Journey, поэтому теперь его должность звучит как Feel Engineer.


Вряд ли вы найдёте какое-нибудь сообщество разработчиков, специализирующихся на игровых камерах. И есть, пожалуй, всего одна книга на эту тему — Real Time Cameras за авторством Марка Хэйг-Хатчинсона (Mark Haigh-Hutchinson). Но хотелось бы глубже изучить эту тему и узнать, как люди решают те или иные трудности.

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

Поэтому для того чтобы поговорить на тему игровых камер, нужно смириться с ошибками. И в этой статье я расскажу, что может пойти не так, когда вы начнёте проектировать поведение камеры в вашей игре.
Читать дальше →
Total votes 37: ↑35 and ↓2+33
Comments8

Открыт новый вид пятиугольников, покрывающих плоскость

Reading time2 min
Views105K


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

Это всего 15-й вид таких пятиугольников и первый, открытый за последние 30 лет.
Читать дальше →
Total votes 84: ↑78 and ↓6+72
Comments76

Как собрать квадрокоптер 250-го масштаба

Reading time3 min
Views64K
Уже больше года занимаюсь RC-моделями, много часов налетал на игрушках и не меньше на серьёзном коптере: 450-ке. Загорелся желанием построить «малыша» для быстрых полётов.

Забегая вперед, покажу их в сравнении:



Постараюсь писать понятным всем языком.
Читать дальше →
Total votes 20: ↑19 and ↓1+18
Comments16

Оптическая компенсация

Reading time3 min
Views76K


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

Такой подход казался мне логичным, но он оказался неверным.

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

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

Давайте взглянем на небольшое количество показательных примеров.
Читать дальше →
Total votes 66: ↑63 and ↓3+60
Comments29

Time-lapse видео из фотографий, находящихся в общем доступе

Reading time1 min
Views11K


Многие места и объекты фотографируются различными людьми в разное время. Это могут быть архитектурные объекты, памятники, заповедники, различные природные объекты. Ту же Эйфелеву башню фотографируют ежесекундно десятки раз. Команда исследователей из Google и Вашингтонского университета решила проверить возможность составления Time-lapse видео из подобных фотографий, которые находятся в общем доступе.

Разработчики искали фото на таких сервисах, как Flickr, Picasa и некоторых других сайтах. Естественно, было обнаружено большое количество снимков, о которых говорилось выше. Но на многих из них был различный ракурс, разное освещение, цветовая гамма. Поэтому команде пришлось искать способ унификации найденных снимков при помощи коррекции в графическом редакторе. И такой способ был разработан, результаты его впечатляют.
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments9

Unity3d: эксперименты с Social Interface

Reading time10 min
Views24K
Современную мобильную игру трудно представить без социальной интеграции, общих таблиц рекордов (leaderboards) и достижений (achievements). Дабы не отставать от тенденций, решил интегрировать Game Center и Play Services для iOS и Android версий моей игры.

Так как я разрабатываю игру в свободное время в качестве хобби, то мысли о покупке плагинов, например, prime31, были отброшены сразу. Выбор пал на интерфейс Social, который входит в состав Unity. Вокруг этого пакета чувствуется интрига: практическое отсутствие справочной информации наталкивает на две мысли: либо интерфейс очень прост, либо не пригоден к использованию. Итак, пришло время в этом разобраться.
Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments2

Режимы смешивания в Unity

Reading time9 min
Views48K
Многие наверняка слышали о режимах смешивания (blend modes), которые присутствуют в большинстве популярных программ для работы с изображениями и видео. Там это — важный инструмент создания контента, давно уже ставший неотъемлемой их частью.

А что же в играх?

Допустим, появилась необходимость использовать Color Dodge смешивание для системы частиц или UI-художник сделал красивую графику для игрового интерфейса, но некоторые его элементы используют какой-нибудь Soft Light. А может, вам понадобилось подвергнуть трёхмерный объект Divide-смешиванию, чтобы получить эффект прямиком из кинокартин Линча?



В данной статье мы рассмотрим принцип работы популярных режимов смешивания и постараемся максимально точно воссоздать их эффект на игровом движке Unity.
Читать дальше →
Total votes 33: ↑30 and ↓3+27
Comments11

«Собери 3 сердца, 3 черепа и 3 меча одним сдвигом», или как мы делали игру

Reading time8 min
Views22K
Статья будет представлять собой описание вещей, которые мы сами не знали до начала разработки, и которыми хотелось бы поделиться с начинающими и не очень разработчиками. На данный момент у нас 200 активных игроков в день, каждый день добавляется еще от 10 до 50, всего зарегистрировано около 5 тысяч. За все время игра принесла порядка 1000$.

О чем игра


Сначала мы решили портировать БК (одна из первых браузерных MMORPG) на телефон, но в процессе идея эволюционировала. Закончили match-3 игрой с элементами RPG и возможностью PvP. В общем, смесь «БК», «Candy Crush» и «Небеса». Игрок воюет с монстрами, развивается, делает квесты, покупает вещи и свитки магии. Бой проходит в поочередном режиме в стиле match-3 с разными кристаллами — лечение, яд, усиление и т.д. Главное новшество — бои с людьми, можно драться со случайными противниками или добавлять друзей и драться с ними.


Читать дальше →
Total votes 26: ↑21 and ↓5+16
Comments26

Для кого эта игрушка или как определить целевую аудиторию

Reading time5 min
Views70K
Многие разработчики затрудняются ответить на вопрос “для кого вы это создаете?”. Как показывают опросы и богатый личный опыт в большинстве своем ответы на подобные вопросы звучат слишком расплывчато или вообще являются догадками.



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

С расцветом мобильного рынка значительно выросли масштабы игровой аудитории, что привело к еще большему разделению игроков на категории. Чаще всего игроков разделяют на казуальных, мидкорных и хардкорных.
Надеть кольцо всевластия
Total votes 21: ↑18 and ↓3+15
Comments55

Когнитивное сопротивление правил и инструкций

Reading time8 min
Views47K


У нас в университете было три преподавателя матанализа и аналитической геометрии. Первая читала нам учебник на лекциях и люто всех ненавидела. Второй доказывал всё сам и объяснял, что делает. Было весело, потому что иногда мы заходили в тупик и возвращались. Третий до кучи рассказывал байки и практические задачи на то, что объяснял. Угадайте, у кого средние результаты группы были лучше.

Я к тому, что в нашем мире любое чтение инструкции — это вынужденная мера. И если уж пользователю нужно что-то прочесть и осознать, лучше подать информацию быстро, понятно и в привязке к реальному миру.

Расскажу, как мы упрощаем понимание правил и инструкций к настольным играм. В целом, тот же набор механик подходит для улучшения ряда интерфейсов, практически любых технических текстов и вообще вещей, где разум инженера-архитектора встречается с разумом экзогенного пользователя.
Читать дальше →
Total votes 85: ↑82 and ↓3+79
Comments63

Как происходит рендеринг кадра видеоигры

Reading time5 min
Views65K
Deus Ex Human Revolution — это компьютерная игра 2011 года, которая является более успешным продолжением оригинальной Deus Ex, чем Invisible War. Но этот пост не о качестве игры, а о демонстрации её технических принципов. Адриан Курреж провёл несколько часов за реверс-инжинирингом, пытаясь понять с помощью инструмента Renderdoc, как происходит обработка каждого из кадров Human Revolution. Затем Адриан изложил результаты в своём блоге.
Осторожно, трафик
Total votes 101: ↑98 and ↓3+95
Comments8

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity