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

Цена одной ошибки — история провала 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": ["\u043e\u043f\u044b\u0442","\u0438\u0441\u0442\u043e\u0440\u0438\u0438"], "comments": 58, "likes": 75, "favorites": 11, "is_advertisement": false, "subsite_label": "gamedev", "id": 16865, "is_wide": false, "is_ugc": false, "date": "Tue, 06 Mar 2018 16:36:58 +0300" }
{ "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, "subsite_id": 64954 }

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

Популярные

По порядку

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

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

Ответить
34

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

Ответить
10

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

Ответить
0

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

Ответить
1

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

Ответить
0

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

Ответить
0

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

Ответить
0

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

Ответить
0

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

Ответить
2

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

Ответить
0

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

Ответить
–1

Dragon age Inquisition тоже....

Ответить
0

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

Ответить
1

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

Ответить
0

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

Ответить
–3

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

Ответить
5

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

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

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

Ответить
–4

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

Ответить
4

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

Ответить
0

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

Ответить
0

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

Ответить
–6

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

Ответить

–7

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

Ответить
–1

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

Ответить
–4

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

Ответить
2

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

Ответить
0

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

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

Ответить
9

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

Ответить
3

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

Ответить
2

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

Ответить
15

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

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

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

Ответить
0

Видел NTFS?)

Ответить
2

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

Ответить
0

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

Ответить
0

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

Ответить
0

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

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

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

Ответить
5

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

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

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

Ответить
0

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

Ответить
5

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

Ответить
0

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

Ответить
0

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

Ответить
3

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

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

Ответить
0

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

Ответить
0

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

Ответить
0

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

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

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

Ответить
6

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

Ответить
0

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

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

Ответить
2

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

Ответить
0

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

Ответить
1

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

Ответить
0

Ну и не 4, а ~3.6

Ответить
0

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

Ответить
0

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

Ответить
0

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

Ответить
0

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

Ответить
0

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

Ответить
0

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

Ответить
0

Прямой эфир

[ { "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" } } } ]
EA анонсировала DLC для DLC
для аддона для спин-оффа
Подписаться на push-уведомления