Как смена движка сказалась на звуке в World of Tanks Статьи редакции
В 2020 году World of Tanks отмечает 10-летний юбилей. Специально по этому поводу в игре стартовало событие «Десятилетие», во рамках которого всех игроков ждут подарки, а также множество воспоминаний о том, как развивалась и взрослела игра. За эти годы в ней произошли изменения как в визуальной составляющей игры, так и в звуковой.
На сегодняшний день звуковую картину в World of Tanks составляют более 50 тысяч файлов. К ним относятся озвучка, саундтреки, звуки интерфейса и непосредственно самих танков. Все они существуют для того, чтобы сообщить пользователям какие-то важные сведения о сражении, а также создать соответствующую картину боя.
О том, как создаются звуки в игре, как расположить их в миксе, чтобы они не превратились в звуковую кашу, а также о преимуществах перехода на новый движок Audiokinetic Wwise, в колонке для DTF рассказал один из ведущих аудиодизайнеров компании Wargaming Вячеслав Скадорва.
В 2016 году World of Tanks прешла на новый движок — Audiokinetic Wwise. Переход был обусловлен тем, что, работая на предыдущем движке FMOD в течение 5 лет, команда столкнулась с неким пределом, прыгнуть выше которого никак не получалось.
Ограничения, в частности, касались стриминга. У нас не было возможности стримить большое количество контента, что как следствие давало дополнительную нагрузку на оперативную память. И вообще в целом, было очень мало инструментов для оптимизации и профайлинга. Ну и в дополнение, качество кодеков также оставляло желать лучшего. А именно от кодеков зависит конечное качество звукового контента, который услышит игрок.
В то же время за период существования проекта было записано огромное количество высококачественного контента. Для этого специалисты команды выезжали на полигоны, и, не без хитростей приспосабливая микрофоны к различным частям танка, записывали весь необходимый материал. Теперь его нужно было применить в игре, чтобы выпрыгнуть из ловушки, в которую они попали по причине ограниченных функций старого движка.
Всё это привело к тому, что выбор был сделан в пользу движка Wwise. Он стал более гибким инструментом в руках аудиокоманды World of Tanks и открывал широчайшие возможности: начиная от оптимизации звука для слабых одноядерных устройств и заканчивая стабильной работой со стримами даже в условиях максимальной загрузки винчестера компьютера.
Но здесь ребята столкнулись с другим вопросом: а что же такое реалистичный звук танков? Ведь многие из нас, кто никоим образом не связан с военной техникой, знакомы с тем, как звучат, а главное, как стреляют танки лишь… по фильмам про войну да в лучшем случае роликам на YouTube. Это тот эталон, на который мы все равняемся, оценивая: похоже или нет.
На самом же деле в реальности звук танкового выстрела звучит очень громко и достаточно неприглядно. И уж точно слышать его в игре было бы делом малоприятным — ведь танки в World of Tanks стреляют чуть ли не ежесекундно. Тут-то и вступает в дело команда аудиодизайна. Их задача — сделать эти звуки такими, чтобы мы могли высказать свое экспертное мнение: да, вот так стреляют настоящие танки.
После смены движка звук в игре значительно изменился — в первую очередь качественно. Если взять за пример все тот же танковый выстрел или движение танка, то «невооруженным ухом» можно найти много отличий.
Наконец-то определившись с подходом к контенту, с тем, как должно всё звучать в игре, команда пришла к тому, что необходимо понять, как этот контент упорядочить. Отсюда возникла следующая задача: построить систему звуков таким образом, чтобы они максимально правильно использовались в игре — создать новую концепцию реализации звука.
Проанализировав все существующие звуки в игре, команда выделила 17 звуковых подсистем. Вот некоторые из них.
Попадания по танку игрока . Вероятно, наиболее информативная подсистема, которая довольно точно и не двусмысленно должна давать информацию игроку о полученном уроне.
Попадание игрока по танку противника. Отдельная подсистема, которая даёт информацию игроку, что он попал по танку противника. Даже если тот находится на большом расстоянии. Подсистема важна с точки зрения положительного фидбека игроку на его действия.
Трассеры или пролеты снарядов. Достаточно интересная и непростая подсистема, которая озвучивает пролетающий мимо снаряд. Трассер может дать информацию, что по игроку ведётся огонь определённым типом снаряда и стоит что-то предпринять. То есть в эту подсистему заложена информационная дифференциация на типы снарядов: бронебойный, кумулятивный, подкалиберный или фугасный.
Передвижение танка. Эта подсистема состоит из нескольких независимых друг от друга подсистем, таких как двигатель, трансмиссия, турбина, гусеницы, работа подвески и корпуса. В этой подсистеме мы попытались дать максимальный фидбек на действия игрока и окружающие условия. Звуки передвижения танка зависят от поверхности, по которой движется танк, от уклона местности, от того повреждён ли двигатель и, конечно же, от действий игрока при передвижении танка.
Музыка. Музыки в игре много и она весьма разнообразна. Каждая карта имеет своё уникальное музыкальное оформление. Начиная от саундтрека в момент загрузки карты и заканчивая «боевым» музыкальным дроном, который часами может звучать без повторений. Каждая тема карты уникальна и точно отражает страну или регион, где ведётся бой.
Но если их смешать в кучу и включить одновременно в микс, в колонках у «танкиста» будет полная каша. Поэтому было решено в первую очередь определить их информационную важность.
Звуки, информационная важность которых превышала условные 70%, попадали в информационную подсистему: сюда относятся звуки попаданий в танк игрока или трассеров. Они говорят «танкисту» о том, что необходимо изменить свои действия во время боя. Остальные звуки относятся к подсистеме художественной, их задача создавать необходимую атмосферу. Важность каждой подсистемы определялась на основе экспертизы разработчиков.
В целом при создании звука важно обращать внимание на все визуальные элементы, присутствующие в игре. И если есть хоть какая-то возможность перенести информационную нагрузку с визуальной части на аудиальную, то воспользоваться ей необходимо сполна. Только в таком случае можно получить идеальный аудиовизуальный поток. И до перехода на Wwise в World of Tanks с этим была проблема.
Что же касается подходов к созданию информационной и художественной подсистем, то они различаются кардинально. В информационной подсистеме звуки должны четко разниться между собой. Так, выстрел, фугасное попадание, взрывы и им подобные должны быть различимы с высокой вероятностью. Услышав, игрок не должен их спутать с какими-то другими. Зато у художественной подсистемы, наоборот, важна вариативность, естественность — как известно, двух одинаковых звуков в природе не бывают, всегда есть свои нюансы.
Впрочем, ни один человек сразу же не поймет даже простой биполярной информационной системы из двух элементов, которые он только что услышал. Не говоря уже про 8-10 разных калибров орудий. Тем не менее калибры орудий сделаны так, что при некоторой сноровке и тренировке игрок совершенно чётко их определяет. Любая система для начала предполагает её изучение.
Как же добиться вариативности? Ведь тогда для каждого события необходимо записать по нескольку семплов. Но разработчики World of Tanks пошли другим путем и использовали модульную систему.
Принцип её заключается в следующем: каждое звуковое событие состоит из нескольких мелких элементов. Например, тот же звук выстрела включает в себя 10 таких слоёв: атаку выстрела, тело выстрела, имитацию залипания уха (этакий характерный дисторшен, хруст), звук откатного механизма и так далее.
Все это «укладывается» в своеобразные контейнеры, включающие в себя от трёх до шести элементов, которые в случайном порядке соединяются между собой. Таким образом, каждый звук выстрела получается непохожим на другой.
Следующей задачей стала укладка всех звуки в качественный микс согласно информационно-художественной шкале. Для этого был использован инструмент HDR — глобальный сайдчейн-компрессор, который при возникновении более громких звуков, стоящих выше по шкале, делает тише нижестоящие.
Вверху своей шкалы разработчики поместили все информационные подсистемы, а вниз — все художественные. Получалось так, что во время игры, когда не происходит никаких важных для игрока событий, слышен красивый микс в полном диапазоне. Но как только в геймплее появляется что-то важное для игрока, вся «художественность» выталкивается из так называемого HDR-окна.
При этом информация подается последовательно, так как игрок не способен разделять огромное количество звуков одновременно, а значит, в первую очередь ему необходимо подавать то, что имеет для него высокий приоритет.
Так, если сравнить между собой три подсистемы — попадание в игрока, выстрел игрока и уничтожение союзника, то градация выглядит следующим образом: самый громкий звук — это попадание в танк игрока, затем его выстрел и, наконец, смерть союзника, которая будет идти последней по степени важности, а значит, намного тише.
Таким образом, инструмент HDR, который в Wwise используется для очистки микса и расширения динамического диапазона, саундкомандой World of Tanks был приспособлен для разделения информационной части боя от художественной. В итоге игра зазвучала совершенно по-другому.
На каком языке написан World of Tanks
Одной из самых популярных игр последних лет является World of Tanks, многопользовательская игра, в которой игроки управляют танками и сражаются в режиме реального времени. Одним из самых интересующих вопросов для игроков является на каком языке написана эта игра и какая технология использовалась.
По официальной информации, World of Tanks написана на языке программирования C++, который является одним из наиболее популярных языков программирования в игровой индустрии. Это язык низкого уровня, который позволяет написать быструю и эффективную программу, которая может работать на различных операционных системах. Использование C++ позволяет создавать игры с высокой производительностью и мощными возможностями обработки графики.
Однако, наличие преимуществ, как правило, сопровождается и отдельными недостатками. Одним из главных минусов использования C++ является относительная сложность самого языка и его синтаксиса. Написание чистого и читаемого кода может быть тяжелым для разработчиков, а это может привести к ошибкам и задержкам в работе. В дополнение к этому, разработка игр на C++ может быть более затратной и требовательной к ресурсам, поскольку требуется определенный уровень знаний и опыта.
Однако, независимо от выбора языка программирования и технологии, использованной для разработки игры, World of Tanks стала одной из самых успешных игр в мире и продолжает радовать своих игроков за счет отличной графики и геймплея.
На каком языке написана игра World of Tanks: плюсы и минусы
Языки программирования, используемые в World of Tanks
World of Tanks была разработана компанией Wargaming на языке программирования C++. C++ является одним из наиболее эффективных и производительных языков программирования, что делает его идеальным для разработки компьютерных игр.
Вместе с C++ World of Tanks использует и другие технологии. Например, для создания некоторых частей игры, таких как пользовательский интерфейс, используются языки HTML, CSS и JavaScript.
Плюсы использования C++ в World of Tanks
- C++ является языком низкого уровня, что позволяет управлять аппаратными ресурсами компьютера более точно. Это позволяет получать максимальную производительность игры.
- C++ имеет высокую скорость выполнения программы, что позволяет игрокам наслаждаться графикой без заметных задержек.
- C++ предоставляет широкие возможности для оптимизации программного кода, давая разработчикам возможность создавать высококачественные игры.
Минусы использования C++ в World of Tanks
- Использование C++ требует от разработчиков большого опыта работы с этим языком, что может быть сложно для некоторых начинающих разработчиков.
- Низкоуровневый язык программирования может потребовать от разработчиков большего времени на написание кода, чем более высокоуровневые языки.
- Сложность написания кода на C++ может привести к большему числу ошибок в программе, которые могут влиять на работу игры.
В целом, использование C++ в World of Tanks позволяет создавать производительные и качественные игры, но может потребовать от разработчиков большой опыт и временные затраты.
История создания игры World of Tanks
Первые шаги
Разработка игры World of Tanks началась в 2008 году компанией Wargaming, которая на данный момент является ее издателем и разработчиком. Идея создать многопользовательскую игру, посвященную танковым сражениям, пришла к Виктору Кислому — генеральному директору Wargaming, еще в 2006 году. Кислый был убежден в том, что такой продукт сможет найти свою аудиторию.
Первый релиз
Первая версия World of Tanks вышла в режиме закрытой беты в 2010 году, а 12 апреля того же года игра стала доступна для всех желающих. Однако, даже в самом начале разработки, игроки проявили большой интерес к проекту, а первый релиз полюбился многим.
Продолжение развития
С того момента, как игра была выпущена, ее разработчики не прекращали работу над проектом. Они внедряли новые функции и возможности, улучшали графику, добавляли новые карты. Сейчас World of Tanks — одна из самых популярных многопользовательских игр в мире, которая упорно развивается и привлекает все больше новых игроков.
- Год выпуска: 2010;
- Разработчик: Wargaming;
- Жанр: онлайн-игра, шутер, симулятор танковых сражений;
- Официальный сайт: https://worldoftanks.ru/.
Язык программирования и технологии
Выбор языка программирования
Язык программирования играет важную роль в разработке любой игры, в том числе и World of Tanks. В разработке этой игры был выбран язык программирования C++, который является одним из наиболее распространенных в индустрии разработки компьютерных игр. Он обеспечивает высокую скорость работы, что позволяет создавать сложные игровые механики и обрабатывать большие объемы данных.
Технологии разработки
Кроме выбора языка программирования, важно также выбрать подходящие технологии разработки. В World of Tanks для создания графической оболочки используется технология DirectX, которая является одной из наиболее распространенных в индустрии разработки компьютерных игр. Она обеспечивает высокую производительность, позволяет создавать реалистичные графические эффекты и обрабатывать большие объемы данных.
Плюсы и минусы выбранных технологий
Выбор языка программирования и технологий разработки имеет свои плюсы и минусы. Одним из преимуществ выбранного языка C++ является его высокая скорость работы, что позволяет создавать сложные игровые механики и обрабатывать большие объемы данных. Однако, этот язык является более сложным в использовании, чем, например, язык Python.
Технология DirectX позволяет создавать высококачественную и реалистичную графику, что является важным фактором для игроков. Однако, эта технология может требовать высокой производительности компьютера, что может ограничивать количество игроков, которые могут играть в игру.
Преимущества использования C++ в разработке игры World of Tanks
1. Эффективность
Язык программирования C++ славится своей высокой эффективностью и производительностью на всех уровнях – от написания кода до запуска готовой программы. Это делает его особенно привлекательным для разработки игр и других приложений, которые требуют быстрого и плавного выполнения.
2. Низкоуровневый доступ к железу
C++ предоставляет доступ к низкоуровневым операциям с железом, что позволяет разработчикам создавать более точные и эффективные приложения, не ограничиваясь технологиями высокого уровня. В случае с World of Tanks это особенно важно для достижения максимальной производительности и масштабируемости.
3. Гибкость
C++ является одним из самых гибких языков программирования, позволяющим разработчикам создавать приложения относительно любой сложности и масштаба. Это особенно важно для игровой индустрии, где постоянно возникают новые требования и ограничения.
4. Поддержка многопоточности
C++ поддерживает работу с несколькими потоками параллельно, что повышает производительность и реактивность приложения. В случае с World of Tanks это особенно важно, так как игра использует многопоточность для обеспечения быстрой и плавной игровой механики.
5. Широкое сообщество разработчиков
C++ имеет одно из самых больших сообществ разработчиков, что обеспечивает достаточное количество готовых библиотек, инструментов и решений для решения различных задач в процессе разработки игр. Это также позволяет разработчикам быстро обмениваться опытом и находить решения в случае возникновения проблем.
Недостатки использования C++
Сложная синтаксическая структура
Одним из основных недостатков языка C++ является сложность его синтаксиса. Для того, чтобы программист мог эффективно использовать язык, он должен полностью овладеть его грамматикой и структурой. Это может вызывать проблемы при обучении языку и разработке сложных проектов в больших командах.
Небезопасность языка
Другой недостаток C++ заключается в его небезопасности. В языке недостаточно контроля типов, что делает многие программы подверженными ошибкам во время выполнения. Это также создает проблемы со стабильностью и безопасностью кода.
Отсутствие автоматической сборки мусора
Язык C++ не имеет встроенной системы сборки мусора, что требует от программиста вручную освобождать память, выделенную под объекты после их использования. Это может быть достаточно сложно, особенно в проектах большого масштаба, что делает язык менее привлекательным для разработки приложений.
Сложный процесс отладки
Отладка C++-приложений может быть довольно сложной и затратной. Дело в том, что язык имеет достаточно большое количество низкоуровневых инструментов, которые требуют от программиста больших усилий и времени, чтобы понимать и использовать их. Это может замедлять процесс разработки и создавать проблемы при решении проблем на ранних этапах разработки.
Альтернативы C++ для написания игр
1. Java
Java является популярным языком программирования, который также может использоваться для написания игр. Он обеспечивает многопоточность, управление памятью и высокую скорость выполнения. Существуют множество фреймворков и библиотек, которые делают Java подходящим для разработки игр.
C# является динамическим языком программирования, который идеально подходит для создания игр. Он отличается от C++ тем, что обеспечивает автоматическую сборку мусора, что снижает риск ошибок. C# поддерживает многопоточность, а также имеет обширную библиотеку для разработки игрных приложений.
3. Python
Python является языком программирования высокого уровня и обеспечивает быстрое создание прототипов. Python также предоставляет мощные библиотеки и инструменты для написания игр. Он поддерживает многопоточность и управление памятью, а также предоставляет возможность взаимодействия с другими языками программирования.
4. Lua
Lua — это легковесный язык программирования, который может быть использован для добавления интерактивности в игры. Он прост в использовании и обладает хорошей производительностью. Lua также имеет множество библиотек и фреймворков для создания игр.
5. JavaScript
JavaScript может использоваться для создания браузерных игр. Он может быть использован для создания игр на HTML5 или для создания клиент-серверных приложений, таких как многопользовательские онлайн игры. JavaScript также обеспечивает мощную интеграцию с другими языками программирования, такими как C++.
- Java, C#, Python, Lua и JavaScript являются хорошими альтернативами C++ для написания игр.
- Каждый из этих языков имеет свои преимущества и недостатки, и выбор зависит от конкретного проекта и потребностей разработчика.
- Несмотря на то, что C++ остается популярным языком программирования для создания игр, возможности, предоставляемые другими языками, делают их привлекательными вариантами для разработки игр.
Оценка качества кода и производительности игры
Качество кода
Код игры World of Tanks состоит из множества строк, классов и методов. Для оценки качества кода используются различные методы, такие как статический анализ кода, тестирование, ревью кода. Картинка ниже показывает примерное соотношение количества строк кода и количества ошибок в коде:

Также важным аспектом является поддерживаемость кода, которая определяется тем, насколько легко можно вносить изменения в код без возникновения ошибок и насколько быстро можно разбираться в уже существующем коде.
Производительность игры
Производительность игры зависит от многих факторов, таких как оптимизация кода, использование современных технологий, грамотное проектирование базы данных и серверной инфраструктуры.
Использование современных технологий, таких как многопоточное программирование и оптимизация запросов к базе данных может значительно повысить производительность игры.
Также важным аспектом является масштабируемость игры, то есть возможность ее расширения без потери производительности.
Вопрос-ответ
На каком языке написана игра World of Tanks?
Игра написана на языке программирования C++, который широко используется в разработке компьютерных игр.
Какой язык программирования лучше использовать для разработки игр?
Это зависит от требований и специфики проекта. C++ является очень популярным языком программирования для игр, но также используются другие языки, например, C#, Java и Python.
Какие плюсы использования языка программирования C++ в разработке игр?
Язык C++ является быстрым и эффективным, что позволяет создавать игры с высокой производительностью. Он имеет широкие возможности для работы с памятью, что позволяет разработчикам оптимизировать программу для максимальной производительности. Кроме того, в C++ доступно множество библиотек и инструментов для разработки игр.
Какие минусы использования языка программирования C++ в разработке игр?
Язык C++ требует более обширных знаний и опыта программирования, чем другие языки, что может ограничивать количество доступных разработчиков. Также C++ может быть подвержен ошибкам и уязвимостям, которые могут привести к ошибкам в процессе работы игры.
Какие другие языки программирования могут быть использованы для разработки игр?
Кроме C++, для разработки игр можно использовать и другие языки программирования, такие как C#, Java, Python, Lua, JavaScript. Каждый язык имеет свои преимущества и недостатки, которые могут быть учтены при выборе технологии разработки.
Какой язык программирования использовался для создания других популярных игр?
В зависимости от игры, различные языки программирования могут быть использованы. Например, для создания Minecraft использовался язык программирования Java, а для Call of Duty: Modern Warfare 3 — языки C++ и C#.
Кто и когда придумал игру Ворлд оф Танкс, в какой стране создали и история

«World of Tanks» представляет собой онлайн-игру, созданную в жанре танкового симулятора. Игровой процесс представляет собой имитацию военного периода 1941-1945 годов. Моделью этой разработки считается форма free-to-play. Это значит, что пользователи не несут принудительных затрат. Несмотря на большую популярность игры, далеко не всем известно, кто конкретно создал «Ворлд оф Танкс».
Кто придумал игру «World of Tanks»
Автором этого продукта является фирма Wargaming.net. Она считается разработчиком игр и специализируется на создании околоигровых сервисов на разных платформах. Страной-производителем приложения считается Беларусь. При этом штаб-квартира находится на Кипре.
Особенности игры и геймплей
После запуска приложения игрок попадает в общее сражение. Возможности потренироваться в одиночном режиме нет. Новичок имеет по 1 танку от каждой игровой нации. Во время участия в боях игроки получают внутриигровую валюту. Они занимаются тренировкой экипажей и накапливают очки опыта, дающие доступ к новому оборудованию.
История создания «Ворлд оф Танкс»
«Ворлд оф Танкс» имеет интересную историю создания. При этом далеко не всем людям известно, когда и кем была создана эта игра.
Идея и старт разработки
Бренд Wargaming.net появился еще в 1998 году. Студия не была популярной, но считалась весьма перспективной. На момент своего создания она дорабатывала приложения сторонних клиентов, устраивала релизы игр и выполняла другие похожие работы.

При этом задумка успешной игры возникла случайно. Движок будущих создателей «World of Tanks» заинтересовал фирму BlueLithium, которая специализировалась на интернет-рекламе. История создания игры началась 12 декабря 2008 года.
Перед программистами встала интересная задача. Они имели внушительную сумму денег, желание создать качественный продукт и наброски онлайн-игры в сфере фэнтези. После обсуждений программисты решили отказаться от идеи с фантастикой и начать работать над совершенно иным продуктом. Его рабочее название было «Танкодром».
Стоит учитывать, что создатели игры долго работали над привлечением серьезных инвесторов. Если бы они не отказались от идеи с фантастикой, все было бы проще. Это связано с тем, что уровень доверия к приложениям об эльфах и орках был выше. Тем не менее, компания продолжала работать. Ей удалось добиться результатов уже спустя несколько месяцев.

Предрелиз и бетатестирование
Весной 2009 года разработчики анонсировали создание игры, а в сентябре – начали альфа-тестирование продукта. На тот момент пользователям предложили опробовать 5 моделей танков на недоработанной карте.
Последующее обновление произошло уже в 2010 году. Зимой появился первый тест приложения, который носил закрытый характер. Весной была создана возможность прокачивать танки за очки. Летом 2010 года объявили бета-тестирование. Оно было открытым.
Запуск
12 августа 2010 года компания провела официальный релиз игры. Нужно сказать, что на начальном этапе разработки создателей игры «World of Tanks» подвергались многочисленным насмешкам со стороны пользователей и инвесторов. Однако после официального релиза игры компания стала одним из самых известных брендов в игровом мире.

Важно учитывать, что запуск игры был не слишком простым. Оригинальная идея привлекала все больше и больше пользователей. Это часто приводило к падению серверов, которые не выдерживали такого потока игроков.
Развитие и покорения мира
В январе 2011 года программе удалось дважды достичь планки в 1 миллион пользователей. 4 января такое число игроков зарегистрировалось в мире. При этом 18 января 1 миллион пользователей появилось в русскоязычной версии.
Еще одним важным январским достижением стал мировой рекорд по количеству игроков, которые одновременно находились на 1 сервере. Этот показатель достиг 74536 человек. В тот период цифра казалась просто огромной, однако со временем стало ясно, что это далеко не предел.

Игроки уже могли вести разные бои – ротные, одиночные и взводные. При этом пользователи уже имели возможность объединяться в кланы. Для их испытания в полной мере была создана «Мировая война». Ее разработал и внедрил Кирилл Маль. Тестирование этой опции началось 1 февраля 2011 года. Уже 10 февраля запустили на карте полный передел территорий.
В феврале 2011 года проект внесли в Книгу рекордов Гиннесса за очередное достижение по одновременному количеству игроков на сервере. Ни одной другой игре не удавалось до этого собрать 91311 человек.
Весной 2011 года бренд занялся покорением восточного рынка. Так, 15 марта 2011 года был проведен релиз приложения в Китае.

Киберспортивные соревнования
Сегодня проводятся масштабные киберспортивные соревнования по игре «World of Tanks». В 2012 году игра оказалась в составе дисциплин самого крупного мирового мероприятия World Cyber Games. Киберспортивные соревнования постоянно набирают популярность и привлекают все больше пользователей. Данное направление стремительно развивается, причем это касается и аудитории, и финансовой стороны.
Обновления игры
За время своего существования приложение неоднократно обновлялось. Многократные усовершенствования сделали игру еще популярнее.
Периодические
В сентябре 2012 года появилось первое обновление. Оно было направлено на совершенствование звуков, освещения, физики. Также в игру была введена система теней. В октябре 2012 года разработчики добавили пятую нацию – Великобританию. Тогда же «World of Tanks» впервые получила премию Golden Joystick Awards как «Лучшая ММО».

Глобальное
В 2018 году разработчики предложили пользователям первое крупное обновление 1.0. Оно подразумевало введение новой звуковой системы и графики. К важным усовершенствованиям стоит отнести повышение производительности, улучшение качества музыки, введение нового графического движка. Также повысились системные требования к ПК.
Изменение графического движка
Это обновление ознаменовалось переходом от старого движка BigWorld к более совершенному Core. Его разработали для «World of Tanks». Движок позволяет устанавливать новые технологические настройки. Также он позволяет применять новые технологии, улучшающие игровую графику. Это делает игру реалистичнее. В карты добавлено много разных элементов, которые способствуют лучшему погружению в игру.

Также разработчики ввели изменение погоды с учетом сезона. При этом игрок попадает с летней карты на осеннюю, а затем – на зимнюю. К тому же программисты усовершенствовали качество лучей солнца. Помимо этого, изменения коснулись визуализации разрушений.
Изменение параметров производительности
Разработчики сделали следующее:
- оптимизировали интерфейс;
- усовершенствовали модели растений;
- увеличили детализацию;
- оптимизировали систему частиц.
Музыка
Обновление музыки коснулось полной переработки композиций. Среди разработчиков игры были и композиторы. Они создали и добавили больше 60 новых треков. Каждая карта имеет свой собственный саундтрек. Также предусмотрены уникальные звуки для всех действий.

Системные требования
Чтобы игра нормально функционировала, персональный компьютер должен отвечать целому ряду требований.
Минимальные системные требования
Вначале игра была не очень требовательной, поскольку использовала старый движок. Но после запуска обновлений требования повысились. Для запуска программы необходимо следующее:
- операционная система Microsoft Windows XP SP3/Vista/7/8/10;
- свободное место 36 гигабайт для установки игры;
- процессор с двумя или больше ядрами, который поддерживает технологию SSE2;
- оперативная память 1,5 гигабайта при использовании Windows XP SP3 – в других случаях потребуется минимум 2 гигабайта ОП;
- видеоадаптер минимум GeForce 6800/ATI HD X2400 XT 256 MB RAM;
- соединение минимум 256 килобит в секунду.

Рекомендуемые требования
Чтобы игра нормально работала, потребуется следующее:
- процессор не младше Intel Core i5;
- наличие в системе DirectX 9.0;
- видеоадаптер минимум GeForce GTX660 (2 гигабайта)/Radeon HD 7850 (2 гигабайта);
- оперативная память минимум 4 гигабайта – для стабильной работы.
Требования для ультра-настроек
Людям, которые имеют мощный компьютер, потребуется:
- операционная система Microsoft Windows 7/8/10 64-bit;
- процессор Intel Core i5-7400 или AMD Ryzen 5 1500 X;
- свободное место 55 гигабайт;
- видеоадаптер GeForce GTX1050ti (4 гигабайта)/Radeon RX 570 (24 гигабайта);
- оперативная память 8 гигабайт;
- соединение минимум 1024 килобита в секунду.
Сегодня игра «World of Tanks» пользуется широкой популярностью. За свои достижения она даже попала в Книгу рекордов Гиннесса. Однако так было не всегда. При создании приложения разработчики столкнулись с различными препятствиями, однако сумели успешно их преодолеть.
Это геймдев, детка! Интервью с разработчиками World of Tanks

Наш сервер вращается на движке BigWorld — это C++ и Python. Все, что критично для скорости, — на C++, все остальное делается на Python.
Железа у нас очень много, огромный зоопарк. Без автоматизации здесь никак. Для автоматизации мы используем Ansible, Fabric и Puppet. Для мониторинга — Zabbix.
Мы смотрим в сторону модной виртуализации вроде Docker, но пока не хотим пускать это в продакшен. В данный момент пытаемся перевести на такую виртуализацию локальные инстансы, так как это серьезная экономия ресурсов. Сейчас они тоже на виртуалках, но на более «серьезных», не настолько специализированных — VMware и прочих.
Какая-то часть всего написана на Erlang, к примеру транзакции. Но это лишь внешние прикрутки к движку, некие отдельные костыли — подсистемы, вроде доставки сообщений и связи. Движок этим не занимается.
У нас очень специфическая разработка, много тулз, очень сильно завязанных на нас. То есть мы используем open source, стараемся контрибутить, проводить всякие meetup (я сам люблю в них участвовать). Однако при этом у нас есть очень специфические вещи, которые не стоит выкладывать в паблик. Не потому, что это какой-то большой секрет, а просто потому, что, кроме нас, они вообще никому не нужны.
Железо у нас свое. Мы сами выбираем необходимое железо, закупаем и дальше оперируем с ним. Потому что облака — это, конечно, здорово, но далеко не всем подходят.
Если вдруг произойдет некий «взрыв» нагрузки, у нас есть резервные мощности на холодном старте. Эдакий запасной вариант, чтобы быстро поднять еще один кластер в случае скачка нагрузки.
Когда ты сам полностью владеешь железом, то можешь реально оценивать ситуацию. Скажем, мы долгое время играли с гипертрейдингом и до сих пор пытаемся оценить его плюсы и минусы. В некоторых ситуациях он только мешал, и мы его сознательно отключали. Имея доступ к железу, мы сами можем обновлять прошивки BIOS и смотреть, что там происходит.
В целом, если возникает необходимость, мы можем все переставить и поднять стек в течение суток или меньше. Естественно, мы стараемся балансировать железо по проектам, и когда железо нужно куда-либо перебросить — это тоже не проблема, тоже делается довольно быстро.
За масштабирование у нас в основном отвечает RabbitMQ. Плюс у BigWorld есть собственные технологии связи в кластеризации (среди машин, среди кластеров). Русский сервер сейчас — это девять периферий и центр. BigWorld имеет собственную технологию связи периферии с центром, собственный протокол. «Кролик» используется для связи BigWorld и веба, отдельно, как стека.
Наши QA имеют доступ к волшебной кнопке «сделать мне хорошо». То есть в любой момент, когда им нужна определенная версия какого-либо окружения или проекта, они нажимают эту кнопку, и им, как ни странно, становится хорошо. Я считаю, к этому стоит стремиться всем — максимально автоматизировать свою работу.
Циклы разработки у нас в основном месячные. По завершении — выкатываемся на продакшен. Локально чаще. Продакшен мы выкатываем под ручным контролем. Частично все это автоматизировано, частично нет.
Деплоим мы прямо из сырцов, никаких пакетов. Дело в том, что мы работаем с кодом большого объема, и каждый раз собирать пакеты размером много-много гигабайт никто не хочет. Тем более когда просто нужно сделать патч. К тому же доставка идет сразу на много серверов. Это сразу забивает канал и ресурсы, на которые в тот же момент идет нагрузка и от игроков. То есть нужно делать все очень аккуратно.
Дмитрий Трофимов
Что такое BigWorld со стороны клиента? Как ни парадоксально, тот же самый Python, что и на сервере. К BigWorld у нас подключена технология, позволяющая интегрировать Flash внутрь клиента игры. Там своя виртуальная машина, своя реализация от компании AutoDesk. Есть GFX-плеер, которой гоняет Flash внутри клиента.
Да, мы используем Flash как UI для «Танков».
Есть мнение, что Flash умирает. Это не совсем так. Тренд таков – Flash переходит в ранг узкоспециализированной технологии. Да, всякие Flash-игры в вебе, скорее всего, и правда умрут. Но в таких крупных проектах, как «Танки», «Корабли» и так далее, Flash оказалась очень востребованной технологией. Она как нельзя лучше подходит для решения задач задач по оптимизации отрисовки UI, облегченных приемов создания анимаций, а так же программирования интерфейсной логики.
Почему именно Flash? Во-первых, когда мы взялись за Flash, никаких альтернатив вроде HTML5 еще не было вовсе. Во-вторых, Flash нативно поддерживает HTML, и некоторые вещи мы делаем именно HTML-разметкой.
Переход на HTML5 означал бы переобучение огромной команды флеш-разработчиков на новую технологию, что нельзя назвать оптимальным решением. Ну и конечно, не стоит забывать о том, что все это просто нужно будет переписать. Это нам сейчас не подходит.
Лично я бы вообще не стал рассчитывать на HTML5, на данном этапе его развития, учитывая, что он не слишком хорошо держится на рынке. У него есть конкуренты, которые продвигаются довольно активно, — Mozilla, Unity, у них сейчас очень тесные взаимоотношения по развитию этой технологии. В результате HTML5 может вообще отойти в сторону.
Кстати, мы пытались не использовать Flash, делали UI доступными альтернативами — компонентами Python. Как выяснилось позже, это просто страшные костыли, постоянно чего-то не хватало, а то, что было, не умело того, что нам нужно. Мы стали думать, что с этим делать, и принялись создавать различные самописные компоненты. Как только дело дошло до сложных анимаций, эффектов и прочего, стало ясно, что нужен очень серьезный редактор, чтобы задавать различные визуальные вещи, анимировать их и «оживлять». Flash оказалась единственной по-настоящему мощной технологией, которая умела все это. С тех пор используем ее.
Хотя мы и ищем альтернативы Flash, пока она прекрасно справляется с текущими задачами. Внутреннюю реализацию делать пока не планируем.
Из Flash мы используем всякие open source штуки, типа GreenSock, портированные на AS3 стандартные библиотеки Java для работы со структурами данных. От green sock впоследствии отказались, поскольку под scaleform данная библиотека работала медленно
Единственное, что могу отметить, — поиск флешеров сейчас стал некоторой проблемой. Дело в том, что наши запросы по Flash значительно выросли, а почти все самые опытные ребята или уже работают у нас в команде, или заняты в смежных компаниях. На рынке действительно стало сложно найти хорошего, опытного специалиста.
Филипп Кучерявый
Разумеется, Flash — не единственная клиентская технология. Разные платформы — разные технологии. Так, для Xbox пилится своей клиент; для мобильной версии у нас тоже свой движок, которым активно занимается наша студия. У нас много разных технологий.
Хранение данных
Дмитрий Овчинников
В вебе мы используем стек Python/Django. Также есть несколько асинхронных проектов на Twisted + Erlang. Ну и плюс memcached, RabbitMQ и MySQL в качестве data storage. Этот набор нас вполне устраивает по скорости работы и предоставляемым возможностям
Мы используем OpenID в качестве системы аутентификации. С ним мы можем очень быстро интегрировать поддержку Wargaming.net ID в новые проекты компании.
Филипп Кучерявый
Мы до сих пор экспериментируем с разными форками MySQL. В основном все упирается в железо. Все данные, касающиеся BigWorld и веба, висят на «мускулях». То есть у веба свои базы, у BigWorld — свои, но они умеют общаться друг с другом через RabbitMQ.
У нас используются Percona и MySQL. Притом мы смотрим их на разных ОС. Точно знаю, что сверхоптимизацией мы не занимается, в основном у нас все из коробки.
RabbitMQ хорошо кластеризируется, он подходит под наши задачи. Так сложилось исторически, что мы активно его используем. В деплойменте разрабатываем различные собственные тулзы (то же логирование и другие плюшки).
Мы обращаем внимание на современные, модные стеки, вроде Kibana и Logstash. Для них мы посматриваем, к примеру, на ZeroMQ. Но кластеру нужно централизованное решение, ZeroMQ не вписывается, оно децентрализовано, — RabbitMQ лучше ложится в нашу схему.
У нас есть свой кластер Hadoop. С ним работают data-ребята, это статистика и смежные вещи. Эти данные мы собираем не для игроков, а для себя. Агрегируем различные статы, анализируем, и потом наши аналитики занимаются расчетами.
NoSQL базы данных тоже используем, но не для продакшена. У себя в деплойменте мы используем MongoDB для хранения статистики и информации: собираем туда статы серверов и процессим их дальше уже своими тулзами. Грубо говоря, это просто хранилище JSON-данных. Это не продакшен, это просто помощь нам самим.
Сложности и фейлы
Филипп Кучерявый
Ни одному проекту не удается полностью избежать фейлов. Лично мой первый фейл случился на тестовом сервере. Этот сервер тоже продакшен, просто предназначен не для игроков, а для нас самих, для тестов. Это был мой самый первый деплой в компании вообще, я тогда отработал только три месяца. Я выкатил код, мы его проверили, и оказалось, что я выкатил вообще не тот код. Пришлось перевыкатить, просить QA еще раз все проверить. Было стыдно. Я тогда очень хорошо запомнил, что все стоит перепроверять и быть внимательнее.
Часто фейлы происходят по независящим от нас причинам. Порой из строя выходит оборудование, и приходится реагировать быстро. Бывает, что технические проблемы возникают не у нас, а у внешних провайдеров.
Как-то раз возникла ситуация: в суппорт поступало множество жалоб, что игроки не могут играть, мол, все пропало, мы все умрем, ничего не работает. Мы начали разбираться, но никто не признавался. Подозрение пало на одну из магистралей России. Наши ребята из суппорта тогда просто обзвонили всех знакомых, кто когда-либо работал в провайдерах, и выяснили, что, да, у какого-то провайдера действительно легла магистраль. Просто те не признавались.
Больше всего проблем с провайдерами возникает в Китае. Там, конечно, и нагрузка достаточно хорошая, но проблемы возникают просто из-за связи с Китаем. Особенности китайского интернета таковы, что там между двумя соседними площадками связь может быть хуже, чем между мной и Китаем. Ну и нельзя забывать их заморочки с файрволами — все технические подробности очень долго согласовываются.
Китай активно фильтрует и режет все. Все, кто работает с Китаем и их провайдерами, проходят обязательную сертификацию всего, что идет наружу. Они активно смотрят по портам и вырезают лишнее. Мы с ними даже порты согласовывали.
Начинающим (и не только) игроделам
Дмитрий Трофимов
Когда начинаешь собственный проект, нужно понимать, каков твой стартовый бюджет. Если стартовый бюджет меньше миллиона долларов, ни о какой Flash речи не идет.
Мы часто говорим: «Это геймдев, детка!» Рынок геймдева очень бурный. Скорость смены технологий здесь просто фантастическая, никто ни от чего не застрахован.
Иногда приходится поддерживать легаси, просто потому, что это дешевле. Даже если мы возьмем для работы над проектом какую-то суперактуальную и многообещающую технологию, вполне возможно, что, когда понадобится, будет очень тяжело и дорого эту технологию поменять. Так что выбор прост: либо смириться и жить с этим, поддерживая старую технологию, либо переписывать все глобально, менять кадры, переобучаться. Это дорого и зачастую неоправданно.
Филипп Кучерявый
Действуйте раундами. Любой продукт нужно делать исходя из того, что ты сам знаешь, чтобы он максимально быстро окупился. Если ты что-то знаешь и любишь, нет смысла менять технологию и пытаться по-быстрому вникнуть во что-то другое только потому, что оно круче и эту технологию будут поддерживать еще N лет.
Схема проста: запилил продукт, получил деньги. Нанял разработчиков, запилил еще более крутой продукт, получил больше денег. А вечно пилить что-то Великое. оно ведь может не выстрелить. Не каждый рождает Minecraft.
Все зависит от ресурсов — денег, времени и людей. Если начинающей компании нужно по максимуму ограничить себя, то совет, который написан во всех учебниках по бизнесу, — выжимайте максимум из того, что у вас есть, а все остальное старайтесь спихнуть на кого-то еще.
Делегируйте обязанности. Скажем, если у компании нет ресурсов, нет хороших админов для железа, зачем вообще самостоятельно этим заморачиваться? Такой компании проще выйти в облако, быстро подняться, заработать денег, нанять кого-нибудь и уже тогда думать о железе.
Дмитрий Трофимов
Разные подходы и отношение к технологиям — это разные бизнес-модели. К примеру, можно сразу потратить много денег, запилить суперабстрактную систему (которую потом, кстати, придется весьма недешево обслуживать). Но при этом можно вообще не выйти на рынок, потому что старт был слишком долгим. Либо можно ужиматься, хардкодить и говнокодить, потом мучиться с сопровождением, но при этом выйти на рынок и быстро реализовать какие-то фичи. И получать деньги.
О себе
Филипп Кучерявый
В Wargaming я работаю уже более двух с половиной лет. Меня взяли джуниором, прямо из универа, где я учился на радиофизика. В итоге я так и не доучился — сделал выбор в пользу работы.
Как вообще я попал сюда? После третьего курса активно искал, чем себя занять. На тот момент я знал на продвинутом уровне Linux и Python. Обнаружил вакансию в WG, но благополучно ее прошляпил. Меня приглашали безопасником в банк, были еще какие-то вакансии по мелочи, но я переждал месяц, и снова появилась вакансия в WG. Я пришел сюда на собеседование и в итоге остался, о чем ни капли не жалею.
Я очень люблю читать, поглощаю массу информации. Из веб-ресурсов читаю Хабру, The Hacker News, «Хакер» и много чего другого.
На досуге попиливаю на Python на GitHub. Но это домашние разработки, больше направленные на обучение самого себя. Я стараюсь специально лезть в те области, с которыми раньше не сталкивался, которые мне интересны.
На работе я тоже пишу на Python, но чаще это какие-то небольшие приблуды для помощи, для автоматизации чего-либо. Дома я пытаюсь заниматься другими вещами, скажем асинхронным программированием.
Для меня работа — это хобби, за которое платят хорошие деньги. Как еще это описать? WG — это коллектив, в который я прихожу пообщаться на интересные мне темы. Это комьюнити, которое самоорганизовывается по интересам.
Периодически я выступаю на meetup’ах, и это действительно интересно. Собираются разные люди из того же Минска. Они не знают друг друга, пытаются объединиться, познакомиться. Здорово, когда приходишь туда, видишь человека уже в третий раз, и вы уже отлично общаетесь, обмениваетесь контактами. Это объединяет.
Дмитрий Трофимов
Я занимаюсь кодингом с четырнадцати лет. Сразу после учебы пошел работать девелопером. Меня взяли на работу по той же схеме, которую мы уже обсуждали: я не имел опыта в Java, но меня взяли Java-разработчиком, на обучение. Так я проработал около года, а потом случился кризис, и меня занесло в геймдев. Компания RamStudio тогда искала Flash-разработчиков, я прошел собеседование и там научился Flash-технологии, которую сам изначально не знал. После я решил перейти в более серьезный проект и через некоторое время попал в Wargaming.
Спустя какое-то время я «прокачался», разобрался со всеми нужными технологиями, прикинул специфику «Танков» и сейчас в свободное время больше занимаюсь не Flash — я увлекся мобильной разработкой, она очень интересно пересекается с Java.
Для меня работа — это тоже хобби, за которое мне платят деньги. Я занимаюсь этим хобби уже больше десяти лет, и порой мне кажется, что это просто феерическое везение, что так не бывает. Могу сказать одно — делай то, что тебе нравится, и у тебя все получится.
Дмитрий Овчинников
При ожидаемом от разработчика стремлении постоянно совершенствоваться, я порой просто люблю сесть на диван и поиграть в Playstation :). Люблю вкусно поесть, а моя голубая мечта — переписать «Рельсы» на Python. Я очень нежно люблю Ruby on Rails, а поскольку в работе мы используем Django, мне порой не хватает тех уникальных возможностей, которые кружат голову при использовании этого фреймворка.
Мне глубоко симпатичен мир Ruby, их конвенции, соглашения, подходы. Хочется понемногу перетащить все это. может быть, в стол. Но сама мысль о том, что я это делаю, мне нравится. Хотя я вряд ли кому-то это покажу :).
Как ни странно, до WG я особо на Python не писал. Хотя в веб-разработке я давно: начинал на Perl, потом у меня были разные отношения с Ruby, PHP и так далее. Когда в Wargaming мне предложили писать на Python, я подумал — почему бы и нет? Опыт и понимание у меня есть, а уж в питоне прокачаюсь по ходу дела :). Так и вышло.
Я повидал много компаний: работал в аутсорсинговых компаниях, в продуктовых, сейчас вот в геймдеве. Могу сказать, что Wargaming — это самое удачное, на мой взгляд, сплочение профессионалов, которое можно собрать в индустрии. При этом все они очень активные, веселые и интересные люди, с которыми приятно общаться каждый день.
В Wargaming постоянно происходит какая-то внерабочая активность, в том числе и организованная самими сотрудниками WG (спортивные ивенты, технические, meetup’ы). Компания не стоит в стороне — всячески помогает и поддерживает подобную самоорганизацию.
Мы проводим ежемесячные Python Meetup в Минске, при поддержке компании Wargaming, стремясь расширить комьюнити разработчиков.
Очень сложно передать, что ты чувствуешь, являясь частью Wargaming. Можно посмотреть фотоотчеты, видео с наших ивентов, но пока ты не придешь сюда — не поймешь.
Как попасть в Wargaming
Филипп Кучерявый
Нельзя сказать, что для работы в WG нужно знать конкретно вот это и то. Лично я считаю, что в жизни нужно найти то, что тебе нравится, и заниматься этим. Не нужно ориентироваться на конкретную компанию. Когда я сам искал работу, я искал вакансии «под себя», знал, что хочу заниматься Python. Я искал по этому критерию, и на тот момент работу предлагали буквально три компании, в числе которых была Wargaming.
В жизни нужно найти свое и получать от этого фан, идти по этому пути, и тогда тебя возьмут куда угодно. Когда я проходил собеседование в WG, мой будущий шеф сказал, что, глядя на мое резюме, он вообще не хотел меня собеседовать, — на этом настояли HR, потому что у меня было очень сильное мотивационное письмо. В итоге шеф признался, что совсем не жалеет, — на собеседовании у меня горели глаза, и ровно поэтому меня и взяли на работу. Я просто фанат своего дела.
Дмитрий Трофимов
Если ты фанат своего дела, то можно найти работу по душе, и необязательно затачивать свои навыки под конкретную компанию. Однако, как руководитель достаточно, я скажу еще об одном скилле, без которого никак.
Учись общаться с людьми, находить общий язык. Это едва ли не важнее, чем быть крутым технарем. Человеческий язык несовершенен, порой возникают недопонимания, нужно уметь их разрешать, доносить свою мысль до собеседника. Особенно это важно в такой большой компании, как WG.
Дмитрий Овчинников
Мой пример показывает, что отсутствие опыта с конкретной технологией — не преграда. БОльшая необходимость есть в целеустремленности, общем опыте и понимании, что происходит. А какой-то конкретный язык. это не rocket science, это приходит довольно быстро.
Сначала ты получаешь общие знания о том, как все работает, как устроено в целом, об архитектуре. А уж на каком языке писать. лет через пять это становится неважно.
Нужно больше страсти к тому, что ты делаешь. Девиз нашей компании: Globally with passion. Нам очень нужен этот самый passion. Мы очень любим людей, которые переживают за то, что они делают; людей, которым интересно что-то делать; которые не просто «ходят на работу», но пытаются стать частью того большого Wargaming, который создаем мы все.
Python Meetup
Wargaming всячески старается показать атмосферу WG людям, которые не работают в компании. Для этого публикуются интересные посты, фотоотчеты об ивентах, прошедших внутри компании либо при ее поддержке. Так, совсем недавно состоялся первый белорусский PyCon, прошедший под эгидой PSF, где Wargaming участвовала в роли партнера.
Еще существуют Minsk Python Meetup — ежемесячные встречи Python-разработчиков, проходящие при поддержке WG. Здесь много полезностей для начинающих, хардкорные доклады от гуру Python’а и бесценный опыт общения комьюнити.