31 января 2009
Обновлено 17.05.2023

Горячая линия: игрострой

Горячая линия: игрострой - изображение обложка

24 часа в сутки вопросы по созданию, модифицированию и вскрытию игр принимаются на адрес gamedev@igromania.ru и по SMS на короткий номер 1121 с префиксом #dev (в начале сообщения печатаете слово #dev, а затем, через пробел, сам вопрос). Стоимость каждого SMS — три рубля. Обратите внимание, что ответы на вопросы даются только в журнале.

Жуткий гном

Регулярно натыкаюсь (в статьях про разработку игр и просто на форумах) на упоминания о каком-то гноме. Недавно разместил у себя в блоге свою первую модель дракона, и почти все прокомментировали ее всего одним словом — «гном». Что это за гном такой? — Всеволод Рожнов (Самара)

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

История началась на форуме сайта Gamedev.ru 31 октября 2004 года. Один из участников под ником Asci создал тему со звучным заголовком «Зацените гнома». Внутри был размещен скриншот абсолютно чудовищной модели дварфа, полигональной сетки и какого-то сумасшедшего архитектурного сооружения, отдаленно напоминающего замок, про которое было сказано, что « гном в нем живет ». Ко всему этому великолепию шла приписка: « Не сильно много говорите слово «отстой», а то обидно будет ».

Дальше ситуация развивалась по стандартной психологической схеме — если хочешь заставить кого-то что-то сделать, просто скажи ему этого не делать. Тут же посыпались комментарии: люди шутили, издевались, советовали, вопрошали, делились опытом, показывали свои модели гномов. Через некоторое время подтянулись фотожаберы, и в «гномьей» теме начался пародийный период. Потом обсуждение выродилось в односложные комментарии в духе « Гы-гы, гном! » и « Аффтар, рисуй исчо! ». Поначалу автор участвовал в обсуждении, пояснял, что он не моделлер, а геймдизайнер, поэтому гном получился таким «специфическим». Но потом волна комментариев захлестнула ветку, и вести конструктивный диалог в ней стало уже невозможно.

Собственно, тема жива и по сей день ( www.gamedev.ru/art/forum/?id=5592 ): раз в два-три дня там появляются новые комментарии.

А время не убавляет ход

Недавно нашел в интернете план создания одной известной компьютерной игры. Все это великолепие собрано в огромную (нет, даже так — ОГРОМНУЮ) Excel-таблицу и расписано до мелочей. Сколько времени отведено на создание одного персонажа (и там тоже по пунктам: анимация, текстурирование, подгрузка в движок), кто всем этим занимается и так далее. Поскольку это Excel, я быстренько подгрузил туда формулы и прикинул, а сколько реально времени должно было уйти на разработку при условии восьмичасового рабочего дня. Получилось всего полгода. А на самом деле игра делалась года три. Откуда такая разница? Получается, пресловутые человеко-часы — это фикция и реально они ничего не отражают? — Денис Фролов (Новосибирск)

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

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

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

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

Я и лошадь, я и бык

Постоянно читаю блоги разработчиков, в частности 3D-моделлеров и аниматоров. И вот что заметил: на создание одних персонажей уходит почему-то один-два дня, а на других — целые месяцы. В чем тут дело? — _SMS с номера +7-916--87-26_*

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

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

Но и это еще не все. Есть очень сложные для анимации персонажи. Например, практически все четвероногие животные. Анимация человекоподобных существ отшлифована практически до совершенства — есть уже готовые алгоритмы, да и motion capture никто не отменял. А вы попробуйте анимировать лошадь! Там ведь множество мельчайших подробностей, которые аниматору совсем неочевидны, а любой человек подметит ошибку. И ладно лошади — на коня еще можно надеть систему для фиксации mo-cap и заставить ходить так, как нужно. А что делать с тигром или носорогом? Их-то в студию не приведешь и датчики на них не повесишь.

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

Нереалистичная реалистичная физика

Журналисты очень любят оборот «реалистичная физика». Дескать, в Half-Life 2 она очень реалистичная, в «Сталкере» реалистичная, еще в целой куче игр реалистичная. Но если сравнить эти игры между собой, то окажется, что физика в них очень сильно различается. А если сравнить с реальностью, то вообще ничего похожего. Ящики падают, бочки катятся, камешки отскакивают, но это лишь очень отдаленно похоже на реальный мир. Так о какой же тогда реалистичной физике может идти речь? — Алексей Капустин (Москва)

Здесь имеет место типичная подмена понятий. Реалистичной в свое время стали называть физику в играх, где падения тел просчитывались по ньютоновским или очень на них похожим формулам. Помните школу? Ускорение, получаемое материальной точкой, прямо пропорционально приложенной силе и обратно пропорционально массе. Тела воздействуют друг на друга с силами, направленными вдоль одной прямой, силы равны по модулю и противоположны по направлению. А равно F на m, ну и так далее, там еще с десяток производных формул, которые всегда можно подглядеть в учебнике физики за восьмой класс.

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

Вот только одно «но». На то, как падают, разрушаются, взрываются, отскакивают друг от друга и рассыпаются в пыль различные объекты, в реальном мире влияет множество факторов. Материал предмета, материал поверхности, на которую он упал, однородность структуры объекта и так далее. Что самое забавное, все эти параметры учитываются и в компьютерных играх. Учитываются, а не достоверно моделируются!

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

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

Примитивное 3D

Попробовал освоить 3DS Max — почитал ваши старые уроки, неделю поковырялся в программе, кое-что понял и бросил. Очень уж сложно и долго. Я не собираюсь становиться моделлером, просто хочется сделать несколько прикольных фигурок-пародий. А есть какие-нибудь простые программы, в которых можно разобраться за несколько часов? — Никита Максимов

Конечно, есть. На самом деле это тема для целой статьи, но если вам нужно совсем быстро, то рекомендуем утилиту CB Model Pro ( www.cbmodelpro.com ). В ней все настолько интуитивно и просто, что и за час можно освоиться. Нормали, группировка полигонов, NURBS — всего этого можно не знать и при этом делать довольно красивые модели, просто двигая ползунки и перемещая составные части мышкой.

Дизайн диздока

Чем дизайн-документ отличается от технического диздока? Разработчики и издатели пишут то так, то эдак, а иногда используют оба этих понятия, словно это разные вещи. — Борис Смоляник (Тверь)

А это и есть разные вещи. Обычный диздок, как правило, пишется геймдизайнером, причем пишется так, чтобы его могли понять простые смертные — то есть даже люди, ничего не понимающие в разработке игр. А технический диздок, или, как его иногда называют, техдок, создается чаще всего ведущим программистом компании. В нем очень детально описано, как технически можно реализовать каждый из элементов игры. Тут может быть и программный код, и отсылки к конкретным руководствам. Мы как-то видели техдок, в котором на многих пунктах значилось: « Как сделать, не знаю, но знаю, что можно. Будете делать — спросите, к тому моменту разберусь ».

В общем, это такой внутренний документ кодеров. Правда, иногда ведущего программиста заставляют переписывать его более понятным, человеческим языком. Нужно это для того, чтобы руководитель фирмы или издатель понял, о чем идет речь, и выделил нужную сумму на разработку. А то как-то странно отстегивать с барского плеча $10 тыс. за « интеграцию в энджин перманентной функции отслеживания перемещения динамически подгружаемых единиц с учетом абсциссо-ординатной пространственной диаграммы, коррелирующей с относительной системой координат отдельных локаций ». А вот « $10 тыс. за продвинутую систему поиска путей для юнитов » — это уже всем понятно.

Частица к частице

Вы постоянно пишете про системы частиц: и спецэффекты в играх с их помощью создаются, и в кино они используются, и еще много где. Помнится, даже пару видеоуроков на эту тему делали. В итоге я понял, как работает эта технология, но до сих пор не могу разобраться, зачем она нужна. Почему нельзя сделать снег стандартными программными процедурами, ведь эффект будет тот же? — _SMS с номера +7-903--92-86_*

Если создавать подобные эффекты стандартными методами, то недолго и процессор расплавить. Представляете, чтобы на экране появилась всего одна снежинка, движку придется генерировать ее по определенным параметрам, рассчитывать местоположение на экране, вычислять траекторию движения, постоянно обращаться к видеокарте, чтобы проконтролировать, правильно ли там все отрисовалось… Жуть и мрак.

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

Игровой БДСМ

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

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

Совсем без регулирования не может работать даже коллектив из 3-4 человек, всегда нужна «голова», которая будет думать не только за себя, но еще и за всех остальных. Когда рабочая группа разрастается и на первый план выходят вещи из разряда « подписали обязательства », « надо успеть в срок », « работаем по жесткому плану », то вместо « а давайте делать игру мечты » и « мы тут все классные ребята, не поиграть ли нам в геймдев » приходит время кар и пыток.

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

Удар, удар, автогол!

Совсем недавно вышла очередная часть футбольного «сериала» FIFA — FIFA 09. Я уже вскрыл игру, руководствуясь вашим «вскрытием» FIFA 08 (там почти нет никаких изменений). Но вот про изменение характеров и морали игроков вы ничего не писали. Можно их как-то подправить? — Алексей Жегов (г. Москва)

Да, такая возможность есть. Править придется уже хорошо знакомый вам по прошлым играм серии файл config.dat , в котором скрыт другой файл настроек — career.ini. Открывайте его «Блокнотом» и меняйте значения следующих характеристик:

MORALE_STARTS_AT — мораль вашей команды на момент начала сезона.

MORALE_ADD_PLAYS_PREFERRED_POSITION — изменение морали футболиста в случае, когда он играет на своей излюбленной позиции. Значение этого и последующих приведенных параметров может быть как положительным (логично, что в данном случае оно будет именно таким), так и отрицательным. Соответственно, и эффект от этого будет позитивным или негативным.

MORALE_ADD_NOT_PLAYS_PREFERRED_POSITION — изменение морали игрока в случае, когда он выступает на непривычной для себя позиции. Разработчики определили этому и предыдущему показателю нулевые значения, из-за чего все футболисты в игре являют собой этаких универсалов, которым по большому счету все равно, где играть. Но это, мягко говоря, нереалистично. Советуем придать второй настройке значение -1 (или -2 , в случае если вы усиливаете влияние на игру настроя), благодаря чему игрок не на своей позиции будет чувствовать себя не очень уютно.

MORALE_ADD_WON_GAME — изменение настроя игроков вашей команды после победы.

MORALE_ADD_LOST_GAME — изменение морали после поражения.

MORALE_ADD_DRAW_GAME — после ничьей.

Атрибуты MORALE_ADD_WON_GAME_FOR_RESERVE , MORALE_ADD_LOST_GAME_FOR_RESERVE и MORALE_ADD_DRAW_GAME_FOR_RESERVE являются соответственно аналогами трех предыдущих, только относятся они к футболистам команды, не выходившим в матче на поле. Естественно, те не столь сильно реагируют на успех или неудачу своего клуба.

MORALE_ADD_INJURY_SEVERITY_ — изменение морали травмировавшегося футболиста в зависимости от тяжести его травмы. Значение складывается из четырех чисел, первое из которых относится к очень легкому повреждению, второе — к легкому, третье — к среднему, четвертое — к тяжелому. По умолчанию во всех четырех случаях стоит -1 , а значит, влияние на настрой всех видов увечий одинаково. Более логичным видится такое соотношение: -1 , -2 , -3 , -4 (или -2 , -4 , -6 , -8 , если вы усиливаете воздействие морали). Ведь в реальной жизни тяжелая травма нередко выбивает футболистов из колеи, в том числе психологически.

TEAM_OF_THE_MONTH_MORALE_BOOST — улучшение настроя вашей «дружины» после того, как та признается командой месяца.

Следующие шесть характеристик отражают изменение морали у каждого игрока вашей команды в случае, если он:

MORALE_ADD_PLAYER_IS_RESERVE — начал игру на скамейке запасных;

MORALE_ADD_AMBITIOUS_NOT_PLAYED_LAST_GAME — не играл в прошлом матче, но при этом является амбициозным (это такая специальная характеристика) футболистом;

MORALE_ADD_NOT_PLAYED_LAST_GAME — не играл в предыдущей встрече, но является рядовым исполнителем;

MORALE_ADD_IN_STARTING_LINE_UP — попал в стартовый состав;

MORALE_ADD_PLAYED_LAST_GAME — сыграл в прошлом матче;

MORALE_ADD_PLAYER_BOOKED_LAST_GAME — был предупрежден в предыдущей игре. Значительно реалистичнее, если вместо оригинального -2 вы поставите сюда -1 или даже 0 — все-таки в реальной жизни моральное состояние игрока не так уж сильно зависит от того, получил ли он «горчичник» в прошлом матче.

Далее идут одиннадцать атрибутов вида MORALE_ADD_FATIGUE_X_Y , определяющие влияние усталости команды (в интервале между X и Y) на ее мораль. В оригинале коллективную мораль улучшает (на 1 ) только очень низкий уровень усталости (0-5%), остальные ее либо не меняют, либо ухудшают.

MORALE_ADD_FORM_ — зависимость между общекомандными формой и моралью. Здесь указаны одиннадцать чисел, определяющие изменение настроя соответственно при 0, 10-, 20-, 30-, 40-, 50-, 60-, 70-, 80-, 90- и 100-процентной форме. Стало быть, чем в лучшей форме находятся футболисты, тем лучше и их моральное состояние.

MORALE_ADD_LINE_UPGRADE_DIFFERENCE — изменение морали игрока в том случае, если он не подходит под вашу игровую схему.

MORALE_ADD_WIN_STREAK_19_MORE — улучшение морали команды, выигравшей подряд 19 и более матчей (происходящее после очередной победы).

MORALE_ADD_WIN_STREAK_10_19 — выигравшей от 10 до 19 игр;

MORALE_ADD_WIN_STREAK_5_10 — от 5 до 10;

MORALE_ADD_WIN_STREAK_2_5 — от 2 до 5.

MORALE_ADD_LOSE_STREAK_19_MORE — ухудшение морали команды, проигравшей подряд 19 и более матчей (происходящее после очередного поражения);

MORALE_ADD_LOSE_STREAK_10_19 — проигравшей от 10 до 19 игр;

MORALE_ADD_LOSE_STREAK_5_10 — от 5 до 10;

MORALE_ADD_LOSE_STREAK_2_5 — от 2 до 5.

MORALE_ADD_OWNGOAL_ — изменение морали команды после автогола: первого в матче, второго и т.д.

MORALE_ADD_GOAL_ — изменение морали после обычного гола.

Комментарии
Чтобы оставить комментарий,Войдите или Зарегистрируйтесь