Создание Warcraft часть 3

  1. Экономика разработки игр
  2. Наши новые повелители
  3. Дизайн «процесс»
  4. Как появилась система создания юнитов Warcraft?
  5. Первая многопользовательская игра Warcraft
  6. Туман войны
  7. Компьютер AI
  8. Играя против человека
  9. Почему происходят ошибки синхронизации
  10. В течение длительного времени

Первой в истории многопользовательской игрой Warcraft была сокрушительная победа, полное поражение и ничья одновременно. Подождите, как это возможно? Ну, в этом и заключается сказка. Эта история органично развивалась во время написания и включала в себя игровой ИИ, экономику игрового бизнеса, туман войны и многое другое. Читайте дальше, если у вас много свободного времени!

Это третья часть истории. Часть 1 Часть 2

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

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

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

В то время мы разрабатывали четыре 16-битных игровых приставки: The Lost Vikings 2 (продолжение нашей признанной критиками, но не очень продаваемой головоломки с надписью «беги и прыгай»), Blackthorne (боковая прокрутка) Игра «беги и прыгай», в которой главный герой занят дробовиком), целевая группа Лиги справедливости (клон Street Fighter, установленный во вселенной DC Comics), и « Смерть и возвращение супермена» ( побитник с боковой прокруткой) план, основанный на одноименной серии комиксов вселенной DC).

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

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

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

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

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

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

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

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

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

Компания, в которой я работал - в то время называлась Silicon and Synapse - была самофинансируемой Warcraft , вместе с другим проектом под названием Games People Play , который включал в себя кроссворды, сумасшедшие и подобные игры, которые можно найти на полках в книжных магазинах аэропорта, чтобы развлекать застрявших путешественников ,

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

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

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

Наши новые повелители

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

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

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

И поэтому одним ударом были решены проблемы с денежными потоками, которые помешали росту команды разработчиков Warcraft ; благодаря глубоким карманам Дэвидсона, поддерживающим усилия, теперь у Silicon & Synapse (переименованной в Blizzard после продажи) появилась возможность сосредоточиться на своих собственных играх вместо того, чтобы заключать выгодные сделки с другими издателями игр. И они были очень маргинальными - даже создав две игры с самым высоким рейтингом в 1993 году, что привело к тому, что компания была названа «Разработчиком года Nintendo», компания не получала никаких гонораров.

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

Дизайн «процесс»

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

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

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

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

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

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

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

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

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

Прежде чем мы начали работать над кодом, Рон отправился на выставку (вероятно, Winter CES - Consumer Electronics Show) вместе с Алленом Адхамом, президентом компании. И во время их отсутствия произошло событие, которое определило направление всей серии Warcraft , событие, которое я называю «переворот в дизайне Warcraft ».

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

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

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

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

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

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

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

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

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

А Боб Фитч, получивший степень магистра в Cal State Fullerton, разработал начальные «склеенные экраны», которые позволяли игрокам создавать многопользовательские игры и присоединяться к ним. Мой офис находился рядом с офисом Боба, что было очень удобно, поскольку нам было необходимо тесно сотрудничать, чтобы интегрировать его логику «присоединяйся или создавай» к моему игровому циклу событий.

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

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

Туман войны

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

Маленькая деревня, окруженная туманом войны; что там?!?

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

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

Психологический террор, созданный незнанием того, что делает враг, был гибелью многих генералов на протяжении всей истории, и добавление этого элемента в жанр RTS является отличным способом повысить уровень волнения (и страха). Спасибо Уолтеру и ребятам из Вествуда, которые создали Dune II за их смекалку!

Компьютер AI

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

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

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

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

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

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

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

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

Как человек, который играл во многие (много-много) стратегических игр до разработки Warcraft , я хорошо знал об ограничениях компьютерных ИИ той эпохи. Хотя я боролся со многими компьютерными ИИ, иногда проигрывал, много раз побеждал, меня никогда не пугал интеллект ИИ, даже когда я сражался с ужасным русским наступлением в игре « Восточный фронт » Криса Кроуфорда, которую я играл на Atari 800 своего друга до тех пор, пока аудиокассета (!), в которой находилась игра, была настолько старой, что ее уже нельзя было прочитать.

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

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

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

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

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

А потом ... сбой:

сбой:

Плохие новости - DOS4GW дает нам знать, что Warcraft разбился

Как известно любому программисту, вероятность того, что новый код будет работать правильно с первого раза, близка к нулю, и поэтому неудивительно, что игра вылетела. Графика игры прокручивалась с верхней части монитора и была заменена блочным текстом «аварийного экрана» DOS4GW, столь знакомым геймерам в эпоху до игр Windows. Теперь у нас есть гораздо более сложный диалог Windows Error Reporting, который позволяет игроку представить отчет о сбое, хотя иногда игроки видят страшный «синий экран смерти», который удивительно похож на старый.

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

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

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

Мы ожидали, что многие геймеры будут играть в Warcraft с 2400 бод модемами, которые могут передавать только несколько сотен символов в секунду. Молодым геймерам, которые никогда не пользовались модемом, следует потратить время на ознакомление с технологией, которая была немного удалена от дымовых сигналов и лишь немного более продвинута, чем стучать по камням. Помните, это было до Amazon, Google и Netflix - мы говорим о мрачных веках, чувак.

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

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

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

Таким образом, первая игра Warcraft была ничьей, но в то же время это была гигантская победа для игровой команды - это было здорово! Вскоре другие члены команды в офисе играли в мультиплеер и обнаружили, что это было похоже на Blue Sky, чистый кристаллический метамфетамин, произведенный Уолтером Уайтом в Breaking Bad. Как только люди почувствовали вкус к многопользовательской Warcraft , ничего больше не было так хорошо. Даже с регулярными сбоями в играх мы знали, что у нас что-то большое.

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

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

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

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

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

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

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

В течение длительного времени

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

Подождите, как это возможно?
Как появилась система создания юнитов Warcraft?