Как делать карты


  • Часть 1 Общие замечания
  • Часть 2 Стратегический дизайн
  • Часть 3 Пустыня
  • Часть 4 Город
  • Часть 5 Горы
  • Как делать карты, Часть 1: Общие замечания

    В этой статье будут лишь общие замечания; в следующих статьях будет подробнее разобрана техника рисования, специфичная для конкретных видов местности (tilesets, наборов клеточек) - пустыни (Arizona), города (Urban, по слухам это Чикаго) и гор (Rocky Mountains, или просто Rockies). Отдельная статья будет посвящена дизайну карт с точки зрения стратегии и тактики игры.

    Это на самом деле вольный перевод статьи, которую я же накатал в свое время для официальной вики.

    Где взять редактор карт?


    Он живёт здесь: flaME. Оно работает под windows через .NET 4.0, а также, время от времени, под линуксами и маком через mono. Не то чтобы он очень интуитивен, но мне сейчас лень объяснять, как им пользоваться, может, потом переведу при случае вот эту инструкцию.

    С чего начать?


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

    1. Придумать идею карты. Достаточно подробно, всю топологию продумать.
    2. Нарисовать карту высот. Это делается не в flaME, а в любом вашем любимом фотошопе. Не обязательно сейчас доводить ее до совершенства, но уже сейчас должно быть точно ясно, где обрыв, а где море, и вообще.
    3. Вот теперь открываем flaME и подцепляем карту высот. Затем замазываем ее всю одним цветом (таким, чтобы на нем можно было рисовать скалы) и прорисовываем моря и обрывы. Обрывы рисовать легко при помощи cliff brush.
    4. В этот момент уже можно посадить на карту пару игроков и потестировать её. Например, оценить размеры карты и расстояния (для карт на два игрока расстояние между базами - важнейший параметр, определяющий ход игры).
    5. Теперь с картой всё понятно, спокойно дорисовываем всякие несущественные детали. Разукрашиваем карту всякими разными цветами. Сначала кисточками, потом вручную по клеточкам. Ставим базы игроков, гейты, всё такое.
    6. Под конец можно поиграться с высотами еще раз, довести их до совершенства. То есть скалы и обрывы мы уже нарисовали, а можно добавить просто гладкие холмики и ямки. Это можно и в самом flaME делать, а можно и пофотошопить карту высот опять.
    7. Проверяем. Обязательно проверяем, все ли нефтяшки строятся, не затыкаются ли боты, одни и те же ли фабрики убираются в режиме средних баз у разных игроков на симметричной карте, нет ли случайных дырок в скалах, и т.д.

    Карты высот


    Карта высот - это такая черно-белая (8бит) png- или bmp-картинка размером столько, сколько клеточек на карте, плюс один. Скажем, для карты 100x100 клеточек нужна карта высот размером 101x101; см. рисунок, чтобы было понятно.

    Понятно, да? 3х3 клеточки, но нужно задать высоту 4х4 вершинок.

    Обычно вам до лампочки на эту единичку, но это становится важно, когда вы пытаетесь сделать симметричную карту. В этом случае абсолютно симметричная карта высот должа выглядеть примерно так:



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

    Другая забавная вещь.



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

    Вот о таких вещах нужно думать при рисовании карты высот. Зачем так заморачиваться, почему бы сразу в flaME не нарисовать? Очень просто. Детский редактор карт никогда не станет так удобен, как полноценный графический редактор типа фотошопа (ладно, признаюсь, сам пользуюсь GIMP'ом). В фотошопе вы можете делать градиенты, делать случайные шумы, делать сглаживания и резкости всякие, мягкие кисточки, выделять области по цвету и красить только их, и всё это отразится на игре и на удобстве ... ммм ... нет, flaME очень не скоро станет настолько удобен.

    Вот еще что можно делать. Можно сначала грубо нарисовать, чтобы было просто понятно, где обрывы, а уже потом дорисовать холмики. Потом объясню, почему это офигительно удобно, но таки да, это офигительно удобно. Это может выглядеть примерно так:



    Кисточки


    Значит так. Если вы до сих пор думаете, что при рисовании карты надо каждую клеточку вручную прорисовать нужной текстуркой, то вы сильно ошибаетесь. На самом деле, безусловно, нужно пользоваться кисточками, это огромная экономия. То есть в обязательном порядке идёте на вкладку Terrain Painter и медитируете на неё до просветления. Большая часть всего рисуется кисточками. Потом, в конце, можно подправить отдельные клеточки вручную, на вкладке Textures.

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

    Я еще по-подробнее поговорю об этом в tileset-специфичных статьях.

    Как легко рисовать обрывы


    Если рисовать обрывы первым делом, сразу после того, как нарисовалась карта высот, то это очень просто. Во-первых, заливаете всю карту каким-нибудь цветом, на которым можно рисовать обрывы. В пустыне это красный песок, в городе это серая земля, в горах это гравий либо снег либо снег-на-гравии, причем вы почти наверняка захотите выбрать гравий, потому что на нем можно еще и воду рисовать. Затем вы берёте кисточку-рисующую-обрывы ("cliff brush"), ставите ей размер больше 9000, и ЖМАЕТЕ.



    Всё, flaME угадывает обрывы по карте высот и аккуратненько обрисовывает их. Сразу все, мгновенно на всей карте. Никаких мучений, всё автоматически.

    А теперь о грустном. Во-первых, вам придется поиграться с параметром Cliff Angle. Значение по умолчанию (35 градусов) немного великовато, некоторые небольшие, но вполне осмысленные обрывы будут упущены. Обычно имеет смысл не сразу убавлять это значение, а потом убавить обратно размер кисточки и пройтись по проблемным местам. Во-вторых, местами кисточка эта явно тупит, допуская две подряд треугольные текстурки обрыва, когда должна быть только одна; это обычно бывает внизу, на съездах. Просто нужно быть внимательнее. В-третьих, cliff brush не использует диагональные сплошные обрывчики, которые должны использоваться, когда сходятся более двух обрывов в одной клеточке (это не относится к городской местности).

    Их все равно придется проставлять вручную. Короче, все равно придется немного подправить потом. Но это все равно гораздо легче, чем всё вручную рисовать.

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

    Раскраска вручную


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

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


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

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

    Нейтральные постройки


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

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

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

    Заточка карты для игры с компьютером


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

    1. Не слишком тесная база. AI любит городить большую разлапистую базу, нужно дать ему место. В связи с этим, грузовички и командный центр должны стоять примерно в середине, потому что база всегда строится вокруг них.
    2. Не надо делать слишком причудливо-нарезную местность вокруг базы, иначе компьютерные юниты будут застревать и затыкаться.
    3. Гейты. Ворота то бишь. От англ. "gateways". Это такие невидимые линии на карте, обозначающие, где AI будет строить башни. Чисто подсказка такая для ботов. Да, в flaME есть специальная кнопочка для рисования их, ну справа такая клетчатая вся. Вот на рисунке ниже показаны два гейта, и как бот будет строить на них башни. Да, каждый нарисованный вами гейт будет застроен полностью, кроме двух клеточек примерно в середине. То есть не надо дырочки делать, бот их сам сделает где хочет.


    Карты для нового движка


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

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

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

    То есть вполне нормальная карта, заточенная под новый движок, в редакторе может выглядеть примерно так:


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

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

    Снова оставляю подробности на tileset-специфичные статьи.

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



    Этого не происходит, скажем, при прорисовке обрывов (которые обязаны быть точными), но в целом бывает достаточно часто.