Skyforge на каком движке

Обновлено: 08.07.2024

Подведем итоги сказанному об игре на КРИ-2012. По словам Виктора Суркова, все, что игрок будет способен разглядеть на большом расстоянии в мире игры, он сможет и самостоятельно исследовать. Любой графический движок базируется на двух-трех основных компонентах, и выделенный код Skyforge - не исключение. Этими двумя "китами" для разработчиков MMORPG нового поколения - команды Allods Team - стали следующие компоненты.

техника Deferred shading

Пусть вас не удивляет 9-ая версия DirectX, у разработчиков была веская причина выбрать не самую новую версию данного компонента: он поддерживает рендеринг в старой-доброй Windows XP, а сохранение поддержки этой ОС напрямую связано с оперированием игры на крупнейшем азиатском рынке (как пошутил Сергей Макеев на КРИ-2012, "у нас есть 1,3 миллиарда причин использовать DirectX 9. все они живут Китае, и поэтому мы хотим сохранить эту аудиторию").

Отложенное освещение (deferred shading) используется из необходимости большого количества источников света. Физический мир в игре - полностью динамический, разработчики не используют никаких предрасчетов игровых явлений вообще.

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

Дальность видимости в игровом мире достигает, как известно, 40 километров. Skyforge вообще полон огромных открытых пространств.

Но на такой дистанции на игровой "картинке" уже не хватает стандартного буфера глубины. Поэтому новая технология, используемая внутри студия и называемая условно "супер-глубина", позволяет рисовать сцены каскадами, от дальнего к ближнему. Для 40 километров хватает двух каскадов отрисовки. Поистине эпические виды - и все это без спрайтов и композинга!

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

К работе над новым проектом привлечено еще больше профессиональных художников и программистов. Жаль, что нет в общем доступе качественных артов. И никто их сейчас не может дать, не имеет права (ибо NDA). Но все равно уже имеется максимально полная подборка скриншотов и видео на тему Skyforge.

в Skyforge проходят гонки на гравироликах и активны подарки за вход в игру

Если добавить качественный и полезный файл, он быстро наберет популярность и принесет тебе больше бонусов.

Новая MMORPG от создателей "Аллодов Онлайн". Действие игры развернется в будущем, в мире, в котором прекрасно сосуществуют магия и технология, а одной из главных особенностей проекта станет отсутствие привычных для жанра опыта и уровней.

Операционная система : Windows XP Service Pack 3
Процессор : Intel Pentium Dual CPU E2160 1,8 ГГц
Видеокарта : NVIDIA GeForce 8600 GTS / Intel HD Graphics 3000 / ATI Radeon HD 4650
Оперативная память : 2 ГБ
Место на диске : 20 ГБ
DirectX : версии 9.0c

Операционная система : Windows XP Service Pack 3 или лучше
Процессор : Intel Core i5-4430 3,0 ГГц
Видеокарта : NVIDIA GeForce GTX 275 / ATI Radeon HD 4870
Оперативная память : 4 ГБ
Место на диске : 20 ГБ
DirectX : версии 9.0c


Напомним, что Skyforge — это MMORPG нового поколения, которая создается в тесном сотрудничестве с Obsidian Entertainment. Действие игры разворачивается в мире, объединяющем Sci-fi и фентези. Игрок выступает в роли бессмертного, встающего на защиту жителей планеты Элион, прежний бог которой, Элай, таинственно исчез.


Главной темой презентации Skyforge стала уникальная система развития без уровней, так называемый «Атлас развития». Он представляет собой карту, состоящую из вершин-достижений, и позволяет увидеть всю цепочку возможного развития персонажа: классы, таланты, умения и характеристики. Помимо уже известных классов, участникам удалось поиграть ранее не анонсированными берсерком и штурмовиком. Также разработчики показали новый инстанс под названием Sacro Mare Monastery и продемонстрировали функционал Информатория.

Первое, что нам удалось увидеть в демо-версии, это интерфейс Skyforge. Он предельно прост и понятен. Затем мы отправились в специальный инст, который был рассчитан на пятерых игроков. Но в нашем случае его «подогнали» для двоих, несколько усилив персонажей. «Это версия для E3, и мы сделали наших персонажей очень мощными, что совершенно не помогло, потому что многие посетители стенда все равно умудрялись умирать», — говорит бренд-директор Олег Хажинский. Вообще минимальный инст в игре — соло, далее — 3 человека, следом — 5, а рейдовые рассчитаны на 10 человек и более.


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


Хочется обратить внимание на управление персонажем. В Skyforge используется уникальная система комбинированных последовательных атак (комбо), что определенно делает игру более интересной и доступной, но непростой. Также у каждого персонажа есть своя так называемая «ульта». Это некий добивающий удар, который нужно активировать в определенный момент после выполнения определенных серий ударов при появлении в виде кнопки добивания. Таким образом получается комбо с добиванием в конце, что усиливает атаку и к тому же эффектно смотрится. Вообще вся игра строится на различных комбинациях ударов, требующих дополнительного набора абилок, которые нужно открывать по мере развития персонажа.

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

∙ Берсеркер — мощный персонаж ближнего боя, выполняющий роль танка.

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

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

∙ Хранитель света — это баффер, который предотвращает входящий урон. В начале боя он баффает союзников, затем поддерживает положительные баффы, дебаффит противника и сам наносит ему урон.

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


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

Так как героям мира Skyforge предстоит защитить смертных и всю планету от враждебных инопланетных захватчиков, нужно не только уметь сражаться, но и постоянно совершенствовать персонажа и свои боевые навыки. В отличие от большинства игр, в Skyforge можно создать только одного героя на одном аккаунте, но он, в свою очередь, может освоить абсолютно все игровые классы. Подобный подход к прокачке персонажа позволит игрокам не тратить уйму времени на пробу разных классов, пытаясь выбрать наиболее удобный для себя стиль игры. После того как будет завершено стартовое приключение, игроку станет доступна специальная тренировочная зона, где можно опробовать все классы и выбрать для себя самые приоритетные. Главная особенность такой системы заключена в том, что у вас есть выбор между развитием одного класса вглубь или нескольких классов «вширь». Более того, можно попытаться объединить умения различных классов.


Сам процесс прокачки персонажа выглядит следующим образом. За выполнение различных заданий и участие во всевозможных активностях игроку будут начисляться определенные ресурсы — камни прозрения. Их нужно вкладывать в вершины атласа, что позволит развивать характеристики персонажа, а также изучать умения и таланты. Эти камни нельзя купить ни в игре, ни на аукционе; их нельзя скрафтить. Они выдаются только за выполнение инстансов. Всего в игре имеется три типа ресурсов:

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

∙ Изумруды жизни — открывают зеленые вершины атласа. Они отвечают за защитные характеристики.

∙ Сапфиры познания — будут расходоваться на синие вершины, дающие дополнительные характеристики или таланты.


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

Сам же атлас можно просматривать в режиме двух уровней. Это нижний уровень, где можно изучать именно классовые таланты и умения, и верхний уровень — глобальная карта развития, на которой показаны все пути для открытия новых классов и «перков» (пассивные умения, которые будут действовать независимо от выбранного на данный момент класса). Когда один из классов будет развит до определенного момента и герой изучит особо мощное умение — «ульт», откроется возможность выхода на верхний уровень. Об этом мы расскажем поподробнее.


На нижнем уровне, как уже говорилось, имеется возможность изучать таланты и умения выбранного класса, а также улучшать характеристики персонажа за рубины, изумруды и сапфиры. Вершины — это точки на схеме, через которые нужно последовательно проходить для дальнейшего развития. На атласе можно наметить цель и подобрать нужную тактику для прокачки следующего класса. Это может быть короткий путь с минимумом попутных характеристик или же длинный, ветвистый путь, затрагивающий максимальное количество характеристик класса, «перков» и раскрытие его полного потенциала. Таким образом, встретить двух одинаковых персонажей в игре будет достаточно сложно. Каждая из вершин имеет свое описание и все они видны с самого начала.

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


На верхнем уровне вы можете изучать характеристики, открывать новые классы и «перки». Этот уровень отражает глобальный прогресс персонажа.В центре каждого скопления вершин находится либо особенно сильный бонус, либо новый игровой класс. Атлас имеет возможность масштабирования и прокрутки. Таким образом, можно либо приблизить, либо отдалить карту для того, чтобы просмотреть межклассовое развитие или детально рассмотреть возможности класса. Не нужно постоянно перепрыгивать с верхнего уровня на нижний, чтобы просмотреть все характеристики — они есть на обоих уровнях.

Еще одной значимой особенностью Skyforge являются Информатории. Для всех жителей Элиона Информаторий — это всемирная система наблюдения и оповещения. Его задача — собирать мольбы людей о помощи и принимать сигналы бедствия. Для игрока это единая точка входа во все возможные приключения.



В самом начале игроку доступно лишь несколько приключений, но по мере прохождения их будет становиться все больше и больше. Только за первые часы игры герои смогут поучаствовать более чем в 40 увлекательных PvE-приключениях, рассчитанных на одиночное и групповое прохождение. Для тех, кто любит PvP-сражения, приготовлено 5 различных состязаний, а для исследователей — 10 просторных, открытых локаций, на изучение которых потребуется не один час. В Информатории всегда представлен внушительный список задач, и при этом выбор игрока никак не ограничивается. Каждый волен сам выбирать, как ему удобнее развивать персонажа. PvP или PvE — решать только вам.

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


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

Каждые 40 минут на карте Информатория меняется время тактической ситуации. Это значит, что меняются локации нападения, меняются награды за выполнение тех или иных заданий. И если есть инст, в который игрок хочет пойти, но на данный момент в нем находится ненужная ему награда, можно подождать, пока поменяется время тактической ситуации, и надеяться, что в нужном инсте будет нужная награда. Все изменения сразу же отображаются на глобусе — уменьшенной проекции планеты. Система обновляет список "горячих точек, предлагая игроку поучаствовать в наиболее актуальных событиях.


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


По мере участия в PvE- и PvP-приключениях герой будет получать множество полезных предметов: это могут быть как кредиты (самые обычные деньги на Элионе), так и некоторые экзотические валюты. Одна из них, например, позволит приобретать стильную одежду для персонажа. Одежда не пропадает при смене класса персонажа, имеет чисто имиджевый характер и не влияет на статы. На них влияют только оружие и бижутерия, которые можно одеть только на подходящий класс персонажа. Их можно получить, к примеру, в виде лута, купить или скрафтить.

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

Как мы уже говорили, за прошедшее время Skyforge претерпела значительные изменения. Помимо введения в игру новых типов геймплея и новых классов персонажей, были переработаны уже сушествующие. Локации становятся все обширнее и красочнее, противники – умнее. Система смены классов «на лету» уже успела себя положительно зарекомендовать себя среди тех, кому уже выпала возможность опробовать Skyforge. Команда разработчиков из Allods Team неустанно трудится над игрой, воплощая в ней весь имеющийся опыт для создания действительно уникального, непохожего на другие продукта. Напомним, что оставить заявку на участие в бета-тесте, который уже не за горами, можно на официальном сайте проекта.

image

Обзор

  • Сервер — это почти два миллиона строк кода на Java. Для соединения с сервером и отображения красивой картинки используется клиент, написанный на C++.
  • Свой вклад в серверный код внесли полсотни программистов. Код писался в течение многих лет лучшими специалистами российского «православного» геймдева. В нем собраны все самые удачные идеи со всего мира.
  • На текущий момент у нас написано около 5200 автоматических тестов, налажен continuous integration и нагрузочное тестирование с помощью ботов.
  • Сервер умеет запускаться и работать на десятках и сотнях серверов, поддерживать игру сотен тысяч человек одновременно. Мы решили отказаться от традиционной для MMO техники шардирования и запустить всех игроков в один большой мир.

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


Сервисная архитектура

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

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

Третья большая проблема — это многопоточность. Как известно, лучший способ сладить с многопоточностью — это избежать ее. Deadlock, livelock, lock contention и другие милые сердцу программиста проблемы можно обойти, если архитектура сервера будет избавлять вас от необходимости синхронизировать потоки вручную. В идеале программист вообще должен писать простой однопоточный код и не задумываться о такого рода вещах.


Таким образом, мы можем запустить роль «локальный сервер», где будет все необходимое, а можем разбить сервер на несколько десятков ролей — аккаунт-сервер, итем-сервер, игровая механика и т.д. — и запускать его на десятках разных физических серверов. Структура оказалась чрезвычайно гибкой и удобной, советую серьезно к ней присмотреться.

Основные сервисы





Сериализация

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


Игровая механика

Основной сервис, который был бы вам интересен, это сервис игровой механики. Именно там выполняется весь код, непосредственно связанный с игрой, именно там моделируется весь игровой мир, летают фаерболы и «грабятся корованы».

Карты и балансировка нагрузки

На серверах игровой механики создаются карты, на которых, собственно, находятся игроки, мобы и происходит все веселье. У каждой карты есть лимит на количество игроков, которые могут на ней находиться. Например, лимит может быть равен единице для персональных приключений, 10–30 для групповых активностей и 250 для больших карт. Что происходит, если на карту захочет попасть еще один игрок, когда лимит исчерпан? Тогда будет создана еще одна копия той же самой карты. Игроки с этих карт не будут видеть друг друга, не будут друг другу мешать. Т.е. в каком-нибудь игровом городе могут быть тысячи человек, но там не будет тесно. Такой способ организации игроков называется «каналы».

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

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


Аватары и мобы

Аватар — это персонаж, которым управляет игрок, моб — это монстр, которого игрок убивает. Это весьма разные, но часто очень похожие сущности. И моб, и аватар умеют ходить по карте, у них есть здоровье, они могут использовать заклинания и т.п. Только аватаром управляет игрок, а у моба есть свой мозг. Кроме того, на картах есть множество всяких сундуков, растений и других интерактивных сущностей. Очень часто нужно делать некую функциональность и цеплять ее к разным сущностям. Для этих целей мы используем компонентный подход, собирая игровую сущность из набора функциональностей. Поясню на примере. Допустим, у игрока и моба есть показатель здоровья. В таком случае мы оформляем элемент «здоровье» как отдельный Java-класс, в котором описываем, как здоровье себя ведет: как оно может уменьшаться, как восстанавливаться, какие есть таймеры и т.п. Потом мы просто складываем все функциональности в специальную HashMap внутри сущности и берем ее оттуда по необходимости. Таких компонент у нас существуют сотни, на них собрана половина игровой механики.

Репликация

Моделировать игровой мир нужно не только на сервере, но и частично на клиенте. Например, клиенту нужно видеть других игроков и мобов, которые находятся рядом с ним. Для этого используется механизм клиент-серверной репликации, когда с сервера клиентам рассылаются обновления окружающего игрового мира. Делается это с помощью генератора кода, который встраивает отсылку обновлений в сеттеры серверных Java-объектов. Вокруг игрока создается круг определенного радиуса, и если кто-то, например другой аватар, попадает в этот круг, он начинает реплицироваться на клиент. С репликацией есть фундаментальная проблема. Если в одном месте столпится N аватаров, то на каждого из них нужно будет посылать N реплик. Таким образом возникает квадратичная зависимость, что ограничивает количество аватаров, которые могут собраться в одном месте. Именно из-за этой фундаментальной квадратичности клиенты всех ММО тормозят в столицах. Мы избегаем этой проблемы, ограничивая количество игроков на карте и распределяя их по каналам.

Ресурсная система

В игре существуют сотни и тысячи заклинаний, предметов, квестов и других подобных сущностей. Как вы, наверное, догадываетесь, программисты не пишут все сотни квестов, это делают геймдизайнеры. Программист разрабатывает один Java-класс квеста, а описания всех квестов с их логикой, задачами и текстами содержатся в XML-файлах, называемых ресурсами. При старте сервера мы загружаем эти ресурсы и на их основе собираем Java-классы с описанием мира. Этими классами уже может пользоваться сервер. Примерно такая же система существует и на стороне клиента, только там ресурсы не грузятся из XML-файлов, а просто загружается заранее созданный «кусок памяти», содержащий все нужные объекты и ссылки между ними. Ресурсных файлов у нас существует несколько сотен тысяч, но их загрузка на сервере занимает около двух минут. На клиенте же все грузится за секунды. Система очень навороченная, поддерживает такие фичи, как прототипы и наследование, вложенные описатели и т.п. Поверх ресурсной системы у нас созданы специализированные программы для редактирования карт и остальных игровых сущностей.


Сервер в действии

Давайте теперь на примерах рассмотрим несколько сценариев того, как работает вся эта система в действии.

Читайте также: