ВНИМАНИЕ! 5.03.2016 в 12:47 по МСК гайд снова обновлён - добавлена информация о настройке размера атмосферной короны!
Добро пожаловать! Здесь Вы узнаете, как создать свои собственные планеты в игре Kerbal Space Program, не владея навыками программирования. Без лишних слов перейдём к сути...
С чего же начать? Для начала, разумеется, необходим плагин
Kopernicus, способный влиять на планетарную систему. Он то и заставляет наши планеты появляться в игре.
Скачать его можно в теме на официальном форуме, на которую можно попасть по следующей ссылке:
http://forum.kerbalspaceprogram.com/index.php?/topic/103277-105-kopernicus-beta-06-december-28/
Также нам понадобится плагин
KittopiaTech. Это генератор текстур вида издалека и из режима карты для планет, а также визуальный редактор, открывается в самой игре нажатием
Ctrl+P.
Скачать - опять же в теме на оф. форуме, ссылка на неё:
http://forum.kerbalspaceprogram.com/index.php?/topic/116356-105-kopernicus-kittopiatech-a-kopernicus-visual-editor-16-jan/
Оба эти плагина устанавливаем в папку
GameData в директории игры.
Теперь, когда у нас есть необходимые плагины, можно браться за конфигурацию самой планеты. Создаём или копируем файл формата
.cfg (называйте как хотите, но лучше названием планеты, чтоб понятно было) в любую директорию той же папки
GameData. Далее пишем в нём конфигурацию планеты...
Что нужно знать в первую очередь:1)Если в параметре стоит
True или
False, то это фактически тумблер (выключатель), где
True это Вкл/Да, а
False - Выкл/Нет.
2)Чтобы заставить Коперникус игнорировать какой-либо текст в строчке, поставьте перед текстом две слэш-черты
//, я так перед пояснительными текстами в разделах конфигурации сделал, чтобы можно было прямо оттуда в конфигурации планет копировать. Если в указанной вами директории ещё нет указанной текстуры, то
обязательно ставьте
// перед параметром этой директории, иначе Коперникус откажется загружать планету в игре.
3)Значения в конфигурации пишутся в следующих единицах:
Высоты, длины и радиусы - в
метрах.
Время и периоды - в
секундах.
Углы и показатели орбиты - в
градусах, 360=полный круг (кроме meanAnomalyAtEpoch, её в
радианах, 2п=полный круг).
Давление - в
Килопаскалях (
кПа), 1кПа = 1000 Паскалей.
Все
температуры - в
Градусах Кельвина (
*К), 0
*С=273.15
*К.
4)Любые цвета могут быть прописаны двумя способами:
а)color = RGBA(Число,Число,Число,Число) - числа в скобках отвечают за
Красный,
Зелёный,
Синий и Альфа-канал(непрозрачность*) в цвете соответствено, должны принадлежсть интервалу [0 ; 255].
б)color = Число, Число, Число, Число - Числа опять же отвечают за
Красный,
Зелёный,
Синий и Альфа-канал(непрозрачность*) в цвете соответствено, должны принадлежсть интервалу [0 ; 1].
*В разделе поверхности чаще всего ни на что не влияет, ибо КСП не может в полупрозрачный ландшафт.
5)Пояснение часто встречающихся** параметров:
seed - зерно для генерации в процедурниках. Можно писать любое число в интервале [0 ; 2147483647]
blend - степень нанесения цвета.
octaves - число уровней наложения, только целое!
frequency - частота наложения.
persistence - сила наложения, стандарт - 0.5
order - порядковое место модификатора.
deformity - амплитуда высот в модификаторе.
deformation - тоже амплитуда высот, так пишется в некоторых модификаторах.
offset - смещение по высоте.
enabled - включен ли модификатор.
name - отличительное имя модификатора, нужно, если используется 2 одинаковых по типу модификатора.
start - начало.
end - конец.
Scatter - Скаттеры, то есть модели мелких объектов (растительность, камни и т.д.), они чисто визуальные, можно сквозь них спокойно проходить.
**В основном в модификаторах ландшафта.
6)Гайд делался по Коперникусу версии
0.6.3 и Киттопии версии
0.3, в будущих версиях автор может добавить или убрать какие-либо компоненты, на счёт изменения их структуры сомневаюсь, ибо это в саму КСП вложено.
P.S. В самом низу новости есть архив с полностью рабочими примерами, можете оттуда подчерпнуть, если чего-то не поняли здесь.
Теперь по существу...
Что конкретно писать в конфигурацию, параметры и их занчения:
@Kopernicus:AFTER[Kopernicus]
{
Body
{
name = Biss //Название планеты.
flightGlobalsIndex = 24 //Номер планеты в списках игры. Только целое, не должно быть двух одинаковых, 0-16 занято стоком.
Debug
{
exportBin = true //генерирует кэш планеты, если оного нет. Лучше не выключать, без кэша - глюки-пуки.
}
Template // "Заготовка" для планеты, с которой берутся непрописанные параметры.
{
name = Kerbin // Имя планеты, которая берётся за "заготовку"
removeAllPQSMods = true // Удаление модификаторов ландшафта (не будет брать с "заготовки")
removeOcean = False // Удаление океана (не будет брать с "заготовки")
}
cacheFile = Binarka/Biss/cache.bin //путь к файлу кэша планеты (там сгенерирует, если нету)
Properties //Основные характеристики планеты.
{
description = Todo. //Описание планеты.
radius = 310000 //Радиус планеты.
geeASL = 0.44 //Гравитация на уровне моря в G (G=9.81 м/с^2).
rotationPeriod = 18000 //период вращения планеты (длительность дня на ней), в секундах.
initialRotation = 90 //Поворот планеты на х градусов.
tidallyLocked = True //Приливной захват - приравнивает период вращения планеты к сидерическому периоду, ингорирует "rotationPeriod".
isHomeWorld = False //Всегда должно быть False. Строчка обязательно должна присутствовать, если за "заготовку" взят Кербин.
//sphereOfInfluence = 480000 //Принудительный радиус сферы действия планеты, работает при включённом параметре.
timewarpAltitudeLimits = 0 15000 15000 35000 60000 250000 900000 2500000 //Высоты порогов уровней тайм-варпа. Должен быть ноль и после него 7 чисел через пробел.
ScienceValues //Множители науки в соответствующих положениях относительно планеты.
{
landedDataValue = 1.6 //На поверхности.
splashedDataValue = 1.5 //В океане (если он есть).
flyingLowDataValue = 1.3 //Нижние слои атмосферы (если она есть).
flyingHighDataValue = 1.2 //Верхние слои атмосферы (если она есть).
inSpaceLowDataValue = 1.1 //Невысоко в космосе.
inSpaceHighDataValue = 1.0 //Высоко в космосе.
recoveryValue = 2 //Общий множитель.
flyingAltitudeThreshold = 10000 //Порог высот в атмосфере (если она есть).
spaceAltitudeThreshold = 45000 //Порог высот в космосе.
}
biomeMap = Binarka/Biss/Textures/Biss_Color.png //путь к текстуре карты биомов
Biomes //Список биомов планеты, сюда кидаем биомы.
{
Biome //Пример биома, оных можно сделать много
{
name = Ocean //Название биома
value = 1.0 //множитель руды и науки в биоме
color = RGBA(18,26,40,1) //Цвет биома на текстуре карты, можно приблизительно.
}
}
}
Orbit //Параметры орбиты планеты.
{
referenceBody = Kerbin //Родительское тело (вокруг него проложена орбита).
color = 0.1, 0.6, 0.5, 1.000 //Цвет орбиты.
inclination = 0.0001232354 //Наклон орбиты относительно экватора родительского тела, в градусах.
eccentricity = 0.0000994969 //Эксцентриситет (вытянутость) орбиты, должно быть в интервале [0 ; 1).
semiMajorAxis = 7570000 //Большая полуось орбиты, в метрах.
longitudeOfAscendingNode = 90 //Долгота восходящего узла, в градусах.
argumentOfPeriapsis = 90 //Аргумент периапсиса (самой низкой точки орбиты), в градусах.
meanAnomalyAtEpoch = 0 //Средняя аномалия в момент времени epoch, в радианах(НЕ ГРАДУСАХ!!!).
epoch = 0 //Момент времени epoch, в секундах относительно начала игры на сохранении.
}
ScaledVersion //Внешний вид планеты с больших расстояний и из режима карты.
{
Material
{
texture = Binarka/Biss/Textures/Biss_Color //путь к текстуре карты цветов.
normals = Binarka/Biss/Textures/Biss_Normal //путь к текстуре карты нормалей.
shininess = 0.03 //блеск объекта на солнце, не советую ставить больше 0.1
specular = 0.1,0.1,0.1,1.0 //цвет блеска.
Gradient //Атмосферная подцветка (если атмосферы нет - уберите) в зонах соответственно:
{
0.0 = 0.62,0.62,0.62,1 //Зенит
0.6 = 0.076,0.076,0.076,1 //Терминатор
1.0 = 0.02,0.02,0.02,1 //Антизенит
}
}
}
Rings //Раздел, добавляющий кольца.
{
Ring //Пример кольца.
{
angle = 0.0 //Наклон кольца относительно экватора.
outerRadius = 2000 //Внешний радиус. (км от поверхности)
innerRadius = 1500 //Внутренний радиус. (км от поверхности)
texture = Planets/Irelion/Textures/ring //Путь к текстуре кольца.
color = 1.0,1.0,1.0,1.0 //Цвет кольца.
lockRotation = false //блокиратор вращения.
unlit = true //Белая подцветка независимо от солнца и цвета. Включив это, окрашивайте саму текстуру.
}
}
//Сюда пихаем остальные разделы конфигурации.
}
}
PQS //Раздел, отвечающий за поверхность в целом.
{
minLevel = 2 //Минимальный уровень детализации.
maxLevel = 10 //Максимальный уровень детализации. На малых телах 6-7, на крупных - 8-10.
Material // Свойства поверхности. Строчки без пояснения лучше не трогать. Не обязательно при наличии template.
{
saturation = 1 // Насыщенность цветов поверхности.
contrast = 3 // Контрастность цветов поверхности.
tintColor = 0.173,0.173,0.173,0.5 //Тонировка поверхности
powerNear = 0.75
powerFar = 0.75
groundTexStart = 0
groundTexEnd = 10000
steepPower = 4 //Степень наложения текстур куртых склонов
steepTexStart = 10000
steepTexEnd = 100000
steepTex = BUILTIN/terrain_rock00 //Тексутра поверхности на крутых склонах
steepTexScale = 1,1
steepTexOffset = 0,0
steepBumpMap = BUILTIN/Cliff (Layered Rock)_NRM //Нормаль поверхности на крутых склонах
steepBumpMapScale = 1,1
steepBumpMapOffset = 0,0
steepNearTiling = 1000
steepTiling = 100
lowTex = BUILTIN/terrain_sand00 //Текстура поверхности на малых высотах
lowTexScale = 1,1
lowTexOffset = 0,0
lowBumpMap = BUILTIN/Waterbump //Нормаль поверхности на малых высотах
lowBumpMapScale = 1,1
lowBumpMapOffset = 0,0
lowNearTiling = 4000
lowMultiFactor = 10
lowBumpNearTiling = 4000
lowBumpFarTiling = 10
midTex = BUILTIN/terrain_grass00_new //Текстура поверхности на средних высотах
midTexScale = 1,1
midTexOffset = 0,0
midBumpMap = BUILTIN/cloud_normal //Нормаль поверхности на средних высотах
midBumpMapScale = 1,1
midBumpMapOffset = 0,0
midNearTiling = 4000
midMultiFactor = 100
midBumpNearTiling = 1000
midBumpFarTiling = 100
highTex = BUILTIN/terrain_snow00 //Текстура поверхности на больших высотах
highTexScale = 1,1
highTexOffset = 0,0
highBumpMap = BUILTIN/05_NORMAL //Нормаль поверхности на больших высотах
highBumpMapScale = 1,1
highBumpMapOffset = 0,0
highNearTiling = 4000
highMultiFactor = 4
highBumpNearTiling = 2000
highBumpFarTiling = 4
lowStart = 0.02 //Начало малых высот
lowEnd = 0.1 //Конец малых высот
highStart = 0.5 //Начало больших высот
highEnd = 1 //Конец больших высот
//0=Низшая точка поверхности, 1=Высшая точка поверхности. Средние высоты - между малыми и большими (очевидно, лол).
planetOpacity = 1
}
Mods // Раздел для модификаторов ландшафта, собственно отвечающих за рельеф.
{
//Образцы модификаторов:
VertexSimplexNoiseColor //Шум 2 цветов на поверхности.
{
seed = 522
blend = 0.121221
colorStart = -0.15,-0.15,-0.15,1 //Цвет 1
colorEnd = 0.2,0.2,0.2,1 //Цвет 2
octaves = 3.0
persistence = 0.6
frequency = 1.6
enabled = true
order = 200
}
VertexSimplexHeightAbsolute //Шум холмообразными возвышенностями.
{
name = diff1
seed = 522
deformity = 200
octaves = 3.0
persistence = 0.55
frequency = 90
enabled = true
order = 30
}
VertexSimplexHeightAbsolute //Второй такой же шум, уже требуется "name" в обоих, причём разный.
{
name = diff2
seed = 225
deformity = -200
octaves = 3.0
persistence = 0.55
frequency = 60
enabled = true
order = 31
}
VertexSimplexHeight //Нанесение горообразных возвышенностей и впадин.
{
seed = 555
deformity = 2500.0
octaves = 9.0
persistence = 0.4
frequency = 1.0
enabled = true
order = 21
}
FlattenOcean //Перевод поврехности ниже уровня моря в плоские поля.
{
oceanRadius = 1.0 //Радиус сферы плоских полей в (1=радиус самой планеты).
enabled = false
order = 25
}
VertexHeightOffset //Смещение всей поверхности на высоту offset.
{
offset = -6250.0
enabled = true
order = 22
}
VertexVoronoi //Вороной шум впадинами на поверхности.
{
deformation = 800
seed = 9
displacement = 0.1 //максимальная разница высот краёв впадин (1=deformation).
frequency = 16
enableDistance = false
enabled = true
order = 102
}
//Эти 2 модификатора просто добавтье, если на планете есть атмосфера.
AltitudeAlpha
{
atmosphereDepth = 4000.0
invert = false
enabled = false
order = 999999999
}
AerialPerspectiveMaterial
{
globalDensity = -0.00001
heightFalloff = 6.75
atmosphereDepth = 150000
DEBUG_SetEveryFrame = true
cameraAlt = 0
cameraAtmosAlt = 0
heightDensAtViewer = 0
enabled = true
order = 100
}
//-----------------------------------------------------------------
VertexHeightMap //Простая карта высот
{
map = Binarka/Biss/Textures/surface_bump.dds //Путь к текстуре карты.
offset = -1500.0
deformity = 5500.0
scaleDeformityByRadius = false
order = 20
enabled = true
}
VertexColorMapBlend //Наложение карты цветов
{
blend = 0.9
map = Planets/Taron/Textures/Taron_Color.png //Путь к текстуре карты.
order = 500
enabled = true
}
HeightColorMap //Построение цветов по слоям в зависимости от высоты.
{
//Необходим VertexHeightMap, но можно использовать, не создавая лишних неровностей на поверхности, для этого за текстуру карты высот возьмите абсолютно чёрную (Красный, Зелёный и Синий всех пикселей в ноль) картинку пропорций 2:1 (ширина:высота).
blend = 1.0
order = 201
enabled = true
LandClasses // раздел для слоёв
{
Class //пример слоя
{
name = SeaFloor //Название слоя
altitudeStart = 0.0000 //Высота нижней границы слоя.
altitudeEnd = 0.2985 //Высота верхней границы слоя.
//Высоты зависят от VertexHeightMap, за единицу берётся его deformity.
color = 0.1,0.1,0.15,1.0 //Цвет слоя
lerpToNext = true //Смешивать ли со следующим слоем. У самого верхнего слоя всегда False!
}
}
}
LandControl //Комплексный окрашиватель поверхности
{
//altitude - высота
//latitude - широта
//longitude - долгота
vHeightMax = 4000 //Высота 1 для "классов поверхности"
createColors = true //Вкл/Выкл окраску "классами поверхности"
createScatter = false //Вкл/Выкл объекты на поверхности (растительность, камни и т.д.)
altitudeBlend = 0.01 //Диффузия окраски высоты
altitudeSeed = 34534
altitudeOctaves = 3
altitudePersistance = 0.6
altitudeFrequency = 15
latitudeBlend = 0.068 //Диффузия окраски широты
latitudeSeed = 13486
latitudeOctaves = 7
latitudePersistance = 0.55
latitudeFrequency = 5.312
longitudeBlend = 0.06 //Диффузия окраски долготы
longitudeSeed = 77144
longitudeOctaves = 6
longitudePersistance = 0.65
longitudeFrequency = 4
enabled = true
order = 9999991
landClasses //Раздел для "классов поверхности"
{
Class //пример "класса поверхности".
{
name = BaseLand
color = 0.5, 0.48, 0.3, 1.0 //Основной цвет
noiseColor = 0.5, 0.46, 0.4, 1.0 //Вторичный цвет
latitudeDouble = True // Вкл/Выкл 2-й интевал широтной окраски.
//Для основного цвета.
coverageBlend = 1
coverageSeed = 444431
coverageOctaves = 4
coveragePersistance = 0.5
coverageFrequency = 2
//Для вторичного цвета.
noiseBlend = 0.5
noiseSeed = 111134
noiseOctaves = 4
noisePersistance = 0.5
noiseFrequency = 8
minimumRealHeight = 0 //Минимальная высота над уровнем моря, работает если не 0, удобно для ледяных шапок.
alterRealHeight = 0
alterApparentHeight = 0
altDelta = 0.045
latDelta = 1
lonDelta = 1
delta = 0.33193067424154
altitudeRange //Высотная окраска.
{
//0 - уровень моря, 1 - vHeightMax
startStart = -0.04
startEnd = -0.04
endStart = 0.009
endEnd = 0.019
startDelta = Infinity
endDelta = 100
}
latitudeRange //1-й интевал широтной окраски.
{
//0 - северный полюс, 0.5 - экватор, 1 - южный полюс.
startStart = 0.05
startEnd = 0.05
endStart = 0.6
endEnd = 0.6
startDelta = Infinity
endDelta = Infinity
}
latitudeDoubleRange //2-й интевал широтной окраски.
{
//0 - северный полюс, 0.5 - экватор, 1 - южный полюс.
startStart = 0.3
startEnd = 0.3
endStart = 0.95
endEnd = 0.95
startDelta = Infinity
endDelta = Infinity
}
longitudeRange //Окраска по долготе.
{
//0 - 0*, 0.5 - 180*, 1 - 360*.
startStart = -1
startEnd = -1
endStart = 2
endEnd = 2
startDelta = Infinity
endDelta = Infinity
}
coverageSimplex //Шум основного покрытия.
{
octaves = 4
persistence = 0.5
frequency = 2
}
noiseSimplex //Шум вторичного покрытия.
{
octaves = 4
persistence = 0.5
frequency = 8
}
scatters //Добавление на поверхность класса Скаттеров
{
ScatterAmount //Добавление скаттера
{
scatterName = boulder //Имя добавляемого скаттера
density = 4 //Плотность расположения на поверхности
}
}
}
}
scatters //Раздел скаттеров для данной планеты.
{
Scatter //Пример скаттера
{
name = boulder //Имя скаттера
mesh = BUILTIN/boulder //Путь к файлу модели
material = BUILTIN/brown_cliff // Путь к файлу текстуры
minLevel = 7 //Минимальный уровень детализации, при котором видны скаттеры.
seed = 231123
maxCache = 512 //Максимальный кэш под скаттер.
maxCacheDelta = 32
maxScatter = 20 //Максимальное кол-во скаттеров, показанных одновременно.
densityFactor = 1 //Фактор плотности расположения.
minScale = 0.5 //Минимальный размер.
maxScale = 3 //Максимальный размер.
maxSpeed = 1000
}
}
VertexPlanet //Комплексный генератор поверхности, без помощи других способен сгенерировать ландшафт, применяется на Минмусе.
{
buildHeightColors = false
colorDeformity = 3300 //Высота 1 для "классов поверхности"
ContinentalSimplex //Континентальный шум рельефа
{
deformity = 1
frequency = 1
octaves = 10
persistance = 0.4
seed = 5747
}
RuggednessSimplex //Вторичный шум рельефа
{
deformity = 1
frequency = 0.5
octaves = 4
persistance = 0.5
seed = 4444
}
SharpnessNoise //Регулятор резкости рельефа
{
seed = 0
deformity = 0.002
octaves = 4
persistance = 0.5
frequency = 0.5
Noise
{
frequency = 0.5
lacunarity = 0.5
quality = High
octaveCount = 4
seed = 45777
}
}
SharpnessSimplexMap //Вторичный регулятор
{
deformity = 50
frequency = 1.5
octaves = 4
persistance = 0.55
seed = 6346
}
deformity = 3400
LandClasses //Раздел "классов поверхности".
{
LandClass //"класс поверхности", отвечающий за плоские поля.
{
name = AbyPl //Название
baseColor = 0.295, 0.144, 0.061, 1.000 //Основной цвет.
colorNoise = 0.18, 0.12, 0.05, 1.000 //Вторичный цвет
colorNoiseAmount = 0.3 //Кол-во вторичного цвета
SimplexNoiseMap
{
deformity = 1
frequency = 3
octaves = 4
persistance = 0.6
seed = 1122
}
//Высоты границ слоя, 0 - уровень моря, 1 - colorDeformity
fractalStart = 0 //Нижняя граница слоя
fractalEnd = 0.001 //Верхняя граница слоя
fractalDelta = 0.001 //Разница между высотами границ
startHeight = 0
endHeight = 0
lerpToNext = true
}
LandClass //пример "класса поверхности"
{
name = Beach //Название
baseColor = 0.21, 0.11, 0.11, 1.000 //Основной цвет.
colorNoise = 0.1, 0.1, 0.05, 1.000 //Вторичный цвет
colorNoiseAmount = 0.1 //Кол-во вторичного цвета
SimplexNoiseMap
{
deformity = 1
frequency = 2
octaves = 3
persistance = 0.6
seed = 5888
}
//Высоты границ слоя, 0 - уровень моря, 1 - colorDeformity
fractalStart = 0.001 //Нижняя граница слоя
fractalEnd = 0.24 //Верхняя граница слоя
fractalDelta = 0.239 //Разница между высотами границ
startHeight = 0
endHeight = 0
lerpToNext = true
}
}
oceanDepth = 0 //Глубина, ниже которой ландшафт не опустится (переход в плоские поля).
oceanLevel = 0 //Высота плоских полей.
oceanSnap = false
oceanStep = 0
seed = 446655
terrainRidgeBalance = 0.2 //Регулятор пологости склонов, больше - пологее, на макс./мин. высоту не влияет.
//1=terrainShapeStart 0=terrainShapeEnd
terrainRidgesMax = 1 //Максимальная высота, до которой считается форма ландшафта (обрезается, если выше deformity, на Минмусе такие срезы есть).
terrainRidgesMin = 0.412 //Минимальная высота, до которой считается форма ландшафта.
//1=deformity
terrainShapeStart = 2 //Верхняя точка формы ландшафта.
terrainShapeEnd = -2 //Нижняя точка формы ландшафта.
terrainSmoothing = 0.12 //Регулятор сглаживания ландшафта.
TerrainTypeSimplex //Шум детализации (мелочей) ландшафта.
{
deformity = 1
frequency = 8
octaves = 10
persistance = 0.5
seed = 98
}
enabled = True
order = 100
}
VoronoiCraters //Процедурные кратеры на поверхности
{
deformation = 5000
voronoiSeed = 4324
voronoiDisplacement = 0.005 //Деформаци окружностей кратеров (0 - идеальный круг).
voronoiFrequency = 3
CraterCurve //Кривая смещения высоты
{
//Схема: key = позиция(-1 - центр, 0 - стандартный радиус) смещение(1=deformation)
key = -1 -1
key = -0.9 -0.95
key = -0.8 -0.97
key = -0.7 -0.8
key = -0.6 -0.3
key = -0.5 0.1
key = -0.4 0.16
key = -0.3 0.09
key = -0.2 0.04
key = -0.1 0.01
key = 0 0
}
JitterCurve //Кривая jitter(упомянут ниже), схема такая же.
{
key = -1.0 0.01
key = -0.8 0.01
key = -0.6 0.01
key = -0.4 0.01
key = -0.3 0.01
key = -0.2 0.01
key = 0.0 0.0
}
simplexSeed = 1114141
simplexOctaves = 9
simplexPersistence = 0.5
simplexFrequency = 120
jitter = 0 //мелкие деформации в чаше кратера
jitterHeight = 1 //их амплитуда.
rFactor = 1
rOffset = 1
colorOpacity = 0.0 //Цветовое выделение кратеров.
DebugColorMapping = false
enabled = true
order = 101
}
}
}
Atmosphere //Раздел, отвечающий за атмосферу.
{
ambientColor = 0.05,0.15,0.25,1 //Подцветка в атмосфере
lightColor = 0.99,0.7,0.5,0 //Цвет, обратный цвету атмосферной короны (неба).
//Знаю, бредово, но подругому не получается
// Основные настройки атмосферы
enabled = true //Включена ли она вообще.
oxygen = false //Наличие кислорода в атмосфере.
altitude = 50000.0 //Максмальная высота.
pressureCurve //Кривая атмосферного давления.
{
//Схема: key = [Высота над уровнем моря] [Давление] [Изменение давления вниз, кПа/метр] [Изменение давления вверх, кПа/метр]
//Каждый фрагмент через пробел, квадратных скобок не надо.
key = 0 91.1925 0 -0.012159
key = 2500 60.795 -0.012159 -7.918e-3
key = 5000 41.0 -7.918e-3 -4.8e-3
key = 7500 29.0 -4.8e-3 -4e-3
key = 10000 19.0 -4e-3 -2.4e-3
key = 15000 7.0 -2.4e-3 -1e-3
key = 20000 2.0 -1e-3 -3e-4
key = 25000 0.5 -3e-4 -8e-5
key = 30000 0.1 -8e-5 -9e-6
key = 40000 0.01 -9e-6 -1e-6
key = 50000 0 -1e-6 0
//Самая большая высота должна совпадать с altitude.
}
pressureCurveIsNormalized = false //Тут всегда false.
temperatureSeaLevel = 282.604 //Температура на уровне моря.
temperatureCurve //Кривая температуры.
{
//Схема: key = [Высота над уровнем моря] [Температура] [Изменение температуры вниз, *K/метр] [Изменение температуры вверх, *K/метр]
//Каждый фрагмент через пробел, квадратных скобок не надо.
key = 0 282.604 -0.01 -0.006087
key = 30000 100 -0.006087 0.01
key = 50000 300 0.01 0
//Температура на уровне моря должна совпадать с temperatureSeaLevel.
}
temperatureCurveIsNormalized = false //Тут всегда false.
temperatureLapseRate = 0.0024
temperatureSunMultCurve = false //Тут всегда false.
//Эти 2 параметра лучше не ковырять.
adiabaticIndex = 1.492 //Индекс Адиабатности.
gasMassLapseRate = 2.064 //Влияние на спад температуры газа.
atmosphereMolarMass = 0.014 //Молярная масса воздуха в атмосфере. Влияет на работу крыльев и нагрев от аэроторможения.
AtmosphereFromGround //Параметры атмосферной короны (по сути неба на планете).
{
transformScale = 1.055,1.055,1.055 //Радиус визуального порога, в радиусах планеты.
waveLength = 0.99,0.7,0.5,0 //Длина волны, =lightColor !
outerRadiusMult = 1.05 // Ставьте чуть меньше, чем в transformScale.
}
}
//ВНИМАНИЕ!!! При наличии атмосферы в PQS надо вставить вот эти 2 модификатора:
AltitudeAlpha
{
atmosphereDepth = 4000.0
invert = false
enabled = false
order = 999999999
}
AerialPerspectiveMaterial
{
globalDensity = -0.00001
heightFalloff = 6.75
atmosphereDepth = 150000
DEBUG_SetEveryFrame = true
cameraAlt = 0
cameraAtmosAlt = 0
heightDensAtViewer = 0
enabled = true
order = 100
}
Ocean //Раздел, добавляющий планете океан по заданным параметрам.
{
//Эти 4 параметра не трогать.
maxQuadLengthsPerFrame = 0.03
minLevel = 2
maxLevel = 7
minDetailDistance = 8
//---------------------------
oceanColor = 0.2, 0.06, 0.0, 1.000 //Цвет океана, копируем в оба цвета "Material" и "FallbackMaterial".
Material
{
colorFromSpace = 0.2, 0.06, 0.0, 1.000
//color = 0.2, 0.06, 0.0, 1.000
}
FallbackMaterial
{
colorFromSpace = 0.2, 0.06, 0.0, 1.000
//color = 0.2, 0.06, 0.0, 1.000
}
Mods // Отсюда нужен только путь к текстуре воды.
{
Fog //Туман в океане.
{
//Цвета тумана
fogColorEnd = 0.05, 0.07, 0.1, 1.0
fogColorStart = 0.15, 0.17, 0.2, 1.0
skyColorOpacityBase = 0.9 //Видимость тумана.
}
AerialPerspectiveMaterial
{
globalDensity = -0.00001
heightFalloff = 6.75
atmosphereDepth = 150000
DEBUG_SetEveryFrame = true
cameraAlt = 0
cameraAtmosAlt = 0
heightDensAtViewer = 0
enabled = true
order = 100
}
OceanFX
{
Watermain
{
waterTex-0 = Planets/Kovus/Textures/lava //Путь к текстуре воды, копируем во все 9 строчек
waterTex-1 = Planets/Kovus/Textures/lava
waterTex-2 = Planets/Kovus/Textures/lava
waterTex-3 = Planets/Kovus/Textures/lava
waterTex-4 = Planets/Kovus/Textures/lava
waterTex-5 = Planets/Kovus/Textures/lava
waterTex-6 = Planets/Kovus/Textures/lava
waterTex-7 = Planets/Kovus/Textures/lava
waterTex-8 = Planets/Kovus/Textures/lava
}
framesPerSecond = 10
spaceAltitude = 0
blendA = 0.1
blendB = 0.1
texBlend = 0
angle = 0
specColor = 0.000, 0.000, 0.000, 0.000
oceanOpacity = 0.1
spaceSurfaceBlend = 1
enabled = true
order = 9999999
}
}
HazardousOcean //нагрев от океана.
{
HeatCurve //Кривая нагрева
{
//Схема: key = [Высота относительно уровня моря] [Множитель нагрева*]
//Каждый фрагмент через пробел, квадратных скобок не надо.
//*Осторожно! Тепло излучается в ближайшие высоты!
key = 0.2 0
key = -5 1.5
key = -25 12
}
}
}
ВНИМАНИЕ!!! При добавлении океана на заготовку, изначально имеющую свой океан, removeOcean должно быть True.
Текст в оформлении пришибло к левому краю, но на деле можно смещать строчки пробелами вправо для удобства.
Обратите внимание на // перед путями текстур!
В конфигурацию прописывайте части в зависимости от того, какую планету хотите создать.
Когда написали конфигурацию, запускаем игру и направляемся к нашей новой планете, для этого рекомендую использовать
HyperEdit. Если всё сделано правильно, то она должна появиться на заданной орбите с текстурами заготовки.
Но на деле наши модификаторы ландшафта работают...
Находясь рядом с ней, открываем
Киттопию, выбираем нашу планету в списке
Planet Selection, включаем тумблер
Export Textures? (
ВНИМАНИЕ! Export Mesh? выключить!) справа и жмём кнопку
ScaledSpaceUpdater. Далее ждём пока он сгенерирует текстуры...
Когда это закончится, мы увидим, как планета выглядит на самом деле...
Далее идём в
GameData\KittopiaTech\Textures\название вашей планеты\ и берём оттуда файлы
название вашей планеты_Color и
название вашей планеты_Normal - это текстуры карт цветов и нормалей для вида с больших расстояний и из режима карты, кидаем их в прописанную для них в
ScaledVersion директорию и убираем
// со строчек, где она прописана.
С газовым гигантом всё проще - для него не надо генерировать текстуру киттопией, ибо она уже идёт в
ScaledVersion.
Ну вот и всё, планета готова! Можете делать на ней что хотите, как и на любой стоковой.
Архив с примерами полностью рабочих планет.
На этом наш гайд по созданию планет завершён. Извиняюсь, если накосячил где-то.
Спасибо за внимание и удачного воплощения идей!
Новость отредактировал: BlackTigerX - 5 мар 2016 в 12:48
Причина: Обнова!