Pull to refresh
0
0
Send message

Обзор техник реализации игрового ИИ

Reading time55 min
Views56K
image

Введение


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

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

Что же такое «игровой ИИ»?


Игровой ИИ в основном занимается выбором действий сущности в зависимости от текущих условий. В традиционной литературе по ИИ называет это управлением "интеллектуальными агентами". Агентом обычно является персонаж игры, но это может быть и машина, робот или даже нечто более абстрактное — целая группа сущностей, страна или цивилизация. В любом случае это объект, следящий за своим окружением, принимающий на основании него решения и действующий в соответствии с этими решениями. Иногда это называют циклом «восприятие-мышление-действие» (Sense/Think/Act):

  • Восприятие: агент распознаёт — или ему сообщают — информацию об окружении, которая может влиять на его поведение (например, находящиеся поблизости опасности, собираемые предметы, важные точки и так далее)
  • Мышление: агент принимает решение о том, как поступить в ответ (например, решает, достаточно ли безопасно собрать предметы, стоит ли ему сражаться или лучше сначала спрятаться)
  • Действие: агент выполняет действия для реализации своих решений (например, начинает двигаться по маршруту к врагу или к предмету, и так далее)
  • … затем из-за действий персонажей ситуация изменяется, поэтому цикл должен повториться с новыми данными.
Читать дальше →
Total votes 67: ↑66 and ↓1+65
Comments15

Зацените: сделал стол

Reading time6 min
Views145K


TL;DR В статье описывается мой опыт постройки стола c нуля из фанеры. От проектирования до сборки.

Я очень долго страдал от плохих столов. Все они неудобные, плохого качества, маленькие и, самое главное, ШАТКИЕ. Более-менее приличные столы стоили тысячи долларов. В итоге я решил изготовить стол самостоятельно.

Основные требования к столу:

  • Устойчивость! Предметы на столе не должны трястись, если резко положить руки на стол или оттолкнуться от него. Мой стол весит ~120кг. С его края можно делать сальтухи, при этом на другом конце паять SMD компоненты.
  • Ширина и глубина столешницы. Столы шириной 60 см — это унижение. Мне нужно иметь запас по глубине, чтобы можно было отодвинуть ноутбук вперед, и при этом получить достаточное рабочее пространство.
  • Вместительность. Мне нужны полки, чтобы разместить там оборудование: паяльники, лабораторный блок питания, осциллограф, аудио усилитель и т.д. При этом полки должны быть так же устойчивы, как и стол.
  • Цена. Я не готов выложить за стол несколько тысяч долларов. Мой стол обошелся в ~$300 с учётом покупки всего инструмента для сборки и покраски.
Total votes 261: ↑250 and ↓11+239
Comments559

Магия H.264

Reading time8 min
Views102K

H.264 — стандарт сжатия видео. И он вездесущ, его используют для сжатия видео в интернете, на Blu-ray, телефонах, камерах наблюдения, дронах, везде. Все сейчас используют H.264.

Нельзя не отметить технологичность H.264. Он появился в результате 30-ти с лишним лет работы с одной единственной целью: уменьшение необходимой пропускной способности канала для передачи качественного видео.

С технической точки зрения это очень интересно. В статье будут поверхностно описаны подробности работы некоторых механизмов сжатия, я постараюсь не наскучить с деталями. К тому же, стоит отметить, что большинство изложенных ниже технологий справедливы для сжатия видео в целом, а не только для H.264.
Читать дальше →
Total votes 72: ↑68 and ↓4+64
Comments38

Нам обещают видео в реальном времени без фризов и дерганий

Reading time3 min
Views25K

Каждый раз, запуская Skype, Zoom или Hangouts, я с интересом жду свежую порцию косяков с видео и звуком. Технологии редко меня разочаровывают: квакание, фоновые шумы, пропадание голоса, распадение видео на «квадратики», замороженные кадры и другие радости видеоконференций преследуют видеозвонки, сколько я себя помню. Интерес во многом профессиональный: кроме программируемой телефонии для обычных телефонов, веб-страниц и мобильных приложений, мы в Voximplant отгружаем разработчикам видео. Хочется Full HD, в реальном времени, без фризов, в любом браузере и конференция человек на 50. Что интересно, в лабораторных условиях оно именно так и работает. А вот в каком-нибудь парке на 3G видеоконсультация с доктором может превратиться в пошаговую стратегию: пакеты-то теряются! Современный стек технологий пока не позволяет на равных бороться с «мигающим» интернетом, но исследования постоянно ведутся. Под катом — адаптированный для Хабра перевод про Salsify: сплава видеокодека и сетевого протокола, минимизирующего проблемы при передаче видео в реальном времени.
Читать дальше →
Total votes 60: ↑59 and ↓1+58
Comments119

80% касс самообслуживания под угрозой

Reading time2 min
Views70K
С малых лет всегда интересовало тестирование, особенно в области безопасности, но кстати тестировщиком я так и не стал, но иногда люблю потыкать чужие автоматы и поискать уязвимости.

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

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

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

Насколько это безопасно?
Читать дальше →
Total votes 164: ↑155 and ↓9+146
Comments356

Корпоративный мерч с человеческим UI

Reading time8 min
Views20K


Меня зовут Александр и я работаю бывшим разработчиком под Windows Phone в 2ГИС. Однажды я подошел к Кириллу, руководителю сервиса мобильных приложений, и спросил: «Скажи мне, Кирилл, руководитель сервиса мобильных приложений, что нужно сделать, чтобы от лица компании 2ГИС своим коллегам корпоративный мерч подарить?» Кирилл ответил, что 2ГИС — бирюзовая компания, а значит нужно проявить инициативу. Под катом — продуктовая история, корпоративные футболки, дух стартапа, проявление инициативы, много картинок и ни одного микросервиса.
Как это было
Total votes 70: ↑69 and ↓1+68
Comments20

Реализация навигации в Android приложениях с помощью Navigation Architecture Component

Reading time20 min
Views97K

image


От переводчика


Здравствуйте, хабрчане. Это перевод статьи-документации к новой технологии Navigation для Android-разработчиков. Технология сейчас находится в стадии разработки, но уже доступна для использования и очень даже работает в превью версии Android Studio 3.2 и выше. Я уже опробовал её в действии и могу сказать что меня она впечатлила. Наконец-то осуществление смены экранов перестало быть чем-то сложным, особенно если используется передача данных от одного экрана к другому. Собственно, перевод я делаю для того чтобы больше русскоязычных разработчиков обратило внимание на технологию, и чтобы упростить её изучение.
Если заметите существенные ошибки или неточности, прошу сообщать в комментариях.

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

Как работает JS: технология Shadow DOM и веб-компоненты

Reading time14 min
Views42K
[Советуем почитать] Другие 19 частей цикла
Часть 1: Обзор движка, механизмов времени выполнения, стека вызовов
Часть 2: О внутреннем устройстве V8 и оптимизации кода
Часть 3: Управление памятью, четыре вида утечек памяти и борьба с ними
Часть 4: Цикл событий, асинхронность и пять способов улучшения кода с помощью async / await
Часть 5: WebSocket и HTTP/2+SSE. Что выбрать?
Часть 6: Особенности и сфера применения WebAssembly
Часть 7: Веб-воркеры и пять сценариев их использования
Часть 8: Сервис-воркеры
Часть 9: Веб push-уведомления
Часть 10: Отслеживание изменений в DOM с помощью MutationObserver
Часть 11: Движки рендеринга веб-страниц и советы по оптимизации их производительности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 12: Сетевая подсистема браузеров, оптимизация её производительности и безопасности
Часть 13: Анимация средствами CSS и JavaScript
Часть 14: Как работает JS: абстрактные синтаксические деревья, парсинг и его оптимизация
Часть 15: Как работает JS: классы и наследование, транспиляция в Babel и TypeScript
Часть 16: Как работает JS: системы хранения данных
Часть 17: Как работает JS: технология Shadow DOM и веб-компоненты
Часть 18: Как работает JS: WebRTC и механизмы P2P-коммуникаций
Часть 19: Как работает JS: пользовательские элементы

Сегодня, в переводе 17 части материалов, посвящённых особенностям всего, что так или иначе связано с JavaScript, речь пойдёт о веб-компонентах и о различных стандартах, которые направлены на работу с ними. Особое внимание здесь будет уделено технологии Shadow DOM.


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

Простые, но неочевидные, советы по подготовке доклада на крутую конференцию

Reading time7 min
Views15K
В этом году мы, как никогда раньше, основательно подходим к работе над программой AppsConf — конференции для разработчиков мобильных приложений. Во-первых, у нас большой и классный программный комитет. Серьезно, чтобы в итоге отобрать около 60 докладов, 20 крутых профессионалов во всех мыслимых областях мобильной разработки работают с заявками уже с апреля месяца. Через их руки (глаза и уши на созвонах) уже прошло более 70 докладов, на основе которых сформировались некоторые советы о том, что для выступления хорошо, а что — плохо.

Советы эти естественно не связаны именно с тематикой конференции, а относятся к любому выступлению от специалиста для специалистов.

Рекомендую к прочтению даже тем, кто стабильно попадает в топ докладчиков, и особенно тем, кто туда стремится. Заодно и познакомимся с некоторыми членами Программного комитета.
Читать дальше →
Total votes 47: ↑42 and ↓5+37
Comments7

Как мы научились подключать китайские камеры за 1000р к облаку. Без регистраторов и SMS (и сэкономили миллионы долларов)

Reading time7 min
Views258K

Всем привет!


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



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


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


Для этого необходимо, чтобы на камере был установлен модуль ПО работающий с облаком. Однако, если говорить про дешевые камеры, то у них очень ограничены аппаратные ресурсы, которые почти на 100% занимает родная прошивка вендора камеры, а ресурсов необходимых для облачного плагина — нет. Этой проблеме разработчики из ivideon посвятили статью, в которой говорится почему они не могут установить плагин на дешевые камеры. Как итог, минимальная цена камеры — 5000р ($80 долларов) и миллионы потраченных денег на оборудование.


Мы эту проблему успешно решили. Если интересно как — велком под кат

Читать дальше →
Total votes 103: ↑100 and ↓3+97
Comments153

Пульсация экранов телевизоров

Reading time3 min
Views132K
У подавляющего большинства современных телевизоров экраны мерцают, причём уровень пульсации составляет 100% (экран полностью гаснет и загорается). Это может приводить к усталости глаз, головным болям и обострению нервных заболеваний.


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

Законы рефлексии в Gо

Reading time9 min
Views45K
Привет, Хабр! Представляю вашему вниманию перевод статьи «The Laws of Reflection» от создателя языка.

Рефлексия — способность программы исследовать собственную структуру, в особенности через типы. Это форма метапрограммирования и отличный источник путаницы.
В Go рефлексия широко используется, например, в пакетах test и fmt. В этой статье попытаемся избавиться от «магии», объяснив, как рефлексия работает в Go.
Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments10

GraphQL для платформ компании InterSystems

Reading time4 min
Views3.9K


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


В этой статье я расскажу как вы можете использовать GraphQL в своих проектах на технологиях InterSystems.

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

DevTube — новый open source-агрегатор видеоматериалов для разработчиков

Reading time3 min
Views17K
Сегодня ночью два разработчика из Риги, Андрей Адамович и Эдуард Сизов опубликовали на GitHub свой open source-проект агрегатора с видеоматериалами для разработчиков DevTube. На сайте уже реализована система фильтров по тегам, таким как Mobile, JavaScript, Testing и другим, а также по спикерам и языкам видео. Проект заявлен как некоммерческий: на сайте нет ничего лишнего, только навигация, превью к видео и такая ключевая информация как теги, продолжительность, дата загрузки, количество просмотров и лайков. Очевидно, ресурс будет полезен тем, кому нужны выступления и видеоматериалы по конкретным языкам или направлениям разработки.



Сейчас на ресурсе преобладает англоязычный контент, что неудивительно. Также разработчики заявили о старте коллективной работы по наполнению этого некоммерческого ресурса: подать заявку на добавление или удаление видео с DevTube можно через пулл-реквест на GitHub, о чем сообщается в README.md. Вот как идею создания такого ресурса прокомментировал один из разработчиков, Андрей codingandrey Адамович:
Читать дальше →
Total votes 55: ↑54 and ↓1+53
Comments30

В арсенал радио-хакера: широкополосная замена RTL-SDR до 6 ГГц

Reading time3 min
Views85K

image


Недавно я прочитал статью, в которой автор пророчит нам веселое, но светлое будущее. Кроме всего прочего, он говорит дословно следующее: «Если мы ничего не можем поделать с тем, что государство следит за нами, мы должны иметь право следить за ним».


Замечательный тезис! Даешь гонку радио-вооружений!

Читать дальше →
Total votes 93: ↑92 and ↓1+91
Comments111

Допинг для аналитики: почему стоит обратить внимание на Apache Zeppelin

Reading time6 min
Views35K
Все рано или поздно приходят к аналитике за данными. В больших многопользовательских играх (да и синглплеере) без этого уже вообще никуда. Сколько пользователей предпочитают новый режим; где слабые места монетизации; куда смотреть геймдизайнерам, чтобы повысить вовлеченность игроков; и еще миллион вещей — подсчитывается вообще всё. И всё это влияет на решения, которые потом принимают разработчики.

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

Поэтому я расскажу об инструменте, который будет полезен для всех. Кто только начинает выстраивать аналитику — сможет «на коленке» создать систему с нуля, а компании с уже готовыми решениями — «бустануть» свой подход.
Читать дальше →
Total votes 42: ↑42 and ↓0+42
Comments22

Блокировка Роскомнадзора Гимном Российской Федерации

Reading time8 min
Views82K
Опишу свой опыт общения с Роскомнадзором и прокуратурой по вопросу блокировки сайта, может кому пригодиться. Тут больше юридических аспектов, чем айтишных, но от сумы да Единого реестра не зарекайся.

По статистике Федеральной службой по надзору в сфере связи за всю ее историю было заблокировано порядка 500000 сайтов (указателей на страницы), и еще порядка 10 миллионов — неправомерно заблокированных из-за неосторожности быть на одном IP с нарушителем. Думаю, из этих сотен тысяч и миллионов есть люди, чьи права были нарушены по беспределу, и которые хотели бы их защитить. Небольшой ликбез ниже.
Читать дальше →
Total votes 291: ↑278 and ↓13+265
Comments362

Курс о Deep Learning на пальцах

Reading time2 min
Views173K
Я все еще не до конца понял, как так получилось, но в прошлом году я слово за слово подписался прочитать курс по Deep Learning и вот, на удивление, прочитал. Обещал — выкладываю!

Курс не претендует на полноту, скорее это способ поиграться руками с основными областями, где deep learning устоялся как практический инструмент, и получить достаточную базу, чтобы свободно читать и понимать современные статьи.

Материалы курса были опробованы на студентах кафедры АФТИ Новосибирского Государственного Университета, поэтому есть шанс, что по ним действительно можно чему-то научиться.


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

Почему мы ещё читаем бумажные книги?

Reading time5 min
Views56K


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

Но при этом издательства до сих пор пляшут от бумажных копий, наш опыт с киосками прессы в Москве показал, что продать 20 килограммов газет в день с одной точки — вообще не вопрос в принципе. А ещё я недавно видел здравствующую бумажную библиотеку в городе на 700 человек, видел культуру чтения газет в Германии и кучу других странных вещей.

И ещё я продолжаю покупать бумажные книги, хотя читаю всё чаще с экранов. Возможно, я ретроград, конечно. Но мне пару лет назад было очень интересно, что можно сделать с этим рынком, и ниже немного выкладок «пальцем к носу» по тому, почему его никак не получается добить.
Читать дальше →
Total votes 109: ↑105 and ↓4+101
Comments1028

Когда вызовы функций через внешний интерфейс быстрее нативных вызовов C

Reading time6 min
Views12K
Дополнено: хорошая дискуссия на Hacker News

Дэвид Ю на GitHub разработал интересный тест производительности для вызовов функций через разные внешние интерфейсы (Foreign Function Interfaces, FFI).

Он создал файл общего объекта (.so) с одной простой функцией C. Затем написал код для многократного вызова этой функции через каждый FFI с измерением времени.

Для C «FFI» он использовал стандартную динамическую компоновку, а не dlopen(). Это различие очень важно, так как действительно сказывается на результатах теста. Можно спорить, насколько честно такое сравнение с фактическим FFI, но всё равно его интересно измерить.

Самый удивительный результат бенчмарка — то, что FFI от LuaJIT существенно быстрее, чем C. Он примерно на 25% быстрее, чем нативный вызов C для функции общего объекта. Как смог слабо и динамически типизированный скриптовый язык обогнать в бенчмарке C? Точен ли результат?
Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments7

Information

Rating
Does not participate
Registered
Activity