Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 6

Как мне удалось перевести сервис поиска пути с одного из самых тяжелых игровых сервисов с ~ 300мс на один запрос с обработкой 10к нод в один из самых оптимизированных ~150мс на 1000 запросов.

вот этот момент очень интересует. есть ли коллизиии между юнитами? есть ли динамически перестраиваемое окружение?

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

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

Шаг 1. Концепция

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

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

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

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

вот этот момент очень интересует. есть ли коллизии между юнитами? есть ли динамически перестраиваемое окружение?

Смотрите, коллизий пока нет. И я не уверен, буду ли их делать - с одной стороны это реалистично, с другой - толпа, которая будет тупить в дверях и проходах...Ну не знаю. Может одной из условностей будет прохождение юнитов сквозь друг друга, типа как в одном известном симуляторе больницы. Плюс ко всему, я отказался от GameObject-ов для NPC ради буста производительности и коллайдеры и всю механику придётся писать самому.

С динамическим окружением сейчас есть только 2 кейса:

  1. NPC получил путь, а потом игрок разместил на его пути какой-то объект => стоимость ребра меняется на макс (не проходимое) => обновляется кэш стоимостей рёбер => срабатывает событие, что стоимость пути изменилась, и NPC запрашивает его еще раз. Это все работает асинхронно в фоновых потоках, чтобы не блокировать UI.

  2. NPC хотят подойти друг к другу. Здесь асинхронно у меня сделать не получилось, потому что позиция агентов смещается и они могут получить не действительный путь, поэтому конкретно в таком кейсе я сделал синхронный метод, который отдаёт маршрут в том же кадре

Но вся "фишка" оптимизации по сути в кешировании стоимостей и работе А* на чистых int-индексах. Я в будущем запилю статейку на тему того, как строил сервис поиска пути.
Самый первый варик, который я написал отдавал маршрут за 20 минут...ну в общем, там было много нюансов

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

Тут я немного криво написал, простите. Я имел в виду не игровую логику, а базовую логику.
Ну, например, тот же сервис поиска пути - там вообще нет никакого упоминания Vector3Int или даже Guid-ов, он работает тупо на индексах
Сервис NPC - тут я вдохновился ECS-подходом и сделал данные в структурах, где тоже нет никакого упоминания (не везде конечно, где-то я накостылял, но это не принципиально) движковых типов данных
Библиотека (если ее так можно назвать) для графов, которую я использую как для поиска пути - для грида, так и для взаимодействия NPC между собой, чтобы собирать "знакомства" - она тоже ничего не знает про игровые типы данных.

А чисто игровая, геймплейная логика - она связана с Unity, конечно

Я изначально учился на программиста-математика. Потом я пошел в веб-разработку (в стартап), где меня совсем чуть-чуть учили фронтенду. И резко я там перешел в ПМы. А как оказалось, под ПМами там подразумевали и аналитиков, поэтому я еще к тому же стал фуллстак аналитиком.

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

К чему это все. Да я не знаю. Просто увидел, что человечек тоже из веб-аналитики, и решил поделиться. Я не один такой, это радует.

Ой, я тоже такое помню на одной из работ - про совмещение ПМ и БА
А на счет геймдева - мне кажется, это интересно, особенно после работы над какими-то проектами для всяких министерств))

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации