Лучший способ создать игровую карту - PullRequest
9 голосов
/ 09 апреля 2009

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

Я бы сказал, что есть хорошие 50-60 различных видов плитки - леса, реки, равнины и т. Д.

Пока что лучшее, что я мог придумать, было

  • определить массив (или некоторую похожую структуру) для хранения двух ключевых фрагментов информации - идентификатора местоположения / координаты и целого числа от 1 до 60, определяющего тип плитки

  • в приложении для редактирования растра нарисуйте изображение размером 1000 на 1000 пикселей. Используя палитру из 50 разных цветов, я рисую свою карту - 1 пиксель соответствует 1 плитке. Скажем, для данной плитки воды я нарисую группу пикселей определенного оттенка синего. Сохранить как .gif или .png.

  • напишите какой-нибудь процессор, который затем проанализирует вышеупомянутый gif / jpg и проанализирует его попиксельно. В зависимости от значения RGB пикселя, он определяет тип плитки. Затем обработчик кода генерирует некоторые подпрограммы, которые заполняют массив карты.

Пока, я думаю, что должен быть более легкий путь.

Ответы [ 5 ]

11 голосов
/ 09 апреля 2009

Это должно быть на основе плитки? Взгляните на сайт Даниэля Кука, Затерянный сад , он не только дает вам вкусные бесплатные произведения искусства, но и обсуждает появление произвольного размещения изображений в играх, а не тайлов:

"Когда-то вам нужно было использовать маленькие квадратные плитки для всего. В настоящее время нет реальной необходимости сделать 2D-движок на основе плитки. С произвольные изображения с полной альфа и много скорости заполнения, вы можете поставить вместе игра, как наклейка с книгой. Выкинь свою графику на произвольную позиции и слой, как сумасшедший. Такие игры, как Aquaria, выглядят великолепно и плитки нигде не видно. "

там также есть ссылка для пошаговых инструкций о создании внутриигрового редактора на основе IndieLib .

3 голосов
/ 09 апреля 2009

Попробуйте sourceforge: http://sourceforge.net/search/?type_of_search=soft&words=tile+editor

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

TileStudio даже выведет заголовочные / исходные файлы, которые могут быть скомпилированы непосредственно в ваш движок (не уверен, что вам нужно)

2 голосов
/ 10 апреля 2009

Я бы порекомендовал, чтобы ваша информация о местоположении была индексирующей информацией для вашей структуры данных хранения, а не чем-то, что вы ищите в ней. И.Е.

int get_terrain_type(int x, int y) {
    return terrain[x][y];
}

(Не совсем уверен, что это не то, что вы имели в виду, но я думал, что выложу это там.)

2 голосов
/ 09 апреля 2009

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

Другим вариантом может быть написание программы, которая позволит вам просто определить местоположение основных функций, а программа-генератор заполнит все остальное. (Например: Река, протекающая от x1, y1 до x2, y2. «Большой» forrest с центром в x, y и т. Д.). Это может позволить вам определить большую карту только из меньшего файла географических объектов. Думайте об этом как о том, чтобы делать векторное рисование вместо того, чтобы указывать каждый последний пиксель в растре. : -)

1 голос
/ 09 апреля 2009

Другим вариантом будет создание (пиксельной) карты или непосредственно игровой карты. Это, конечно, зависит от размера вашего мира, и если у вас много специфических ресурсов (город на данный момент, шахта на данный момент ...)

На сайте было много статей на эту тему об игре "жулик", которые можно было бы использовать. (например, RogueBassin )

Они также говорят о структуре данных, чтобы учесть больше вариаций (например, наличие базового изображения, и случайным образом добавлять количество (небольших) "бахромных" изображений при определении представления в массиве карты. Например, для добавления какой-то маленький камень в траве). Другие действуют, как кажется в Ultima V, где некоторые элементы крыши стали прозрачными, когда вы проходите мимо них, также основаны на этой структуре.

Мы обнаружили, что иметь изображение (в нашем случае набор изображений) легко, поскольку вы можете улучшить внешний вид (не более прямоугольный лес!), Когда у вас есть время, и сконцентрироваться на конкретном месте квеста.

1011 * привет *

Гийом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...