Мы в компании давно работаем с Unity и не могли не пригласить их ребят на Pixonic DevGAMM Talks, который был в сентябре. Field Engineer Валентин Симонов рассказал, как планировать архитектуру игр с учетом преимуществ новых технологий. Unity работает над ними уже несколько лет, чтобы добиться недостижимого ранее уровня производительности. Послушать выступление можно на YouTube, а почитать расшифровку со слайдами — сразу под катом.
Рубрика «архитектура» - 14
Как ECS, C# Job System и SRP меняют подход к архитектуре
2018-10-23 в 8:55, admin, рубрики: 3d, Gamedev, unity, unity3d, Анализ и проектирование систем, архитектура, Блог компании Pixonic, геймдев, доклад, конференции, митап, мобильные игры, проектирование, производительность, разработка игр, рендеринг, юнитиАрхитектура мета-сервера мобильного онлайн-шутера Tacticool
2018-10-18 в 9:45, admin, рубрики: amazon, Анализ и проектирование систем, архитектура, Блог компании Pixonic, геймдев, доклад, конференции, конференция, конференция разработчиков игр, митап, мобильные игры, облако, Проектирование и рефакторинг, разработка игр, шутерЕще один доклад с Pixonic DevGAMM Talks — на этот раз от наших коллег из PanzerDog. Lead Software Engineer компании Павел Платто разобрал мета-сервер игры с сервисно-ориентированной архитектурой, рассказал, какие решения и технологии были выбраны, что и как у них масштабируется, и с какими трудностями пришлось столкнуться. Текст доклада, слайды и ссылки на другие выступления с митапа, как всегда, под катом.
Практика использования модели акторов в бэкэнд-платформе игры Quake Champions
2018-10-12 в 8:48, admin, рубрики: quake, Анализ и проектирование систем, архитектура, Блог компании Pixonic, бэкенд, геймдев, доклад, конференции, конференция, конференция разработчиков игр, митап, Проектирование и рефакторинг, разработка игрПродолжаю выкладывать доклады с Pixonic DevGAMM Talks — нашего сентябрьского митапа для разработчиков высоконагруженных систем. Много делились опытом и кейсами, и сегодня публикую расшифровку выступления backend-разработчика из Saber Interactive Романа Рогозина. Он рассказывал про практику применения акторной модели на примере управления игроками и их состояниями (другие доклады можно посмотреть в в конце статьи, список дополняется).
CICD: бесшовный деплой на распределенные кластерные системы без даунтаймов
2018-10-09 в 11:31, admin, рубрики: CICD, Анализ и проектирование систем, архитектура, Блог компании Pixonic, мобильная разработка, проектирование, Проектирование и рефакторинг, разработка игр, сервер, Серверное администрирование, системное администрированиеВыкладываю второй доклад с нашего первого митапа, который провели в сентябре. В прошлый раз можно было почитать (и посмотреть) про использование Consul для масштабирования stateful-сервисов от Ивана Бубнова из BIT.GAMES, а сегодня поговорим про CICD. Точнее расскажет об этом наш системный администратор Егор Панов, который отвечает за доступность инфраструктуры и сервисов в Pixonic. Под катом — расшифровка выступления.
Проектирование типами: Как сделать некорректные состояния невыразимыми
2018-10-03 в 6:41, admin, рубрики: .net, domain-driven design, F#, архитектура, архитектура приложений, функциональное программированиеПредставляю вашему вниманию перевод статьи Scott Wlaschin "Designing with types: Making illegal states unrepresentable".
В этой статье мы рассмотрим ключевое преимущество F# — возможность "сделать некорректные состояния невыразимыми" при помощи системы типов (фраза заимствована у Yaron Minsky).
Рассмотрим тип Contact
. В результате проведённого рефакторинга он сильно упростился:
type Contact =
{
Name: Name;
EmailContactInfo: EmailContactInfo;
PostalContactInfo: PostalContactInfo;
}
Теперь предположим, что существует простое бизнес-правило: "Контакт должен содержать адрес электронной почты или почтовый адрес". Соответствует ли наш тип этому правилу?
Нет. Из правила следут, что контакт может содержать адрес электронной почты, но не иметь почтового адреса, или наоборот. Однако в текущем виде тип требует, чтобы были заполнены оба поля.
Кажется, ответ очевиден — сделать адреса необязательными, например, так:
type Contact =
{
Name: PersonalName;
EmailContactInfo: EmailContactInfo option;
PostalContactInfo: PostalContactInfo option;
}
Но теперь наш тип допускает слишком многое. В этой реализации можно создать контакт вообще без адреса, хотя правило требует, чтобы хотя бы один адрес был указан.
Как же решить эту задачу?
Использование Consul для масштабирования stateful-сервисов
2018-09-28 в 15:44, admin, рубрики: архитектура, Блог компании Pixonic, конференции, мобильная разработка, проектирование, Проектирование и рефакторинг, разработка игр, Серверное администрирование, системное администрирование22 сентября провели наш первый нестандартный митап для разработчиков высоконагруженных систем. Было очень круто, много позитивного фидбека по докладам и поэтому решил не только их выложить, но и расшифровать для Хабра. Сегодня публикуем выступление Ивана Бубнова, DevOps из компании BIT.GAMES. Он рассказал о внедрении дискавери-сервиса Consul в уже рабочий высоконагруженный проект для возможности быстрого масштабирования и failover`а stateful-сервисов. А также об организации гибкого пространства имен для бэкэнд-приложения и подводных камнях. Теперь слово Ивану.
Я администрирую продакшн-инфраструктуру в студии BIT.GAMES и расскажу историю внедрения консула от Hashicorp в наш проект «Гильдия Героев» — fantasy RPG с асинхронным pvp для мобильных устройств. Выпускаемся на Google Play, App Store, Samsung, Amazon. DAU около 100 000, online от 10 до 13 тысяч. Игру делаем на Unity, поэтому клиент пишем на С# и используем свой собственный скриптовый язык BHL для игровой логики. Серверную часть пишем на Golang (перешли на него с PHP). Дальше — схематичная архитектура нашего проекта.
Читать полностью »
Как мы отлаживаем в браузере самописный ECS на игровом сервере
2018-09-25 в 8:37, admin, рубрики: android, C#, ecs, Gamedev, iOS, mobile development, multiplayer, online, pvp, unity, unity3d, архитектура, Блог компании Pixonic, геймдев, мобильные игры, мультиплеер, проектирование, Проектирование и рефакторинг, разработка игр, разработка мобильных приложений, управление проектами, шутер
Хочу поделиться механизмами, которые мы используем на сервере для визуальной отладки игровой логики и способами изменения состояний матча в реальном времени.
В предыдущих статьях подробно рассказывали (список сразу под катом) о том, как устроена ECS в нашем новом проекте в разработке и как выбирали готовые решения. Одним из таких решений был Entitas. Он не устроил нас в первую очередь из-за отсутствия хранения истории состояний, но очень понравился тем, что в Unity визуально и наглядно можно посмотреть всю статистику по использованию сущностей, компонентов, систему пулов, производительность каждой системы и т.д.
Это вдохновило нас на создание своих инструментов на игровом сервере, чтобы смотреть, что происходит в матче с игроками, как они играют, как перформит система в целом. На клиенте у нас тоже есть подобные наработки для визуальной отладки игры, но инструменты в клиенте чуть более простые по сравнению с тем, что мы сделали на сервере.
Читать полностью »
Consumer-Driven Contracts как способ развития сервиса
2018-09-20 в 13:20, admin, рубрики: Fowler, Jan Robinson, microservice architecture, Microservices, Анализ и проектирование систем, архитектура, Блог компании Сбербанк, Микросервисная архитектура, микросервисы, Проектирование и рефакторинг, фаулер, Ян Робинсон
— Секрет успеха поставщика заключается в том, чтобы дать потребителям качественный товар… ой, то есть сервис. Ну и еще важно не пускаться во все тяжкие с нарушением обратной совместимости.
Уолтер Уайт
От переводчика
Что это
Это перевод статьи, описывающей шаблон Consumer-Driven Contracts (CDC).
Оригинал опубликован на сайте Мартина Фаулера за авторством Яна Робинсона.
Зачем это
В микросервисной архитектуре зависимости между сервисами являются источником проблем. Шаблон CDC помогает решать эти проблемы способом, устраивающим и разработчиков сервиса, и его потребителей. Фаулер ссылается на Consumer-Driven Contracts в ключевой статье по микросервисной архитектуре: Microservices.
Для кого это
Статья будет особенно полезна командам, разрабатывающим сервисы для нескольких потребителей в рамках одной организации, и командам-потребителям таких сервисов.
(А|а)рхитектура: почему это нестандартный митап для разработчиков высоконагруженных систем
2018-08-21 в 8:30, admin, рубрики: архитектура, архитектура серверов, Блог компании Pixonic, конференции, конференция, митап, разработка игр, распределенные системы, Серверная оптимизация, серверная разработкаМы давно стремимся быть максимально открытыми и делиться опытом, пусть и не всегда идеальным. Это помогает не только находить узкие места у себя в разработке, но и пробовать что-то новое.
И если в текстовом формате мы не первый раз рассказываем истории из разработки, то теперь решили организовать митап в сентябре вместе с друзьями из DevGAMM, где будем на реальных кейсах разбирать архитектуру в глобальном понимании — от системных решений и приложений до архитектурных паттернов и стилей. И в этот раз мы решили уйти от традиционного стиля «митапов», поэтому — всего 222 отобранных приглашенных, актуальные темы и крутой нетворкинг на митапе (А|а)рхитектура.
А для тех, кто заинтересовался — под катом FAQ и подробности.