Новости | Конференция | Чат | База данных | Творчество | Сообщество | О сайте | English | Помощь сайту |
В данном материале мы рассмотрим возможность создания своей звездной системы с самого начала, но сначала небольшое отступление. Для облегчения работы на первоначальном этапе необходимо заранее спланировать будущую систему. Далее нам потребуются следующие данные: 1. Количество звезд в системе, названия и предполагаемый класс звезды (влияет на цвет) 2. Количество планет, расстояния до звезды, размеры и количество спутников, если таковые предусматриваются. 3. Название космических станций их тип и размещение на орбите планеты. Я буду предполагать, что вы не обладаете дополнительными инструментами, и буду опираться, что все редактирование файлов будет вестись в обычном Блокноте Windows. Так же необходимо скачать с сайта IW2 комплект GeogSDK содержащий в себе компилятор – декомпилятор карт. Вся вселенная IW2 состоит из нескольких файлов, по два на каждую звездную систему – файлы .map и .lws. В файле .map хранится информация о наличии, расположении, размерах звезд, планет и станций. В файле .lws хранится визуальное оформление системы, задается количество и цвет маленьких звездочек на заднем плане. Так же в нем устанавливаются параметры подсветки и некоторые другие параметры, от которых зависит внешний вид звездной системы. Рассмотрим каждый файл по отдельности, а потом займемся добавлением полученной карты непосредственно в игру. СОЗДАНИЕ ФАЙЛОВ .map Файл: my_system.map Карты в игре хранятся в двоичном собственном формате, поэтому нам необходима программа конвертер (компилятор) Geog.exe. Конвертер использует командную строку для получения параметров. Формат вызова: Geog.exe my_system.csv my_system.map Для обратной конвертации .map в .csv формат вызова такой: Geog.exe –decode my_system.map my_system.csv Это может пригодится для отладки карт, если возникли ошибки, или для просмотра с целью изучения уже готовых карт. Конвертор на входе понимает только файлы CSV. Это текстовые файлы, содержащие строки с разделенными запятой данными. Есть ограничения: каждая строка в файле это один объект, переносы строк недопустимы. Количество объектов в системе не должно превышать 1000, нельзя установить больше 100 прыжковых точек в пределах одной системы. Длина одной строки не должна превышать 4096 символов, а имена объектов должны быть не более 260 символов. Формат CSV файла Каждая строка содержит один объект и должна начинаться с идентификатора объекта, строки с неверными идентификаторами игнорируются, поэтому возможно добавление произвольных строк комментариев. Рассмотрим подробней каждый вид объектов. CENTER Каждый файл обязательно должен содержать данную команду в первой строке. Команда дает указание добавить центр будущей системы, который будет точкой отсчета для остальных объектов. Центр системы устанавливается всегда в центр (на то он и центр) и имеет координаты 0,0,0. Формат команды таков:
Вот так это должно выглядеть в файле: Center, my system, end STAR Добавляет на карту звезду. Звезды вращаются вокруг центра системы, он для них является родителем. Формат команды таков:
Пример строки из CSV файла: Star,Alpha Star,My System,1500000000,90,0,5,end В вашей системе может быть несколько звезд. Для размещения их на карте используются следующие параметры: расстояние до Родителя, поворот вокруг родителя. Поворот задается в градусах относительно родителя. Возвышение это поворот вокруг родителя в вертикальной плоскости, задается в градусах положительное значение возвышение, отрицательное опускание. Цвет звезды задается в пределах от 1 до 11. 1 – яркий белый, 4 – 5 желтый, 11 темно красный. Значения более 11 возможны, но не дают видимого эффекта. BODY Добавляет на карту планету или луну. Все планеты и их спутники именуются небесными телами (Body). Формат команды таков:
Пример из CSV файла: Body,Jupiter,Alpha Star, 778e9,20,5,1,0,0,1.0,7e7,4,2,4,6,32,32,200,32,200,32,32,32,200,4,5,171,end, (Этот пример должен быть в одной строке в *.csv файле). Кроме выше рассмотренных параметров, рассмотрим новые: Вытянутость – параметр, влияющий на степень сплющенности планеты, значение варьируются от 0 (идеальный шар) до 1 (вытянутый эллипс). Больше поставить можно, но выглядит это нереально и похоже больше на таблетку, чем на планету. Тип планеты – возможны следующие значения: Центр системы = 0, Звезда = 1, Планета = 2, Спутник (луна) = 3, Газовый гигант = 4, Астероид = 5, Погибший газовый гигант = 6, Пояс астероидов = 7, Туманность = 8, Ошибка => 9. Причем для планет не рекомендуется ставить значения кроме 2,3,4 . Внешний вид планеты зависит от типа текстуры. Бывают 1- скалистые (обычная поверхность), и 2 текстуры газового гиганта. Далее следуют 2 текстурных индекса, которые отсылают нас к номеру текстуры. Номер текстуры есть в «Planets.ini (в архиве Resourse.zip)». Не ставьте текстурный индекс, больше чем их есть в Planets.ini иначе рискуете получить невидимую планету. Следующие три параметра Текстура 1 Red, Текстура 1 Green, Текстура 1 Blue – это цвет первой текстуры, следующие 3 параметра это цвет второй текстуры. И последние три значения это, как я понимаю, цвет текстуры облаков. Цвета представлены в стандартном RGB формате, каждое число может быть от 0 до 255. Следующий параметр индекс текстуры облаков. Смотреть также в «Planets.ini (в архиве Resourse.zip)» (255 – отсутствие таковых). Дальше идет количество колец планеты – с этим все просто бывает от 0 до 8. правда кольца бывают только у газовых гигантов. (Тип планеты = 4) Облачность – принимает значения от 0 до 255. Судя по всему, чем больше число, тем плотнее облака. STATION Добавляет космическую станцию на орбите планеты или звезды. Формат команды таков:
Пример из CSV файла: Station,Home Base,Jupiter,1000000000,90,5,1.0,0,0,28,116,22,20, end, Номер модели станции – задает внешний вид станции, возможны значения от 0 до 36 (см. приложение для детальной расшифровки) Специализация – задает вид деятельности станции, возможные значения:
Принадлежность – устанавливает, кому подчиняется данная станция, возможны значения:
BELT Создает пояс астероидов.
Пример строки из CSV файла Belt,Dark Belt,Alpha Star,600000000000,0,0,0,0,0,0,6000000 NEBULA Создает туманность такую же как вокруг базы «Лукреции».
Пример из CSV файла: Nebula, Ghost, Alpha Star, 6e11,0,0,5e5,end, L-POINT Создает прыжковую зону в точке Лагранжа (точка между планетой и луной, в месте равноденствия сил гравитации обоих тел)
Пример из CSV файла: Lpoint,Io Lpoint,Jupiter,Io,0.5,1,Coyote,end, Смещение от планеты – устанавливает как будет смещена точка прыжка между планетами. 0.5 устанавливает точку ровно в месте равноденствия гравитации. 0.1 располагает точку прыжка на минимальном расстоянии от планеты. Количество маршрутов – количество звездных систем, в которые можно отправиться через данную точку прыжка. Если точка имеет несколько маршрутов, они перечисляются в файле друг за другом. 0 = локальный прыжок в пределах одной звездной системы. L-Pointы можно скрывать или делать не рабочими из кода игры. Если две системы имеют встречные маршруты прыжков на карте систем, они соединяются линией. Установка и ориентация объектов Все объекты могут быть установлены относительно своего родителя, и только Центр системы всегда устанавливается в координаты 0,0,0. Далее, имеем несколько параметров для получения точного местоположения объекта. Расстояние до родителя, поворот вокруг родителя и возвышение над родителем. С расстоянием все понятно, рассмотрим повороты: Поворот вокруг родителя – возьмем, к примеру, систему из одной звезды, одной планеты и луны планеты. Пусть для планеты мы зададим угол поворота вокруг родителя равным 90 градусов. А для луны поворот = 180 градусов Получим такую картинку: Для возвышения то же самое только объект смещается вверх или вниз. Дальше. Самый интересный момент ориентация объекта. Для задания наклона по осям координат используются три значения в формате единичного вектора (Сумма всех отклонений должна быть равна 1. Методика точного расчета мной еще до конца не изучена и оставляет широкое поле для экспериментов. Еще необходимо сказать о точности измерений расстояния. Если вы располагаете, объекты на расстояние дальше чем 1е15 метров от центральной точки, то они будут смещаться. При расстоянии большем, чем 1е16 погрешность будут составлять метры, а при расстояниях больше чем 1е18 погрешность может составить несколько километров! Расстояние до объектов задается числом с плавающей точкой двойной точности размером 53 бита. Когда величина, указанная после точки, становится слишком большой, система отбрасывает числа младшего порядка, чтобы оставить место для отображения больших величин. По сути, она отбрасывает метры, чтобы можно было отобразить большие расстояния Самое большое число, которое величина с плавающей точкой двойной точности может отобразить с тем учетом, чтобы продолжать индивидуальный подсчет метров: 9,007,199,254,740,991. На это следует обратить внимание, если вам необходимо точное расположение объектов. Теперь от теории перейдем к практике, открываем блокнот и добавляем в него все объекты, не забывая, что первым идет родитель затем потомки. У меня для примера получился вот такой файл: Center, Mantikora system, end Star, Mantikora I, Mantikora system, 1500000000, 0, 0, 5, end, Body, Medusa, Mantikora I, 14959790000, 20,0, 1, 0, 0, 0, 700000000, 2, 1, 4, 6, 32, 200, 200, 32, 200, 32, 200, 20, 200, 4, 5, 171, end, Body, Moon, Medusa, 384400000, 120, 0, 1, 0, 0, 0, 3476400, 3, 1, 4, 6, 32, 200, 200, 32, 200, 32, 32, 200, 200, 3, 0, 0, end, Station, Vasilisk, Medusa, 500000000, 30, 0, 0, 0, 0, 12, 106, 2, 20, end, Данный пример создает карту с одной звездой (Mantikora I) желтого цвета, одной планетой (Medusa) имеющей один естественный спутник (Moon) и одну станцию на орбите (Vasilisk). Сохраняем полученный файл с произвольным именем, например Mantikora.csv Теперь его необходимо с помощью программы Geog.exe конвертировать в формат .map Для этого копируем файл Geog.exe в папку с *.csv файлом и запускаем с командной строки. В моем примере будет выглядеть вот так : Geog.exe mantikora.csv mantikora.map В итоге в той же папке должен появиться файл Mantikora.map. Для проверки его можно конвертировать обратно в csv Geog.exe –decode mantikora.map mantikora_dekompiled.csv Если все было сделано правильно файлы mantikora.csv и mantikora_dekompiled.csv должны совпадать. Небольшая разница была замечена у чисел с плавающей точкой, да и то в последних разрядах. Если теперь карту поместить в игру и попробовать в нее поиграть, то нам предстанет ужасное зрелище, абсолютно черный экран, где-то вдалеке висит наше солнце. Это явно непорядок, поэтому в следующей статье мы займемся визуальным оформлением и украшательством нашей звездной системы.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Дизайн Elite Games V5 beta.18 EGM Elite Games Manager v5.17 02.05.2010 |