Автор |
Сообщение |
Kosmos
[289.1]
|
14
Вопросы и ответы с программистом из Blizzard
Еще одна история с Близзкона. Этого не было на трансляции, но в одном из холлов была организована встреча с разработчиками Близзард - теми ребятами, которые пишут код для World of Warcraft, Overwatch и всех других игр компании. Как оказалось, над всеми этими играми с точки зрения программирования работают одни и те же люди, и у них таки есть, что рассказать.
Байки разработчиков
- Команда Overwatch готовила демо-версию для показа в Китае, но ВНЕЗАПНО оказалось, что они забыли убрать кровь, а как мы знаем, в этой стране существует запрет на такие вещи. Человек с демо-версией уже приехал в Шанхай, и людям в Калифорнии нужно было придумать как доставить новую версию клиента через хилый wifi в его отеле. Китайский интернет это та еще песня, те кто там был, подтвердят. Инженеры почесали в затылке, посмотрели на исполняемый файл и сообразили, что в нем есть место, где игра определяет, произошло попадание в игрока или в стенку, и в зависимости от этого показывается спецэффект. Они не стали ничего перекомпилировать, а написали небольшой патчер, который брал готовый клиент, изменял в нем один байт (условный переход на безусловный) и сохранял его. Патчер переслали в Шанхай, он нормально отработал, и показ для китайцев прошел без накладок.
- Как многие помнят, запуск Warlords of Draenor прошел не совсем гладко. Железа для нормального функционирования серверов у Близзард в принципе хватало, но World of Warcraft довольно старая игра, и требует точного распределения - какой сервер будет обслуживать аккаунты пользователей, какой базы данных и так далее. Инженеры заранее собрали конфигурацию, которая по их мнению должна была работать, но после запуска оказалось, что в серверах, отвечающих за инстансы, почти мгновенно закончилась память. Не удивительно: каждый гарнизон порождал новый инстанс, и в какой-то момент количество инстансов измерялось сотнями тысяч.
- На протяжении восьми часов инженеры в датацентрах перетряхивали все на ходу: вытаскивали блейд-сервера из стоек, добавляли в них память, меняли местами и перераспределяли для них нагрузку. После этого все пошло более гладко, проблемы с железом кончились и остались только с софтом).
- Heroes of the Storm использует движок Starcraft, поэтому когда разработчики хотят внести какое-то изменение в движок, они всегда должны иметь в виду все созданные игроками моды, которые возможно используют этот функционал. Приходится использовать множество костылей, но пока слава Богу в компании еще работают те люди, которые писали код 15-летней давности и они могут пояснить зачем нужен тот или иной его кусок.
- 16 мест в рюкзаке на протяжении 15 лет - что с вами не так? Отвечаем. Разработчики оригинальной версии World of Warcraft однажды решили, что инвентарь персонажа будет храниться в массиве данных. В нескольких первых элементах массива лежат вещи, которые одеты на персонаже, и после этого идут сумки - подход уходит корнями еще в Diablo 2, когда все это умещалось на одном открытом экране персонажа. В какой-то момент времени в игре появился банк, и вещи банка добавили в конец того же массива. Поскольку игрок не мог получать доступ к банку из любой точки мира, программисты рассчитывали, что в определенной точке массива точно заканчивается инвентарь и начинается банк. Это значение жестко задавалось (hardcoded) по всем исходным текстам программ, и что еще хуже, некоторая математическая логика полагалась на то, что этот сдвиг является константой. Чтобы попытаться залезть и исправить это дело, пришлось бы затратить гигантские усилия - сначала программистов, которые станут читать тысячи строк кода и искать слабые места, а потом отдел тестирования, которому придется опробовать изменения во всех мыслимых и немыслимых случаях. И все равно после этого неизбежно что-то сломается. Вот как мы оказались перед фактом фиксированного размера рюкзака.
- Во всех играх Blizzard есть какое-то количество устаревшего кода, который приходится поддерживать, так сказать, по наследству. Когда команда Battle.net захотела увеличить количество друзей, которое может иметь игрок, им пришлось перелопатить все игры в поисках вещей, которые могут пойти неправильно. Дело не только в базах данных и коде: интерфейсы некоторых игр писались пять, восемь лет назад, и надо сказать что разработчики каждой игры первым делом пишут свой собственный интерфейс с нуля, потому что все старые были отстоем. Поэтому если вы хотите увеличить количество друзей в Battle.net, вам нужно переделать и протестировать интерфейсы всех игр Blizzard. И не только переделать, но и убедиться что в них работает одновременно и старый и новый интерфейс, поскольку у вас нет возможность пропатчить все игры в один и тот же момент.
- В Blizzard работают гениальные дизайнеры, которые вечно носятся с новыми идеями. У программистов не принято говорить им "нет". Если дизайнер приходит с идеей сделать нового героя Heroes of the Storm, которым управляют сразу два игрока, программисты сначала впадают в панику, потом обдумывают подходы и наконец находят способ реализовать. В отделе разработки есть популярный мем - картинка, где нарисован включенный утюг, на нем стоит чашка кофе и на ней кастрюля со спагетти. Подпись: "проблема решена, вы можете варить спагетти".
- В своей работе команда Overwatch разбивается на спецбригады, которые реализуют ту или иную вещь, обычно это новый герой. Собираются дизайнер геймплея, программист, художник, специалист по спецэффектам и звуковик, и начинают делать какого-нибудь Гэндзи. Они работают вместе и играют в то что получилось вместе, тем самым приобретая бесценный опыт. Конечно, учитывается и фидбек со стороны отдела тестирования и всех остальных, кто подвернулся под руку.
- В Overwatch есть два типа героев: D.Va и не D.Va. Работа над ней началась несколько месяцев назад, и тогда еще никто не понимал, что потребуется все время до релиза, чтобы с ней закончить. Некоторые программисты Overwatch пришли из разработки на Unreal Engine, и они еще два года назад подозревали, что в какой-то момент их попросят сделать нечто подобное тому, что реализовано в Unreal - ракету, которую игрок выпускает, а потом ей управляет. Поэтому они впрок написали такой механизм, и когда потом на сцене появился Крысавчик со своей Адской шиной, разработчики ходили очень собой гордые. Я могу предсказывать будущее!
- Но потом появилась D.Va, и весь этот механизм пришлось выкинуть, после чего написать заново. Вылезла неимоверная куча багов, таких например как мех, который самостоятельно эскортирует груз, когда D.Va уже из него вылезла. Или например ты вылезаешь из меха и оказываешься в точке с координатами 0.0.0, потому что произошел какой-то непредвиденный случай. Точка 0.0.0 вообще любима разработчиками, там имеют тенденцию собираются такие вот забагованные вещи. Помните трупы, плавающие под Когтистыми горами? Это точка 0.0.0, начало всего.
- Есть много шуток о том, как программисты и дизайнеры друг друга не любят. На деле у них действительно разные цели, которые впрочем дополняют друг друга. Цель дизайнера - сделать так, чтобы большое число людей получили хорошие эмоции от геймплея. Цель инженера - убедиться, чтобы ни у кого не было плохого геймплея, чтобы все тонкие моменты игры были охвачены логикой твоего кода и ничто нигде не падало.
- Многие спрашивают, где давно обещанная опция Battle.net "прикинуться, что я оффлайн". Дело не в сложности технической реализации, но в самом гейм дизайне. "Прикинуться оффлайн" обычно означет "я пойду играть в Diablo 3 вместо того, чтобы пойти в рейд", и это простой случай. Но что делать если твой друг якобы оффлайн, но ты его видишь перед собой на аукционе в World of Warcraft...
- Программисты Blizzard используют разнообразные инструменты оптимизации и тестирования - начиная от VTune и заканчивая своими собственными разработками. В тестах есть разные методы автоматизации, например такой: берется карта Heroes of the Storm с одной линией, на нее ставятся 10 героев и те сражаются друг с другом длительное время. Герои меняются, меняются их билды, и набранная статистика помогает в поиске ошибок баланса.
- Один из ведущих программистов Blizzard раньше работал в области высокочастотного трейдинга, и однажды он оптимизировал код хеш функции, сэкономив на ее вызове 120 наносекунд. И это был грандиозный грандиозный прорыв, который принес компании миллионы долларов. И нет, программист не получил за это миллион долларов.
- По-настоящему серьезный вопрос: почему мы в 2015 году до сих пор имеем еженедельное отключение серверов на профилактику и патчи? Внутри Blizzard есть понимание того, что игры должны быть онлайн постоянно, в идеале приближаясь к 99.9% непрерывной работы. Инженеры пытаются достичь этого, в особенности с World of Warcraft, но главная заминка здесь в старой инфраструктуре - как в WoW, так и в некоторых частях Battle.net. Сейчас целью является сокращение даунтайма до часа в неделю, и в европейском регионе этого удалось достичь - в неделю Близзкона сервера были недоступны 53 минуты. Когда-нибудь (в мечтах) World of Warcraft станет работать непрерывно.
- В разных отделах используются разные системы контроля версий и интеграции. В Overwatch применяют Perforce, в Battle.net - Git и Jenkins, а в World of Warcraft до сих пор сидят на Subversion.
- Существовал план по шифрованию всех файлов World of Warcraft, с тем чтобы затруднить жизнь датамайнерам, которые раскрывают все секреты игры задолго до того момента, который считается подходящим внутри Blizzard. Этого не стали делать, поскольку патчить зашифрованные файлы было нельзя, и клиентам пришлось бы перезакачивать весь контент снова и снова.
- Игры Blizzard работают в окружении, где даже на первый взгляд невинные вещи могут оказаться опасными. Например, команда /who в World of Warcraft показывает список игроков онлайн. Когда игра только была выпущена, буквально каждый игрок хотел знать, кто еще из их друзей находится онлайн. Дело доходило до того, что запросы команды /who съедали 85% серверного времени!
- Внутренние номера команд разработчиков: 1 - Starcraft 2 и Heroes of the Storm, 2 - World of Warcraft, 3 - Diablo, 4 - Overwatch, 5 - Hearthstone.
- Внутри кода игр Blizzard есть множество мест, которые выглядят устаревшими и непонятными. Во многих случаях подобный стиль связан с багфиксами, которыми чинили неочевидные случаи использования кода. Но существует серьезная разница между желанием понять этот код и желанием переписать его заново. Если код устарел, но в нем заложены четкие механизмы расширения, то с ним можно нормально работать. Если же по мере расширения все запутывается и начинает тормозить, возможно тут стоит кое-что написать заново.
- Очень, очень много людей записались на бета тест Overwatch. То, чего ждут от теста программисты, это понимания того как их код работает в различных сетевых окружениях. Например, им был интересен отзыв игрока из Чили (работает отлично!) и тех, кто пытается играть через телефон по 4G.
- Overwatch планируется выпустить одновременно для всех платформ. Инженеры ждут, что будет тяжко.
- Открытые бета-тест выходные отлично подходят для того, чтобы ронять сервера и находить баги. Так, например, во время открытых выходных был найден прекрасный баг в сервере Diablo 3. Если сервер падал по какой-то причине, то после того как он вновь поднимался, балансировщик нагрузки видел сервер с нулевым количеством клиентов и радостно направлял все новые игры туда. Естественно, сервер снова падал, и так повторялось вновь и вновь.
Замечательную статью подгототовил Kermit
Источник
|
26 ноя 2015, 20:50 |
|
|
Lrdblksmith
|
-1
Вопросы и ответы с программистом из Blizzard
Напоминает анекдот: Узбекские физики-ядерщики работают над созданием ядерного топлива. Пока получается только гашиш.
|
27 ноя 2015, 06:20 |
|
|
baho
[0.6]
|
0
Вопросы и ответы с программистом из Blizzard
|
27 ноя 2015, 08:13 |
|
|
GreenFace
[1.4]
|
1
Вопросы и ответы с программистом из Blizzard
Действительно интересно
|
27 ноя 2015, 11:22 |
|
|
Mercey
[-0.7]
|
-3
Вопросы и ответы с программистом из Blizzard
им надо все с нуля делать с новыми прогерами имхо, и дизайнеров желательно тоже сменить (в вов)
|
28 ноя 2015, 12:08 |
|
|
whoknows
[1.3]
|
0
Вопросы и ответы с программистом из Blizzard
судя по актуальности ванила-бк-вотлк пираток народу не критичны дела визуальные, оптимизация и тд - можно и без переписи обойтись. а вот кого надо менять, так это гейм дизайнера, либо давать ему свободу в работе - то есть там либо не тот человек, либо его душат сверху заставляя толкать всякие говнофичи, вместо того что хотят игроки. щас там курс задает какой-то пришибленый на всю голову - ведь перед глазами есть объективный покзаатель - график подписчиков, который 3 аддона стабильно катится вниз, и игнорировать это, ничего толком не меняя в легионе, просто смешно. #горит#вовживи
|
28 ноя 2015, 12:41 |
|
|
NONAMERZ
[4.8]
|
0
Вопросы и ответы с программистом из Blizzard
whoknows писал(а):
судя по актуальности ванила-бк-вотлк пираток народу не критичны дела визуальные, оптимизация и тд - можно и без переписи обойтись. а вот кого надо менять, так это гейм дизайнера, либо давать ему свободу в работе - то есть там либо не тот человек, либо его душат сверху заставляя толкать всякие говнофичи, вместо того что хотят игроки. щас там курс задает какой-то пришибленый на всю голову - ведь перед глазами есть объективный покзаатель - график подписчиков, который 3 аддона стабильно катится вниз, и игнорировать это, ничего толком не меняя в легионе, просто смешно. #горит#вовживи
Давай расставим точки на i, актуальность пираток нам как бы показывает, что та же ванилла интересна пусть будет 50к человек (я считаю эту цифру сильно завышенной), взять тот же носталриус на котором пиковый онлайн 10к, увеличим это пиковое кол-во людей хоть в 10 раз, добавив сюда еще десяток фришардов все равно выходит, что это МИЗЕРНЫЙ ПРОЦЕНТ (мб 5% от 5млн.) от общего числа игроков в WoW на официальных серверах. Хватит уже нести чушь, что пиратки со старым контентом актуальны.
|
28 ноя 2015, 13:19 |
|
|
whoknows
[1.3]
|
0
Вопросы и ответы с программистом из Blizzard
ничего не буду писать про единогласное мнение знакомых забивавших на вов после лича, про продписчиков, вата..
просто спрошу: если бы сейчас близы бекнулись к вотлк и продолжили развивать его не в катаклизм-панда стиле, ты бы играл в это или в легион?
|
28 ноя 2015, 13:40 |
|
|
NONAMERZ
[4.8]
|
2
Вопросы и ответы с программистом из Blizzard
whoknows писал(а):
ничего не буду писать про единогласное мнение знакомых забивавших на вов после лича, про продписчиков, вата..
просто спрошу: если бы сейчас близы бекнулись к вотлк и продолжили развивать его не в катаклизм-панда стиле, ты бы играл в это или в легион?
Ну и правильно. На твоей стороне твои 3 друга, а я же оперирую соотношением кол-ва подписчиков на офф серверах (которые к тому же платные) и примерным кол-ом игроков на пиратках бесплатных, где даже всеми любимый тут Носталриус имеет онлайн размером одного ру сервера на оффе (и то вряд ли). Но ты можешь считать себя и своих друзей какими-то эстетами которые знают как на самом деле хорошо, а всех остальных игроков на оффе какой-то тупой массой, но это все херня по сравнению с официальной статистикой которая нам говорит, что для большинства ОФФ ИНТЕРЕСНЕЕ ПИРАТОК. Заметь особо, что я не пишу мол ванилла не интересная, кому-то это возможно реально интересно, это вполне нормально, как и нормально перепроходить старые игры которые тебе нравятся. Я бы лично играл офк в легион. Зачем мне играть в то, что я уже прошел? Месить говно на личе пока меня не начнет от него воротить и в итоге замбить? Нет, спасибо. Не вернулся бы ни в один из старых патчей, по одной лишь причиние того, что я это видел и я это прошел.
|
28 ноя 2015, 14:19 |
|
|
Koolaid
[10.5]
|
0
Вопросы и ответы с программистом из Blizzard
При этом куча народа играет одновременно на пиратках и оффе.
|
28 ноя 2015, 14:28 |
|
|
whoknows
[1.3]
|
0
Вопросы и ответы с программистом из Blizzard
как ты оперируешь цифрами я успел оценить)) сравнивать онлайн серверов, контент на которых толкает целая корпорация, регулярно обновляя его новыми контент-патчами и онлайн разрозненных пираток с почти фиксированным и уже пройденным контентом - это просто гениально.
а про друзей я бы лучше промолчал.. но в целом я тебя понял, человек кторый решил что он вправе "расставлять точки над и", заявляя что вов-пиратки не достаточно актуальны.
но на вопрос мой ты толком не ответил, там четко написано что после бека к вотлка близы продолжат его развивать, но не в ката-панда стайле, причем здесь "Зачем мне играть в то, что я уже прошел? Месить говно на личе пока меня не начнет от него воротить и в итоге замбить? "
|
28 ноя 2015, 14:36 |
|
|
Mefesto
[6.3]
|
0
Вопросы и ответы с программистом из Blizzard
whoknows писал(а):
как ты оперируешь цифрами я успел оценить)) сравнивать онлайн серверов, контент на которых толкает целая корпорация, регулярно обновляя его новыми контент-патчами и онлайн разрозненных пираток с почти фиксированным и уже пройденным контентом - это просто гениально.
whoknows писал(а):
удя по актуальности ванила-бк-вотлк пираток
У тебя все хорошо?
|
28 ноя 2015, 14:41 |
|
|
whoknows
[1.3]
|
0
Вопросы и ответы с программистом из Blizzard
и где я там сравниваю цифры онлайна "ванила-бк-вотлк пираток" и офф серверов?))
|
28 ноя 2015, 14:43 |
|
|
Mefesto
[6.3]
|
0
Вопросы и ответы с программистом из Blizzard
whoknows писал(а):
и где я там сравниваю цифры онлайна "ванила-бк-вотлк пираток" и офф серверов?))
Ты говоришь про актуальность пираток, Неймз тебе пишет что судя по цифрам ты как-то не очень прав, а теперь ты спрашиваешь зачем он начал сравнивать цифры, вот я и хочу поинтересоваться как у тебя там. Актуальность - это когда большая часть чего-то хочет или эта проблема очень распространена.
|
28 ноя 2015, 14:44 |
|
|
whoknows
[1.3]
|
0
Вопросы и ответы с программистом из Blizzard
Mefesto писал(а):
whoknows писал(а):
и где я там сравниваю цифры онлайна "ванила-бк-вотлк пираток" и офф серверов?))
Ты говоришь про актуальность пираток, Неймз тебе пишет что судя по цифрам ты как-то не очень прав, а теперь ты спрашиваешь зачем он начал сравнивать цифры, вот я и хочу поинтересоваться как у тебя там. Актуальность - это когда большая часть чего-то хочет или эта проблема очень распространена.
отлично, мы вернулись к причинно-следственному миру. в ответ на его пост о цифрах, я пишу, что в данном случае опирался на мнения далеко не малого количества своих знакомых, которые забили на вов после лича и на тенденцию падения подписок с 10 до 5 млн. а в предыдущем посту я как бы вам намекнул, что это глупо сравницать онлайны поддерживаемых и развивающихся проектов целой корпрорации и онлайны пираток толкающих старый контент
|
28 ноя 2015, 14:49 |
|
|
Mefesto
[6.3]
|
0
Вопросы и ответы с программистом из Blizzard
whoknows писал(а):
отлично, мы вернулись к причинно-следственному миру. в ответ на его пост о цифрах, я пишу, что в данном случае опирался на мнения далеко не малого количества своих знакомых, которые забили на вов после лича и на тенденцию падения подписок с 10 до 5 млн. а в предыдущем посту я как бы вам намекнул, что это глупо сравницать онлайны поддерживаемых и развивающихся проектов целой корпрорации и онлайны пираток толкающих старый контент
Извини, но мне как-то насрать на твоих знакомых, я вижу цифры, цифры говорят что пиратки нихера не актуальны, потому что на них очень малый процент играет, все, вопрос закрыт, завязывай уже.
|
28 ноя 2015, 14:51 |
|
|
whoknows
[1.3]
|
0
Вопросы и ответы с программистом из Blizzard
шикарно, человек, который "раставляет точки над и" есть. теперь повился человек, закрывающий вопросы. будьте проще
жесть, ну нельзя сравнивать эти цифры просто так и делать такие выводы, это же очевидно
|
28 ноя 2015, 14:57 |
|
|
Mefesto
[6.3]
|
0
Вопросы и ответы с программистом из Blizzard
whoknows писал(а):
шикарно, человек, который "раставляет точки над и" есть. теперь повился человек, закрывающий вопросы. будьте проще
жесть, ну нельзя сравнивать эти цифры просто так и делать такие выводы, это же очевидно
Ты тупой или прикдываешься? Ты первый начал сравнивать, заявив:"судя по АКТУАЛЬНОСТИ пираток", актуальности для кого? Для твоих друзей? Но если брать адекватную статистику, то пиратки совсем не актуальны. Что ты еще хочешь то? Нравится тебе и твом друзьям играть на пиратках - играйте, только не нужно тут подобные заявления делать, хорошо?
|
28 ноя 2015, 14:59 |
|
|
whoknows
[1.3]
|
0
Вопросы и ответы с программистом из Blizzard
Mefesto писал(а):
если брать адекватную статистику, то пиратки совсем не актуальны
жесть. и хорош там гореть уже, давай без эмоций
если бы сейчас близы бекнулись к вотлк и продолжили развивать его не в катаклизм-панда стиле, ты бы играл в это или в легион?
|
28 ноя 2015, 15:02 |
|
|
Mefesto
[6.3]
|
0
Вопросы и ответы с программистом из Blizzard
whoknows писал(а):
жесть. и хорош там гореть уже, давай без эмоций
если бы сейчас близы бекнулись к вотлк и продолжили развивать его не в катаклизм-панда стиле, ты бы играл в это или в легион?
|
28 ноя 2015, 15:05 |
|