{"id":3975,"url":"\/distributions\/3975\/click?bit=1&hash=7a51e809b58a86b7ea96667de949aaf9244193fd91029f3a3a1c980f40244631","title":"\u0410\u0439\u0442\u0438 \u0432 \u0430\u0442\u043e\u043c\u043d\u043e\u0439 \u044d\u043d\u0435\u0440\u0433\u0435\u0442\u0438\u043a\u0435 \u2014 \u044d\u0442\u043e \u0441\u043a\u0443\u0447\u043d\u043e. \u041c\u0438\u0444 \u0438\u043b\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c?","buttonText":"\u0412\u044b\u044f\u0441\u043d\u0438\u0442\u044c","imageUuid":"c22764b5-e280-52b2-a6db-af308d4d1709","isPaidAndBannersEnabled":false}

Цена одной ошибки — история провала 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 так и не была реализована.

0
58 комментариев
Написать комментарий...
Sergey Ten

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

Ответить
Развернуть ветку
Andrey Apanasik

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

Ответить
Развернуть ветку
Фёдор Казин

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

Ответить
Развернуть ветку
12 комментариев
Дмитрий Поляниченко

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

Ответить
Развернуть ветку
11 комментариев
Rain Skylark

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

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

Ответить
Развернуть ветку
Barlog (18+)

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

Ответить
Развернуть ветку
KETHER CORTEX

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

Ответить
Развернуть ветку
YamiE

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

Ответить
Развернуть ветку
Andrey Apanasik

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

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

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

Ответить
Развернуть ветку
IHaveNoMouthSoIMustWrite

Видел NTFS?)

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

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

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

Ответить
Развернуть ветку
Ярослав

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

Ответить
Развернуть ветку
3 комментария
ss7877

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

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

Ответить
Развернуть ветку
Vanechka

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

Ответить
Развернуть ветку
sergjjj

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

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

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

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

Ответить
Развернуть ветку
Den Yarullin

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

Ответить
Развернуть ветку
1 комментарий
KETHER CORTEX

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

Ответить
Развернуть ветку
5 комментариев
Кирилл Драновский

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

Ответить
Развернуть ветку
DoorInSummer .

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

Ответить
Развернуть ветку
Vadim Gaidukevich

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

Ответить
Развернуть ветку
1 комментарий
Читать все 58 комментариев
null