Gamedev Артемий Леонов
8 289

Цена одной ошибки — история провала Elemental: War of Magic

Основатель студии Stardock о том, что погубило амбициозную стратегию.

В закладки

Брэд Уорделл, основатель и руководитель студии Stardock, рассказал порталу Ars Technica о самом неприятном опыте в его карьере — создании провалившейся Elemental: War of Magic. Как выяснилось, у игры, вызвавшей гнев у критиков и игроков, изначально не было ни единого шанса оказаться «играбельной» — из-за одной фундаментальной ошибки разработчиков.

Когда разработка Elemental: War of Magic только начиналась, у разработчиков были поистине грандиозные планы. Stardock планировали создать огромный живой мир, в котором невозможно было бы встретить двух одинаково выглядящих юнитов. Юниты могли жениться и заводить детей, которые бы со временем вырастали и тоже приобретали уникальную внешность. Также разработчиками была придумана система создания городов, в которой можно было строить абсолютно уникальные поселения — «прямо как в Sim City». Если увеличить масштаб, можно было увидеть горожан, прогуливающихся по улицам — каждый со своим уникальным оружием и одеждой.

В те времена 3D-графика уже массово использовалась в стратегиях. По словам Уорделла, это была «интересная эпоха» — игроки ждали от внешнего вида юнитов очень многого, но разработчикам приходилось создавать игры, ориентируясь на 32-битные системы. Проблема заключалась в том, что компьютеры под управлением 32-битной версии Windows позволяли использовать только 2 гигабайта оперативной памяти.

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

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

Брэд Уорделл
основатель Stardock

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

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

Брэд Уорделл
основатель Stardock

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

Для меня, как для инженера, это было техническим вопросом. Игра вылетает, значит, можно сделать только одно: потратить достаточно времени и отыскать этот баг в коде. Вот только это не было багом в коде.

Брэд Уорделл
основатель Stardock

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

Это невозможно было пофиксить. И это наводило ужас, — ты осознаёшь, что корень проблемы лежит в самом основании движка, над которым ты работал долгие годы

Брэд Уорделл
основатель Stardock

При этом оригинальный дизайн игры за долгие месяцы удаления контента изменился до неузнаваемости. По мнению Уорделла, при взгляде на финальный вариант Elemental у игрока мог бы возникнуть вопрос «а где, собственно, игра?» В конце концов в игре осталось гораздо меньше «мяса» — того, что делает игру качественной, потому что разработчики убрали слишком много систем, пытаясь решить пресловутую проблему. Как выяснилось, только чтобы понять, что решить её таким способом невозможно.

Когда игра вышла, она вызвала жуткую отрицательную реакцию. Мы раньше никогда не выпускали плохих игр. Это был огромный удар по морали в коллективе, и продажи были просто ужасными. Был даже один фанат, который делал фанатские футболки — он был поклонником Master of Magic, — и прислал нам грязную футболку в знак протеста. Мы были так расстроены, просто раздавлены. Прошло семь лет, но я вспоминаю об этой игре практически каждый день.

Кто-то скажет: как они могли не знать про фрагментацию памяти? Но если вы будете честны с собой, то признаете, что это не такое уж распространённое знание. Даже сейчас довольно трудно найти достойные программы для фрагментации памяти. С этим не так уж часто сталкиваются.

Брэд Уорделл
основатель Stardock

По мнению Уорделла, даже если бы у Stardock было в распоряжении больше времени на разработку, они могли бы сделать игру немного более стабильной, но не смогли бы решить проблему с вылетами. Единственным вариантом в этой ситуации было бы полностью переделывать игру с нуля.

Сиквел к Elemental под названием Fallen Enchantress разработчики отдали бесплатно каждому, кто купил первую часть. Движок был радикально переработан и в результате лишился проблемы, погубившей War of Magic. При этом, по словам Уорделла, это привело к фундаментальным изменениям в геймдизайне: оригинальная задумка Stardock так и не была реализована.

#опыт #истории

{ "author_name": "Артемий Леонов", "author_type": "editor", "tags": ["\u0438\u0441\u0442\u043e\u0440\u0438\u0438","\u043e\u043f\u044b\u0442"], "comments": 58, "likes": 75, "favorites": 1, "is_advertisement": false, "subsite_label": "gamedev", "id": 16865, "is_wide": false }
{ "id": 16865, "author_id": 3792, "diff_limit": 1000, "urls": {"diff":"\/comments\/16865\/get","add":"\/comments\/16865\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/16865"}, "attach_limit": 2, "max_comment_text_length": 5000 }

58 комментариев 58 комм.

Популярные

По порядку

Написать комментарий...

Sergey Ten

29

Если я все правильно понял, они зарелизили игру, зная, что она вылетает в 100% случаев. Браво! *slow clap*

Ответить

Andrey Apanasik

Sergey
34

Она вылетает, только если в неё играть какое-то время.

Ответить

Фёдор Казин

Sergey
10

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

Ответить

IHaveNoMouthSoIMustWrite

Фёдор
0

лучше продать плохую игру и окупиться на 80%, чем ничего не продать и не окупиться совсем.

Ответить

Фёдор Казин

IHaveNoMouthSoIMustWrite
1

Ну так Близзы давно уже могут себе позволить терять деньги на отмене плохого продукта. А Стардоки-то в разы меньше, и риски явно больше, тем более, в конце 00-х. Я не думаю, что они были в той ситуации, когда они могли себе позволить просто потерять вложенные в разработку деньги ради репутации.

Ответить

Максим Семёнов

IHaveNoMouthSoIMustWrite
0

А какую такую игру близы выпустили недоработанной?

Ответить

IHaveNoMouthSoIMustWrite

Максим
0

Морхейм на картинке в недоумении - они-то недоработанные игры отменяют
P.S Хотя тут сейчас придут "ценители" с криками "диабло 3", "хс", "ск2", "хотс" итд

Ответить

EeRy Moth

IHaveNoMouthSoIMustWrite
0

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

Ответить

Vitchkovski

EeRy
0

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

Ответить

EeRy Moth

Vitchkovski
2

Там все сложнои запутано: ошибка 37, аукцион, Джей Уилсон, которого сообщество возненавидело, и его уход. Вот кусок этого бедлама http://horadric.ru/forum/viewtopic.php?t=8322

Ответить

Oleg Khobotov

EeRy
0

Тем не менее D3 продалась тиражом 30+ млн копий и имеет высокие оценки прессы.

Ответить

EeRy Moth

Oleg
–1

Dragon age Inquisition тоже....

Ответить

Severomor

Фёдор
0

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

Ответить

Фёдор Казин

Severomor
1

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

Ответить

Шавуха с фрустрацией

Фёдор
0

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

Ответить

Дмитрий Поляниченко

Sergey
–3

Велком в реальный мир, мальчик. Интересное чувство, когда понимаешь что не все должно быть идеально, не правда ли?

Ответить

Sergey Ten

Дмитрий
5

гарантированный 100% вылет

ну что вы хотели, игры не обязаны быть идеальными

У вас странные понятия про идеал.

Ответить

Дмитрий Поляниченко

Sergey
–4

Есть такие понятия как сложность и сроки. Почитай, узнай, сделай выводы.

Ответить

JCK

Дмитрий
4

Охуенная логика. То есть релизить 100% сломанное - нормально? Уж не на Автовазе ты случайно трудишься?

Ответить

Severomor

JCK
0

Похоже они реально считают это нормальным. Мда, тут уже ничего не исправить, Господь, жги!

Ответить

Денис Адигамов

JCK
0

Ну, если бы все думали, что игру нельзя релизить до исправления последнего бага - мы бы точно не увидели Арканум и VtM:B от Troika Games. Или Тим Кейн, Леонард Боярский и Джейсон Андерсон с Автоваза ушли?

Ответить

Дмитрий Поляниченко

JCK
–6

Нее, тебе показалось. Короче, ты меня поймешь когда наконец займешься самообразованием и найдешь замену профессии «кассир» в пятерочке, которая неспешным темпом тянет твое будущее на дно речушки русской глубинки. Ну правда, так лень объяснять.

Ответить

Комментарий удален

Дмитрий Поляниченко

Vincent
–7

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

Ответить

JCK

Дмитрий
–1

Не знаю, мне норм. Всяко лучше быть кассиром, чем конченым, как ты.

Ответить

Дмитрий Поляниченко

JCK
–4

И правда, хорошо, что ты не такой как я. Повезло же тебе

Ответить

Mark Derliuk

Дмитрий
2

Ойх, всем ахтунг. Тут у нас батя высадился, учить жизни пришёл.

Ответить

Rain Skylark

Sergey
0

достаточно длительное время, отмечу.

впрочем, варианты?

Ответить

Barlog (18+)

9

Нужно было не останавливаться на достигнутом и написать дефрагментатор свободной памяти.

Ответить

Александр Лисовой

Barlog
3

И получить игру, которая каждые пять минут делает паузу на дефрагментацию.

Ответить

YamiE

Barlog
2

Ну такой подход действительно существует, ну во всяком случае читал в книжке Game Engine Architecture, и там среди перечислялся вариант просто ограничить дефрагментацию блоками по 8-16 за 1 кадр или что-то типа такого.

Ответить

Andrey Apanasik

15

Для тех, кто не понял, в чём проблема.

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

Правда, я не совсем понимаю, в чём была проблема это переписать. Ещё более странно, как они о такой вещи заранее не продумали, ведь вроде опытные разработчики.

Ответить

IHaveNoMouthSoIMustWrite

Andrey
0

Видел NTFS?)

Ответить

IHaveNoMouthSoIMustWrite

Andrey
2

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

Ответить

Andrey Apanasik

IHaveNoMouthSoIMustWrite
0

С этим не поспоришь )

Ответить

Alexandr Volkov

IHaveNoMouthSoIMustWrite
0

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

Ответить

IHaveNoMouthSoIMustWrite

Alexandr
0

В статье не говорят, что это невозможно, говорят, что обнаружили причины проблемы слишком поздно и поправили только в сиквеле.
Сиквел к Elemental под названием Fallen Enchantress разработчики отдали бесплатно каждому, кто купил первую часть. Движок был радикально переработан и в результате лишился проблемы, погубившей War of Magic

вместо того чтобы работать как инженеры и найти проблему

Да нормально работали

Ответить

max.mustermann

5

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

Это шутка какая-то, да? Об этом на первом курсе рассказывают. Ну может на втором.
Писать движки и даже не знать о такой проблемме... Нет слов.

https://stackoverflow.com/questions/3770457/what-is-memory-fragmentation

Ответить

Голубев Ярослав

max.mustermann
0

Ты цены на образование на западе видел? Скорее всего нет. Многие программисты к играм - самоучки. Которые решили что образование не нужно. А опыт программирования "убийцы дума " в период 13-15лет все компенсирует.

Ответить

Severomor

Голубев
5

Можно подумать, у нас не так. )

Ответить

Andrey Apanasik

Severomor
0

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

Ответить

Vadim

Голубев
0

мы тоже были самоучками, но свой мемори менджер все равно написали для движка еще в 2003. Он, даже если ничего не знать, на коленке пишется за 1-2 дня.

Ответить

ss7877

3

Как человек, игравший и в фентези ветку Стардоков (Elemental: War of Magic, Fallen Enchantress, Sorcerer King) и в космостратегии GalCiv 2-3 могу сказать, что фундаментальной проблемой является не техническая часть, а отсутствие должной степени таланта.

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

Ответить

Vanechka

ss7877
0

Вот да, хотел сам написать подобный коммент. Если космические стратегии от стардока еще туда - сюда, хоть и кривые геймплейно и визуально, но при этом играбельные, то фентезийные - просто мрак. Пытался играть и в элементал и в фоллен энчантресс, но меня хватало не более, чем на полчаса. УЖАСНЫЙ движок, УЖАСНЫЙ арт - дизайн, напрочь сломанные механики. На фоне этого кошмара, даже warlock кажется неплохой стратегией.

Ответить

sergjjj

ss7877
0

Кстати их WindowBlinds, DesktopX и прочие продукты так же жутко глючили.

Ответить

vOi Shaman

0

Проблема заключалась в том, что компьютеры под управлением 32-битной версии Windows позволяли использовать только 2 гигабайта оперативной памяти.

Разве? В 32х вроде ограничение было около 4х гигов вроде.

Или это уже потом в "сервис-паках" допилили?

Ответить

Den Yarullin

vOi
6

Это особенность архитектуры Windows. Она делит общее адресное пространство на две части: user mode — память, доступная приложениям, и kernel mode — память, используемая системой. Для 32-битных систем это те самые 2 GB при общем системном потолке в 4 GB.

Ответить

vOi Shaman

Den
0

Ясно. Никогда ничего подобного не слышал. Вот что значит...

#яжвыросгуманитарием

Ответить

Александр Лисовой

vOi
2

Максимально поддерживаемое количество памяти — 4ГБ. Лимит памяти для одной программы — 2ГБ.

Ответить

Mikhail Paulyshka

Александр
0

но совсем, при 64-разрядной версии Windows и наличии флага LARGE_ADDRESS_AWARE у приложения, лимит памяти для 32-разрядного процесса повышается до 4 ГиБ.

Ответить

IHaveNoMouthSoIMustWrite

Mikhail
1

Речь же про 32-разрядную вроде

Ответить

IHaveNoMouthSoIMustWrite

Александр
0

Ну и не 4, а ~3.6

Ответить

Александр Лисовой

IHaveNoMouthSoIMustWrite
0

Хоть четыре, хоть 3,6. Всё равно больше двух гигабайт за раз не поиспользуешь.

Ответить

Роман Романов

Александр
0

Как же тогда работают 32 битные Galak-Z (3 гига) и Orcs Must Die! Unchained (4 гига)? У меня 4 гига, и они оба вылетают при загрузке уровней после меню с сообщением о нехватке памяти.

Ответить

Кирилл Драновский

0

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

Ответить

DoorInSummer .

0

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

Ответить

Vadim

DoorInSummer
0

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

Ответить

Alexandr Volkov

Vadim
0

Как раз garbage collector отработает хорошо, так как выделяет одну область памяти и работает с ней самостоятельно. Там неплохие алгоритмы.

Ответить
0

Прямой эфир

Подписаться на push-уведомления
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]