Search
Write a publication
Pull to refresh
24
0
Игорь @Igor_Sib

User

Send message

Как айтишнику найти работу в США и ЕС: 9 лучших ресурсов

Reading time5 min
Views174K
Мировой рынок IT стремительно развивается. С каждым годом профессия разработчика софта становится все более востребованной — уже в 2017 году в мире насчитывался примерно 21 миллион программистов различных направлений.

К сожалению, русскоговорящий рынок IT находится еще на начальной стадии развития — уже есть крупные и успешные проекты, но рынок еще долго не сможет сравняться с европейским и американским, которые производят до 85% всех IT-продуктов мира.
Читать дальше →

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

Reading time55 min
Views61K
image

Введение


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

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

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


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

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

«Я бесполезный дурак и хочу уволиться» — 10 вопросов программисту, пилотный выпуск

Reading time6 min
Views117K


Привет, Хабр!

Помните историю про Стива Джобса и Денниса Ритчи? Не хотим снова устраивать споры и читать морали, но правда остается правдой — тысячи крутых технарей сидят в тени, а их истории запрятаны в чулан.

Мы в редакции Хабра намерены это исправлять. Отныне будем регулярно брать интервью у людей, про которых не пишут в СМИ и за которыми не гоняются в соцсетях. Так что если вам есть что о себе рассказать — готовьтесь.

Чтобы вы поняли, как оно будет выглядеть, начнем со своего примера. Под катом 10 общих вопросов, которые мы будем задавать всем. Для пилота на них ответил fillpackart. (В этом месяце я брал вместе с ним несколько, кажется, неплохих интервью: раз, два, три). Почитайте, и если хотите рассказать о себе таким же образом, пишите сообщения мне или baragol.
Читать дальше →

Создание «искусственной жизни» на компьютере

Reading time10 min
Views112K
Всем привет. В статье хочу описать свой эксперимент по созданию «искусственной жизни» на компьютере.

Как это выглядит?

картинка кликабельна

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

Ну а дальше за работу принимается эволюция и естественный отбор.

А мне остаётся только наблюдать за развитием мира.

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

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

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

Внутреннее устройство кода — это самое интересное в проекте.

Код должен быть простым и выдерживать различные модификации (случайное изменение любого элемента в коде) над собой без синтаксических ошибок.
Читать дальше →

Методы удержания игроков: примеры из игр различных жанров

Reading time7 min
Views33K
Меня зовут Оксана Фомина, я анализирую поведение пользователей и увеличиваю доходы игры, в том числе за счет повышения удержания игроков.

В первой части статьи «МЕТОДЫ УДЕРЖАНИЯ ИГРОКОВ В СЛОТ-ИГРАХ: Часть 1» я рассмотрела применение методов удержания игроков на примере слот-игр. Статья вызвала неоднозначную реакцию из-за того, что для примера были выбраны игры жанра Казино. Мне поставили минусы в Карму. Я хотела бы объяснить причину такого выбора.

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

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

UnnyWorld: постмортем

Reading time8 min
Views6.4K
После закрытия нашей игры UnnyWorld многие разработчики знакомые просили написать постмортем по игре. Решил поделиться конкретными примерами, коих за время разработки накопилось приличное количество. Будут рассмотренные ошибки, которые мы допустили, постараюсь дать парочку полезных советов.


Unity3d. Реализация зон видимости и слышимости

Reading time5 min
Views39K
Добрый день, хабра.

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

Больше видимости.


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

Каждый разработчик желает знать, как попасть в фичеринг

Reading time7 min
Views8K
Сегодня мы затронем тему, которая волнует каждого причастного к разработке приложений под iOS — попадание в подборки магазинов экосистемы Apple. В сентябре прошлого года произошло глобальное обновление App Store, в связи с которым у разработчиков появилось больше шансов привлечь (доброкачественное) внимание администрации, завоевать новую аудиторию, увеличить прибыль, поднять конверсию и просто выйти в тренд.

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

Создание крюка-кошки в Unity. Часть 1

Reading time17 min
Views15K
image

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

В первой части этого туториала мы реализуем собственную двухмерную систему крюка-кошки и научимся следующему:

  • Создавать систему прицеливания.
  • Использовать рендер линии и distance joint для создания верёвки.
  • Научим верёвку оборачиваться вокруг игровых объектов.
  • Вычислять угол качания на верёвке и добавлять силу в этом направлении.

Примечание: этот туториал предназначен для продвинутых и опытных пользователей, и в нём не рассматриваются такие темы, как добавление компонентов, создание новых скриптов GameObject и синтаксис C#. Если вам нужно повысить навыки владения Unity, то изучите наши туториалы Getting Started with Unity и Introduction to Unity Scripting. Так как в этом туториале используется DistanceJoint2D, то стоит также просмотреть Physics Joints in Unity 2D, и уже потом вернуться к этому туториалу.
Читать дальше →

Создание приложения-раскраски на Unity3D

Reading time6 min
Views18K
image

Эта история началась одним морозным весенним вечером, когда в голову пришел вопрос: а есть ли способ определять степень заливки произвольной геометрической фигуры краской (то есть, на сколько процентов она в данный момент закрашена)? Да так, чтобы это не просто не тормозило, а летало на 60 fps на самых слабых мобильных девайсах.

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

Работа с EventSystem в Unity. Базовые вещи в работе с UI

Reading time4 min
Views87K
Всем привет! Давно ничего не писал, но сейчас захотелось рассказать про очень удобную штуку, о которой многие не знают. Это Event System в Unity. Многие, для задач в которых EventSystem очень удобен, используют обычный Raycast. Я расскажу про то, как пользоваться частью функционала EventSystem (его на самом деле очень много) и как этот инструмент позволяет быстро решать многие задачи связанные с обработкой событий интерфейсов и объектов. Как всегда с репозиторием с примерами. Если вам интересно — добро пожаловать под кат!


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

Создаём файтинг в Unity: реализация Hitbox и Hurtbox

Reading time13 min
Views30K
image

Объяснение


Что же такое hitbox и hurtbox? Разве это не одно и то же?

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

Hitbox — это невидимый прямоугольник (или сфера), определяющий, куда попадает атака.

Hurtbox — это тоже невидимый прямоугольник (или сфера), но определяющий место, в которое игрок или объект может ударить с помощью Hitbox.


На этом изображении из Street Fighter IV красный прямоугольник — это hitbox, а зелёный — hurtbox
Читать дальше →

Имитация естественного движения: Steering Behaviors

Reading time23 min
Views21K
image

Steering behaviors помогают автономным персонажам реалистично двигаться благодаря применению простых сил, сочетание которых создаёт естественно выглядящее и импровизированное движение по окружению. В этом туториале я расскажу об основах теории steering behaviors, а также об их реализации.

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

Процедурная генерация подземелий в roguelike

Reading time31 min
Views49K
image

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

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

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

Конечно же, преимущества процедурных карт бессмысленны без большой вариативности механик и контента — однообразный hack-and-slash здесь не подойдёт. Поэтому все roguelike, выдержавшие испытание временем, имеют глубокий геймплей.

Этот пост является результатом моей работы над генерацией карт для Cogmind.
Читать дальше →

Блокировка Telegram — готовимся к худшему?

Reading time2 min
Views76K


Как известно, вчера Роскомнадзор попросил суд заблокировать Telegram. Надо понимать, что игры закончились и мессенджер будет заблокирован с очень большой степенью вероятности. Само дело было заведено по иску Роскомнадзора, и судья Смолина Ю.М. уже успела провести подготовительное заседание в Таганском суде г. Москвы. Юристов от Telegram на заседании не было. Кто-то говорит, что сам Дуров дал распоряжение не являться на суд, но вполне может быть, что специалисты просто не успели подготовиться. На все про все у них было всего несколько часов и понятно, что все сразу оформить никто бы не успел.

Сегодня, 13 апреля, в 10 часов будет проходить рассмотрение иска по существу. Кабинет 301, Таганский районный суд — приходить могут все. Зная Роскомнадзор, можно быть уверенным, что ведомство будет настаивать на блокировке мессенджера и это рано или поздно случиться (или нет?). Но подготовиться стоит заранее.
Читать дальше →

Создаем свои криптокотиков (Часть 2)

Reading time8 min
Views5.9K
Это статья — вторая (и заключительная) часть из серии о создании своих криптокотиков. В первой части мы узнали, что из себя представляет каждый Криптокотик, кто контролирует ход игры и как сделать котика в виде токена. Но для по-настоящему прорывного приложения нам необходимо определелить для них механизм размножения, а главное — рыночной торговли, чтобы участники могли выкупать друг у друга самых породистых котят.image
Скрещиваем котиков

Публикация игры в Google Play. Настройка Play Games Plugin для Unity

Reading time7 min
Views45K
Всем привет! Решил поделиться своим опытом по добавлению игры в Google Play Console и настройке Play Games Plugin для Unity.

Начнем мы с настройки Unity.
Читать дальше →

Готовимся к публикации игры в Xiaomi Mi Game Center (Unity, C#)

Reading time8 min
Views12K
Китайский рынок мобильных игр и приложений остается в значительной степени закрытым для остального мира. И не так давно Unity анонсировали сотрудничество с Xiaomi, призванное помочь разработчикам опубликовать свои игры с помощью сервисов Unity напрямую в Xiaomi Mi Game Center. А пока на официальном сайте висит табличка «Функция еще не включена, ждите новостей!», мы можем подготовить наш билд для Xiaomi. А если повезет, то и успешно опубликовать!

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

Надоело писать PropertyDrawer в Unity? Есть способ лучше

Reading time13 min
Views23K

Не так давно я участвовал в разработке игры на Unity. Много времени уделял инструментам для коллег: редактор уровней для геймдизайнера, удобные базы данных для художников.


По понятным причинам, в программировании интерфейсов под Unity мы не всегда можем использовать автоматическую разметку (удобные средства GUILayout), и нередко приходится вручную нарезать прямоугольники и рисовать интерфейсы средствами класса GUI. Эта работа утомительна, связана с большим количеством ошибок, а код получается сложным в поддержке. Со временем, возникла привычная каждому программисту мысль: напишу свой велосипед! "Должен быть способ лучше!". За подробностями приглашаю под кат.



Картинка для привлечения внимания взята отсюда.

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

Деловая переписка на английском языке: фразы и советы

Reading time18 min
Views633K
Елена Соловьева, менеджер проектов в компании Лаборатория Касперского, специально для блога Нетологии поделилась советами о том, как вести деловую переписку с иностранными коллегами и партнерами на английском языке. Статья участвует в конкурсе.

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

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

Information

Rating
Does not participate
Location
Россия
Registered
Activity