Яндекс Плюс Сити

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

Однако мало кто знает, что помимо поиска, почти, такси и Алисы Яндекс делает ещё и средства геймификации для своих сервисов — иными словами, игры, сращённые с их, яндексовской, инфраструктурой.

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

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

Заказываете ли вы еду через Яндекс-еду, или ездите на Яндекс-такси — система яндекса регистрирует вашу активность, и добавляет вам в игру на вашем телефоне новые возможности. Иными словами, если вы ехали из одной части Москвы в другую на белом такси с водителем Джамшутом, то, ЧСХ, у вас в игре после этой поездки появится именно такая белая машина с именно таким Джамшутом, которая будет лихо херачить из одной части города в другую! Помимо этого, в игре можно строить здания, развивать город, выполнять квесты от местных жителей, играть в прикольные миниигры, и так далее и тому подобное. Игра, усилиями дизайнеров, сделана красочно и прикольно.

Разумеется, это всё требовало кода, и очень много ХОРОШЕГО кода.

И мы таки сделали этот код! Работа в Яндексе дала мне много новых знаний о том как правильно писать годный, production level код в enterprise environment.

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

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

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

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