WORLD OF WARCRAFT

Тема: История создания Warcraft - часть 3  (Прочитано 14101 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Kermit

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 8586
История создания Warcraft - часть 3
« : 10 Февраля, 2013, 18:11:21 »
  • Рейтинг:4 (+4 | 0)


Мы продолжаем цикл публикаций переводов из блога Патрика Уайетта. Реакция наших читателей на предыдущие статьи была очень разной: кто-то называл его уволенным из Близзард хейтером, кто-то классным программистом. Но кажется, никто не пожаловался на то, что было неинтересно читать.

Сегодня у нас третья часть рассказа о разработке первого Warcraft - стратегии, ставшей краеугольным камнем в репутации Blizzard как компании, производящей великолепные игры. Оригинал перевода здесь, публикуется с разрешения переводчика. Автор перевода Seekeer, редактура моя.

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

Самая первая многопользовательская игра, сыгранная в Warcraft, была одновременно сокрушительной победой, ужасным поражением и ничьей. Вы спросите, как это возможно? Здесь есть о чём рассказать. Третья часть моего повествования будет включать в себя описание искусственного интеллекта, экономики игры, тумана войны и ещё много чего.
:cut:

После шести месяцев разработки, начатой в сентябре 1993 года, Warcraft: Orcs vs. Humans наконец перестала быть похожей на техническую демо-версию и превратилась в настоящую игру.

В течение нескольких месяцев я был единственным работником, полностью занятым на этом проекте, и это сильно ограничивало скорость разработки. К счастью, в работе над дизайном мне помогали другие члены компании, такие как Рон Миллар и Стю Роуз. Эти художники рисовали прототипы для художественного оформления Warcraft: Orcs vs. Humans, когда могли оторваться ненадолго от других своих проектов.

В команде было так мало людей, потому что разработка первой игры серии Warcraft спонсировалась самой компанией Blizzard из её собственных денег, полученных за разработку игр для сторонних издательств, таких как Interplay или SunSoft. Разработка приносила мало, и накопления компании были невелики.

В то время мы разрабатывали четыре 16-битных консольных игры: The Lost Vikings 2 (продолжение хорошо встреченного, но плохо продававшегося сайд скроллера), Blackthorne (сайд скроллер, где главный герой бегает с дробовиком), Justice League Task Force (клон Street Fighter во вселенной комиксов DC), и Death and Return of Superman (сайд скроллер, основанный на одноимённой серии комиксов).


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

Экономика разработки игр

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

В 90-ых было намного больше компаний-издателей, чем сегодня. Однако увеличение стоимости разработки и сопровождения игр вызвало цепочку банкротств и поглощений, поэтому сегодня, говоря об игровых издательствах, вы, скорее всего, подразумеваете Activision-Blizzard, EA или Ubisoft вместо мириада компаний среднего размера, существовавших двадцать лет назад.

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

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

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

Возможно, лучшим примером этой стратегии явлется Valve Software, где Гейб Ньюэлл использовал для разработки Half Life деньги, заработанные им в Microsoft. Тем самым он получил необходимый контроль над временем выпуска игры: вместо того чтобы торопить сроки для выполнения целей по квартальным доходам, как того хотела Sierra Entertainment (издатель игры), он выпустил игру только тогда, когда она стала высококачественным продуктом. Что ещё более важно, сбережения Гейба позволили получить права на онлайн-распространение Half Life как раз в то время, когда цифровое распространение становилось жизнеспособной стратегией для продажи игр. Все это в итоге привело студию к ошеломительному успеху.


Недостатком такой самостоятельной оплаты прототипа является риск того, что издатель не подпишет контракт на выпуск игры, что очень часто приводит к смерти студии.

Компания, на которую я работал (в это время она называлась Silicon and Synapse), оплачивала Warcraft вместе с другим проектом, называвшимся Games People Play. Тот второй проект должен был включить в себя кроссворды, боггл и другие похожие игры, которые можно найти на полках в аэропорту для развлечений скучающих путешественников.
Разрабатывая две игры, которые были ориентированы на абсолютно разные аудитории, владельцы компании надеялись создать несколько источников дохода. Это было менее рисковано, чем если бы компания нацеливалось только на один тип аудитории (на заядлых геймеров, как вы или я).

Конечно, распределение ставок между различными игровыми жанрами также имеет риски, ввиду того, что престиж бренда компании может быть размыт теми продуктами, которые не оправдывают ожидания её аудитории. Одно из главных преимуществ Blizzard сегодня это то, что пользователи купят их игру ещё до того, как поиграют в неё, поскольку верят в дальновидность и репутацию компании. Такую репутацию было бы намного тяжелей создать, если бы компания выпускала и низкобюджетные казуальные поделки вместе с высокобюджетными игры класса ААА+, как это делала Sierra Entertainment. Sierra, к слову, обанкротилась после неоднократных попыток найти свою аудиторию.

Так или иначе, создание Games People Play стало ошибкой, потому что разработка казуального развлекательного продукта так деморализующе подействовала на главного программиста, что проект так и не достиг зрелой стадии и был позже отменён. А может быть, это всё-таки не было ошибкой, потому что сочетание Warcraft и Games People Play убедило Davidson & Associates, бывшую в то время второй по величине компанией, занимающейся образовательным ПО, приобрести Silicon & Synapse.

Наши новые владельцы

Компания Davidson & Associates была основана Джейн Девидсон, к которой позднее присоединился её муж Боб. Интересы компании распространялись во все стороны, и ее рост был обусловлен успехом игры Math Blaster, в которой игрок решал математические примеры, чтобы взорвать астероиды до того, как они уничтожат корабль игрока. Это было хорошее сочетание образования и развлечения, и компания получила множество премий за неё.

Игра Math Blaster

NB: при правильном использовании игра Math Blaster могла иметь некоторую образовательную ценность, но мне довелось увидеть пример поразительно глупого её использования. В старших классах наш журналистский кружок писал статьи для школьной газеты в компьютерной комнате, которую мы делили с учебным классом для отстающих. Мы в ужасе наблюдали, как эти ученики играли в Math Blaster при помощи калькуляторов. Когда астероиды, содержащие выражения вроде «3+5» или «2*3» приближались, ученики быстро вбивали эти выражения в калькуляторы и затем подсовывали игре полученные результаты. Возможно, они учились чему-то, предполагая, что они обманывают учителей, но я не уверен, что это было лучшее применение тому времени, которое осталось до их стремительно приближающегося вступления во взрослую жизнь.

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

Так что финансовые проблемы, которые препятствовали росту команды разработчиков Warcraft, были внезапно решены приобретением нашей компании. Финансы Davidson & Associates дали возможность Silicon & Synapse (которая после приобретения была переименована в Blizzard) сфокусироваться на своих собственных разработках вместо того, чтобы искать низкоприбыльные сделки с другими игровыми издателями. А они были действительно низкоприбыльными: в 1993 году, даже создав две высоко оцененные игры, которые принесли компании звание «Разработчик года для Nintendo», компания не получила никаких доходов.

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

«Процесс» проектирования

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

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


Несмотря на то что процесс был непредсказуемый, результаты получились впечатляющие. Так как команда состояла из фанатов компьютерных игр, наши игры эволюционировали во время разработки в нечто такое, во что геймеры хотели играть, играть и играть. А Warcraft, наша первая собственная игра для IBM PC, впитала в себя лучшие (а иногда и худшие) черты этого процесса, и определённо получилась образцовой игрой. Ну по крайней мере для своих дней.

Как появилась система создания юнитов в Warcraft

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

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

Рон Миллар, художник, который много сделал в плане создания идей и дизайна для ранних игр Blizzard, предложил следующую идею: игроки должны будут строить фермы, и эти фермы будут периодически производить рабочих юнитов. У игрока будет возможность использовать эти юниты для добычи золота, дерева и постройки зданий, но они не будут столь хороши как военные юниты. Подобный механизм ранее использовался в игре Populous.

Игра Populous

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

Идея не была полностью проработана, что являлось следствием нашего подхода к проектированию: отсутствовала финальная документация, которая должна была объяснять как идея должна реализовываться. Поэтому она вновь и вновь обсуждалась всей командой по проектированию (в которой состояло большинство работников компании). Мы хотели придти к какому-то решению до того, как начать писать код.

Но не успели мы начать его писать, как Рон поехал на торговое шоу (возможно, на зимний CES — Шоу Потребительской Электроники) вместе с Алленом Адамом, президентом компании. И за время их отсутствия произошло знаковое событие, которое я называю «переворотом в проектировании Warcraft».

Стюарт Роуз, один из художников, присоедившихся к компании в самом начале (работник №6, я полагаю) пришёл однажды днём в мой офис, чтобы предложить другой подход. Стюарт чувствовал, что механизм создания юнитов, предложенный Роном, имел множество ещё не решённых сложностей реализации. Более того, этот подход прямо противоположен тому типу контроля, который мы должны давать игрокам в RTS.

В этом новом жанре требования к игрокам были намного строже, чем в других. Внимание игроков не могло быть сфокусировано на одном месте долгое время. Это вызвано тем, что есть множество задач: планирование последовательности построек/усовершенствований, контроль за развитием экономики, создание юнитов, размещение зданий, разведка карты, контроль за битвой и применение способностей каждого юнита. В RTS наиболее ограниченным ресурсом является внимание игрока, так что добавление непрямого механизма создания юнитов увеличит дефицит внимания и сложность игры.

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

Я был очень подходящим слушателем для таких размышлений, поскольку у меня были похожие (хотя и менее продуманные) опасения. Тогда я не считал, что создание юнитов было той областью, где нам стоит придумывать серьёзные изменения. Dune 2, игра из которой была унаследована игровая механика Warcraft, имела намного более простой механизм создания юнитов: просто нажимаем на кнопку в панели фабричного здания, и через некоторое время появляется юнит. Это не было их изобретением – идея была скопирована из ещё более старых игр, но она работала.

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

Теперь Warcraft стал игрой, играть в которую было легко, и, что более важно, весело. Это наше решение больше не пересматривалось.

Первая многопользовательская игра в Warcraft

В июне 1994 года после десяти месяцев разработки движок игры был готов для мультиплеера. С всё возрастающим чувством возбуждения я делал изменения в коде, которые позволяли сыграть первую многопользовательскую игру в Warcraft. Пока я писал ядро игровой логики (цикл событий, управление юнитами, нахождение пути между точками на карте, тактический ИИ для юнитов, строку состояния, внутриигровой интерфейс, высокоуровневый сетевой код), другие программисты работали над компонентами для сетевой игры.

Джесси МакРейнольдс написала низкоуровневую сетевую библиотеку для пересылки IPX пакетов по локальной сети. Код писался на основе знаний, почерпнутых нами из исходников Doom, открытых позже для общего использования Джоном Кармаком из idSoftware.

А Боб Флитч разрабатывал интерфейс создания многопользовательской игры и подключения ней. Мой кабинет был прямо напротив кабинета Боба, что было весьма удобно, так как было необходимо тесно сотрудничать, чтобы интегрировать его код в мой.

После внесения изменений я скомпилировал клиент игры и скопировал его на сетевой диск, в то время пока Боб бежал обратно в свой кабинет чтобы запустить игру. Это было небольшим чудом: код, который мы только что написали, работал, и у нас появилась возможность сыграть в самую первую сетевую игру в Warcraft.

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

Туман войны


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

Empire, пошаговая многопользовательская стратегия, написанная почти семнадцать лет до того великолепным Вальтером Брайтом (создателем языка программирования “D”), использовала туман войны для этой же цели. Когда область карты была разведана, она оставалась видимой навсегда, так что важной частью стратегии было пораньше разведать достаточно большой кусок карты, чтобы получить информацию о передвижении вражеских войск до того, как они смогут нанести урон важной инфраструктуре или экономике.

История войн знает множество примеров поражений, вызванных недостатком информации о действиях врага. Добавление такого элемента в жанр RTS — это отличный способ повысить уровень увлеченности (и страха). Спасибо Вальтеру Брайту и создателям Dune II за это изобретение.

Компьютерный ИИ

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

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

Одно из правил, которые мы ввели в помощь компьютерному ИИ – уменьшение количеств золота, которое изымается из шахт. Когда рабочие игрока выходят из золотой шахты, эти рабочие забирают из неё 100 единиц руды и доставляют её в ратушу игрока. Такие ходки истощают шахту. Однако, когда такой же рейс совершает рабочий компьютерного игрока, он забирает из шахты всего 8 единиц руды, а в свою сокровищницу ИИ доставляет всё те же 100 единиц.

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

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

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

Интересно, что за долгое время популярности Starcraft (игра вышла уже более 14 лет назад, и в нее до сих пор играют) группа программистов ИИ устроила состязание по написанию такого искуственного интеллекта, который бы не жульничал. С помощью библиотеки BWAPI эти программисты написали код, который может отправлять команды прямо в движок StarCraft. Программисты устроили соревнование между своими ИИ, для того чтобы определить победителя. Несмотря на то, что эти ИИ хороши, опытный игрок легко побеждает лучших из них.

Игра против человека

Как человек, который очень, очень много играл в стратегии перед разработкой Warcraft, я был хорошо осведомлён обо всех ограничениях компьютерного ИИ той эры. Я сражался с компьютером, иногда проигрывая, много чаще выигрывая, и никогда не был напуган. Этого не было даже когда на Atari 800 я играл против ужасающих русских армад в Eastern Front - до тех пор, пока аудиокассета(!) с игрой не перестала читаться из-за старости.

Игра Eastern Front

Эти игры были весёлыми, увлекательными, и определённо напряжёнными, но не страшными. Но когда в Warcarft я начал первый матч против человека, все изменилось.

Осознание того, что моим противником был человек, было одновременно и стимулирующим и ужасающим. Я не понимал, выигрываю я или проигрываю. Количество адреналина зашкаливало, я делал всё, что мог для того чтобы эффективно собирать золото и дерево, строить фермы и бараки, увеличивать боевой лимит, исследовать карту и, самое главное, для того чтобы сокрушить армию Боба до того, как он сможет проделать то же самое со мной.

Это был не просто матч для тестирования игрового движка, я знал, что он ощущает такое же желание заполучить титул победителя первой в истории многопользовательской игры в Warcraft. Более того, был случай, когда мы играли в офисе в Doom, и Боб настолько разозлился на меня за то, что я частенько убивал его из рокета, что пообещал никогда со мной больше не играть. Я знал, что он жаждет отыграться.

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

А затем… крэш.


Любой программист знает, что вероятность того, что новый код будет работать правильно с первого раза, близка к нулю. Не было ничего удивительного в том, что игра упала. Графика игры проскользила до верха экрана и вместо нее появился DOS4GW «экран смерти», хорошо знакомый геймерам эпохи DOS. Сейчас в Windows существует намного более вменяемое сообщение об ошибке, которое позволяет пользователю отправить отчёт, но и теперь иногда игроки ещё могут увидеть ужасающий «синий экран смерти», который поразительно похож на старый черный.

После вылета игры я вскочил со своего кресла и побежал в кабинет Боба, крича: «Это было пооооооооотрясноооо!», и сразу затем: «… я тебя делал!». Я был очень удивлён, когда тут же услышал опровержение Боба: наоборот, это Боб побеждал меня.

Нашим взвинченным нервам понадобилось несколько минут, чтобы вернуться в норму, но вскоре мы осознали, что у нас была не только ошибка с падением программы, но ещё и проблема с синхронизацией состояний: два компьютера показывали полностью разные битвы. Т.е. несмотря на то что игры начались одинаково, проходили они в полностью разных вселенных.

Те, кто не работал над сетевым кодом, могут предположить, что два клиента Warcraft пересылают полное состояние игры туда и обратно на каждом шаге. В неторопливых играх, с небольшим количеством возможных позиций, таких как шахматы или шашки, это могло бы сработать, но в играх вроде Warcraft, где единовременно могут принимать участие до 600 юнитов, было невозможно посылать такой объём информации через сеть.

Мы предполагали, что многие будут играть с модемами на 2400 бод, пределом скорости которых были несколько сотен байт в секунду. Молодые геймеры, которые никогда не использовали модемы, должны почитать об этой технологии, которая недалеко ушла от дымовых сигналов и была лишь немного быстрее, чем выстукивание камнями азбуки Морзе. Это было до Амазона, Гугла и Нетфликса, мы говорим о тёмных временах.

Портируя до того Battle Chess с DOS на Windows, я ознакомился с тем, как игры могут взаимодействовать через модем. Я знал, что из-за ограниченной пропускной способности модема будет невозможно пересылать игровое состояние по сети, так что моё решение состояло в том, чтобы пересылать только команды каждого игрока, а затем сделать так, чтобы оба клиента исполняли эти команды одновременно.

Игра Balle Chess

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

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

Так что первая игра в Warcraft закончилась вничью, но в то же самое время она стала громадной победой для всей команды – это было невероятно интересно! Вскоре все в Blizzard играли в Warcraft по сети и нашли, что это было вроде «Синего Неба» — чистейшего метамфетамина, который производил Вальтер Вайт из сериала «Во все тяжкие». После того как люди пристрастились к многопользовательской игре, ничто другое не могло с ней сравниться. Даже несмотря на регулярные вылеты, мы знали, что мы делаем что-то грандиозное.

Всё, что нам было нужно – доделать игру.

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

Почему происходят ошибки синхронизации

Во время работы над Warcraft я спроектировал решения для минимизации количества данных, которые необходимо передать по сети. Мы посылали только команды, которые вызвал сам пользователь, такие как «выбери юнит №5», «передвинься на 650,1224», «атакуй юнит 53». Многие программисты самостоятельно проектировали похожие системы, это очевидное решение для проблемы синхронизации двух компьютеров без пересылки всего состоянии игры каждый ход.

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

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

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

Вы знаете конец истории: Warcraft вышел только спустя пять месяцев. Это казалось вечностью, потому что мы работали так много часов каждый день, преодолевали так много препятствий, превозмогли столько испытаний, и наконец создали нечто, о чём заботились так трепетно. Я продолжу рассказ об этих месяцах в следующих статьях моего блога. Эта часть и без того получилась уже слишком длинной.
« Последнее редактирование: 10 Февраля, 2013, 19:14:18 by Kermit »

Богатырёша

  • Завсегдатай
  • **
  • Сообщений: 473
  • нет ничего страшнее, чем неопытный, но смелый танк

  • Варкрафт: +
    • Имя: Мазилкин
    • Класс: Охотник
    • Сервер: Азурегос
Re: История создания Warcraft - часть 3
« Ответ #1 : 11 Февраля, 2013, 01:31:43 »
  • Рейтинг:0 (+0 | 0)
самая главная беда того времени - вложиться в носитель информации. это не нынешние безлимитные винты )
ЗЫ: читните про цивилизацию, там были придуманы основополагающие нынешних архиваторов

Apptyc

  • Завсегдатай
  • **
  • Сообщений: 635
Re: История создания Warcraft - часть 3
« Ответ #2 : 11 Февраля, 2013, 02:53:02 »
  • Рейтинг:-4 (+0 | -4)
Интересная статейка. Правда в этот раз, мне кажется, слишком великовата. Надо было резать на две части. :)

Snipe

  • Новичок
  • *
  • Сообщений: 56

  • Варкрафт: +
    • Имя: Дистурбедд
    • Класс: паладин
    • Сервер: Король лич
Re: История создания Warcraft - часть 3
« Ответ #3 : 11 Февраля, 2013, 11:16:12 »
  • Рейтинг:0 (+0 | 0)
Я бы сказал слишком поздновата) а не великовата, на хабре давно лежит) Но огромный респект за скриншоты с игр.


deathshot

  • Старожил
  • ***
  • Сообщений: 1297

  • Варкрафт: +
    • Класс: Охотник на демонов
    • Сервер: Дракономор
Re: История создания Warcraft - часть 3
« Ответ #4 : 11 Февраля, 2013, 15:33:43 »
  • Рейтинг:0 (+0 | 0)
Великовата? По моему как раз мало, давайте еще :)
Крапинка и Долли спутники что надо!
С ними не страшны песчаные торнадо!
Маленькие зубки тянутся к еде...

BB_v2612beta

  • Старожил
  • ***
  • Сообщений: 3546
  • Семья... Друзья... Еда... Остальное не важно.

  • Варкрафт: +
    • Имя: Шэдоублэк
    • Класс: БДК
    • Сервер: Гордунни
Re: История создания Warcraft - часть 3
« Ответ #5 : 11 Февраля, 2013, 16:12:56 »
  • Рейтинг:0 (+0 | 0)
самая главная беда того времени - вложиться в носитель информации. это не нынешние безлимитные винты )
ЗЫ: читните про цивилизацию, там были придуманы основополагающие нынешних архиваторов
А где бы найти сей опус (желательно, по-русски)? :)
Ушёл из ВоВ, удалил акк.


trollic

  • Новичок
  • *
  • Сообщений: 2
  • Как жаль что зайцев не пускают в ВОВ

  • Варкрафт: +
    • Имя: Влейкава
    • Класс: рога
    • Сервер: Борейская тундра
Re: История создания Warcraft - часть 3
« Ответ #6 : 12 Февраля, 2013, 18:04:26 »
  • Рейтинг:0 (+0 | 0)
зачитался как фентезийной книжкой.

kvasilov48

  • Завсегдатай
  • **
  • Сообщений: 936
Re: История создания Warcraft - часть 3
« Ответ #7 : 12 Февраля, 2013, 22:12:20 »
  • Рейтинг:0 (+0 | 0)
Фух на силу дочитал, а продолжение еще какое нибудь будет ?

flexy

  • Завсегдатай
  • **
  • Сообщений: 297
Re: История создания Warcraft - часть 3
« Ответ #8 : 13 Февраля, 2013, 22:18:52 »
  • Рейтинг:0 (+0 | 0)
Эх, был бы у ребят в то время хотя-бы репозиторий общий, разработка бы ускорилась в разы :(
« Последнее редактирование: 13 Февраля, 2013, 22:21:43 by flexy »

targ3t

  • Завсегдатай
  • **
  • Сообщений: 513

  • Варкрафт: +
    • Класс: Варлок
    • Сервер: Ревущий
Re: История создания Warcraft - часть 3
« Ответ #9 : 17 Февраля, 2013, 00:00:12 »
  • Рейтинг:0 (+0 | 0)
до сих пор диск хранится первого варкрафта) Одна из моих первых игр компьютерных

 

закрыть