Заметки про игры

Люди, создающие систему Non-Target в TERA

Интервью с представителями отдела программирования Hyeon-cheol Kim и Seong-jung Ryu.

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

Перед ЗБТ 2 у нас возникло множество вопросов, которые мы хотели бы задать представителям отдела программирования игры. Сейчас программирование TERA вышло на оптимальный ритм, поэтому мы встретились с двумя представителями Bluehole.

Программирование сервера
Hyeon-cheol Kim: Идею создания связки сервера и клиента легко проиллюстрировать, например, при помощи связки браузера (Internet Explorer) и веб-сервера (собственно, сайта). Так же и в MMORPG — к серверу может подключиться одновременно несколько тысяч клиентов, которые с участием сервера могут выполнять определенные действия. Например, если игрок начинает атаку монстра, клиент посылает на сервер запрос, после чего на нём происходят проверки и расчеты. После завершения расчетов на сервере, происходит обратная передача результатов на все находящиеся в окрестностях клиенты. После этого обмена информацией результаты отображаются на всех вовлеченных клиентах у пользователей.

Программирование клиента
Seong-jung Ryu: В случае каких-то действий игрока клиент обязан отправить соответствующий запрос на сервер. Пользователи непосредственно общаются с программой, поэтому тут возникает серьезный вопрос о безопасности. Также должны передаваться сведения о предметах. Подобное разграничение на две части — клиент и сервер — выглядит логичным и обоснованным. Со стороны клиента особенно важна скорость, тогда как система безопасности должна быть в основном на сервере.

Разные результаты действий персонажей
Seong-jung Ryu: Вообще система работает так: клиент передает серверу информацию, сервер её обрабатывает и высылает клиенту результат. Однако каким будет действие персонажа на экране пока сказать нельзя. Например, это особенно характерно для перемещения. Так, клиент просчитывает команду, поступившую от сервера, и выполняет её в зависимости от конкретных условий.

MMORPG и система Non-Target
Seong-jung Ryu: Возможность её реализации мы оценили в самом начале разработки. Однако, по мере ввода нового контента, как показал опыт, требуется всё более мощный фреймворк для обработки загрузки в ходе тестирования. Об уместности non-target в MMORPG лучше будет спросить у пользователей об удовольствии от возможности полного контроля над персонажем.

Реализация действий в Non-Target
Seong-jung Ryu: В условиях nontаrget важным элементом является использование монстрами особенностей рельефа. Из-за того, что монстры постоянно перемещаются, пользователю приходится постоянно менять направление обзора и следить за расстоянием, что может приводить к излишней нервозности.

Unreal Engine 3 и MMORPG
Seong-jung Ryu: Unreal Engine 3 — оптимальный движок для разработки FPS (First-Person Shooter). Что важно, он также оптимальный для дополнений, подразумеваемых жанром MMORPG. Раньше при создании MMORPG нужно было практически вс` заново разрабатывать, и только потом воплощать бесшовный мир.

Unreal Engine 3 и другие средства
Hyeon-cheol Kim: Unreal Engine 3 предлагает ряд средств, которые обеспечивают подстройку под свои нужды ускоренными темпами. Помимо стандартных средств, мы используем собственные. Например, средства, требуемые для отдела планирования, разработаны внутри компании. Практически каждый элемент контента требует тех или иных дополнительных средств.

Seong-jung Ryu: От использованных при разработке средств зависит качество пользовательской среды. Хорошая работа планировщиков создания боевого баланса, свойств, данных — обеспечивает получение высококачественного игрового окружения. В целом, важность применяемых средств очень высока.

Падение серверов
Hyeon-cheol Kim: Вопросы со стабильностью сервера внесены в график. Сейчас поиск ошибок в коде стоит особенно остро. Ошибки в программе не означают, что её использование невозможно. Мы подвергаем весь наш код серьезным внутренним испытаниям, потому что это — залог того, что в результате получится стабильная программа. В случае падения сервера быстро ставится вопрос на оперативном совещании, что позволяет быстро находить решение.

Seong-jung Ryu: Стабильность программы крайне важна, поэтому не менее важны внутренние тесты. Многократно повторяющиеся тесты позволяют нам предложить пользователям совершенно стабильную программу.

Ошибки (баги), не влияющие на стабильность серверов
Seong-jung Ryu: Приведу пример: искусственный интеллект (AI) монстров содержит баг. В этом случае в базу данных команды разработки монстров были внесены неверные параметры. Для TERA команда программистов разработала специальные средства, помогающие искать и устранять баги на всех ступенях разработки. Кроме того, все подобные процессы тщательно контролируются службой контроля качества (ОКК, QA).

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

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

Базовые знания для программирования игр
Hyeon-cheol Kim: Для создания компьютерных игр требуются люди, понимающие основы в области компьютерного программирования, а также основные требования, предъявляемые к программам. При этом вполне достаточно базового школьного курса и знаний, полученных самостоятельно. Сейчас становится важным уметь не только видеть всю картину, но также понимать вопросы, связанные с разработкой любого аспекта игры и решать возникающие вопросы. Для этого самообучение подходит наилучшим образом. В Bluehole есть все возможности для быстрого получения всех необходимых базовых знаний. Наличие базовых знаний — залог правильного направления при разработке.

Seong-jung Ryu: При подготовке программистов крайне важно, чтобы они посещали современные библиотеки. По крайней мере, это важно для подготовки специалистов в области rendering. Но это лишь одна из областей знаний, которая быстро меняется. Также важным вопросом является умение создавать такие программы, которые будут впоследствии понятны.

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

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

Планы на будущее
Hyeon-cheol Kim: TERA — игра, которая будет раскрывать свой потенциал в течение нескольких лет, поэтому сейчас имеются некоторые ограничения. Я не хотел бы обсуждать эту тему сейчас.

Соединение сервера и клиента
Оба: Техническая сторона, конечно, нуждается в оптимизации. Например, слишком большое количество постоянных подключений на сервер или скорость работы (FPS) клиента. Однако, важно чтобы игра получилась интересной. Лучшая похвала для отдела программирования — это если пользователи будут узнавать о нас только из титров. В этом смысле для удобства пользователей все подразделения должны выдавать разработки наивысшего качества. Наш отдел не хочет заслонять от вас солнце.

Дальше