ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм. Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
|
» Секреты моддинга (Вопросница) | страница 47 |
|
|
|
Звездные волки 2: Гражданская война »
МОДовый отсек: «Секреты моддинга (Вопросница)» |
|
|
PirateOnCarrier
50 EGP Репутация: 0 Сообщения: 31
Зарегистрирован: 25.02.2017
![Вы не можете голосовать](images/tool_cool.gif) |
|
Michael_Moon : |
PirateOnCarrier : |
Да вообще всё - от начала и до конца. Вчера попробовал сделать свою собственную миссию для ЗВ1 - в качестве образца структуры файлов распотрошил старую версию скорпион мода. Вроде бы сделал, а игра меня даже на страницу миссий не пустила, вылетела с ошибкой. Могу архив с папкой миссии скинуть.
|
1. Прописываешь миссию в одном из Missions.xml со всякими прибабахами, типа, опосля какой должна запуститься, при каких условиях и т.д. Картинку там для нее указываешь, ссылку на описалово даешь.
2. Делаешь папку с миссией в общей папке с миссиями, что зовется страшным словом Scripts. В ней создаешь необходимые скрипты (можно глянуть в похожих папках).
3. В файле level.lst прописываешь в виде массива созданные тобой скрипты и в какой последовательности они должны загружаться.
4. Смотришь, как создаются другие локации и пытаешься повторить у себя.
В качестве примера можешь посмотреть, как реализовано в КК. У меня там все более упорядочено расположено: диалоги к диалогам, действия к действиям, координаты - в координаты, объекты - к объектам.
В Скорпионе все свалено в одну кучу, так что разбираться приходится долго и нудно. Впрочем, нет ничего невозможного, так что можно и со Скорпионом разобраться. Заодно получишь море практического экспириенса.
|
Cделал всё по списку - игра опять не пустила на страничку миссий. Лог файл выдал
[Exception] 0x00158b00 EXCEPTION_ACCESS_VIOLATION (The thread attempted to read from or write to a virtual address for which it does not have the appropriate access.)
|
|
|
Michael_Moon
100 EGP
![Ветеран Elite-Games (10 лет)](/conference/images/ranks/medals/veteran10.png) Рейтинг канала: 4(72) Репутация: -2 Сообщения: 669 Откуда: РК, Кокшетау Зарегистрирован: 15.02.2011
![Вы не можете голосовать](images/tool_cool.gif) |
|
PirateOnCarrier : |
Cделал всё по списку - игра опять не пустила на страничку миссий. Лог файл выдал
|
Игру сначала начинаешь?
|
|
|
PirateOnCarrier
50 EGP Репутация: 0 Сообщения: 31
Зарегистрирован: 25.02.2017
![Вы не можете голосовать](images/tool_cool.gif) |
|
Michael_Moon : |
PirateOnCarrier : |
Cделал всё по списку - игра опять не пустила на страничку миссий. Лог файл выдал
|
Игру сначала начинаешь?
|
Да
|
|
|
Michael_Moon
100 EGP
![Ветеран Elite-Games (10 лет)](/conference/images/ranks/medals/veteran10.png) Рейтинг канала: 4(72) Репутация: -2 Сообщения: 669 Откуда: РК, Кокшетау Зарегистрирован: 15.02.2011
![Вы не можете голосовать](images/tool_cool.gif) |
|
Ладно, сегодня настроение не самое рабочее, так что давай тогда разберем по пунктам.
1. Mission.xml
Их там несколько штук. Каждый XML определяет свой этап игры и условно называется "эпизод". Внутри содержатся сами миссии. Разберем одну на примере "Уринотерапии":
<MissionDescription name="level_0_004"> <!-- Урино-терапия --> -- открываешь тег миссии, вписываешь ее название и коммент.
<mission_path>level_0_004</mission_path> -- указываешь папку миссии
<short_name>#M_level_0_004_name</short_name> -- имя миссии (видно в списке доступных миссий)
<short_description>#M_level_0_004_short_desc</short_description> -- краткое описание (видно в списке доступных миссий)
<description>#M_level_0_004_desc</description> -- полное описание (можно прочитать при открытии миссии)
<mission_icon>0_004</mission_icon> -- иконка миссии (лежит в текстурах)
<splash_screen>level_00</splash_screen> -- заставка, которая отображается, когда входишь в миссию (лежит в текстурах)
<starting_movie/> -- мувик при входе (если есть)
<min_required/> -- необходимый ранг (уровень), который необходимо иметь, чтобы миссия открылась. В данном случае "нулевой", поэтому заслэшена.
<mission_cost>1000</mission_cost> -- награда за миссию
<next_mission/> -- следующая миссия, которая стартует при попытке выхода из портала (как в миссии "Охота за Красным корсаром", которая состоит из 2-х частей).
<mission_level>2</mission_level> -- уровень, на котором миссия доступна (не путать с min_required (!))
<next_episode/> -- если данная миссия последняя в этом эпизоде, здесь указываешь переход на следующий XML с миссиями
<StartNewsAdd> <!-- news_1_30 --> -- открываем тег с новостью, которая появляется в списке новостей при появлении этой миссии. В данном случае это заказ на помощь Патрулю
<exit_code>MISSION_COMPLETED</exit_code> -- код выхода из предыдущей миссии, при котором эта новость появится. В данном случае для стартовой новости немного туповатое условие. Кодов несколько, на Страннике, вроде бы, их более-менее подробно разбирали.
<name>news_1_30</name> -- указание на саму новость в XML-е News.xml
</StartNewsAdd> -- закрываем тег данной новости. Если хочешь добавить их несколько, то и аналогичных тегов должно быть несколько
<ExitNewsRemove> <!-- news_1_30 --> -- новость, которая удаляется по выходу из миссии. В данном случае я удаляю заказ на помощь Патрулю, т.к. по выполнению миссии он становится неактуальным. Заполняется аналогично тегу стартовой новости
<exit_code>MISSION_COMPLETED</exit_code>
<name>news_1_30</name>
</ExitNewsRemove>
<RequiredMission> -- открываем тег, где указывается миссия, которую необходимо пройти, чтобы появилась текущая. Заполняется аналогично тегам с новостями.
<mission_name>level_1_001</mission_name>
<exit_code>MISSION_COMPLETED</exit_code>
</RequiredMission>
</MissionDescription> -- закрываем тег текущей миссии и переходим к её скриптам
Последний раз редактировалось: Michael_Moon (09:53 26-08-2017), всего редактировалось 2 раз(а) |
|
|
Michael_Moon
100 EGP
![Ветеран Elite-Games (10 лет)](/conference/images/ranks/medals/veteran10.png) Рейтинг канала: 4(72) Репутация: -2 Сообщения: 669 Откуда: РК, Кокшетау Зарегистрирован: 15.02.2011
![Вы не можете голосовать](images/tool_cool.gif) |
|
2. Скрипты миссии.
Лежат в папке, указанной в теге <mission_path>level_0_004</mission_path>. Первым делом открываешь скрипт level.lst - в нем содержится массив скриптов, которые будут исполняться в этой миссии. Важно (!), скрипты будут исполняться в той последовательности, в которой они указаны в массиве! Так же важно помнить, что слово "скрипт" в данном случае обозначает файл миссии, а не код!
Код: |
sys_IncludeFileList =
{
"coordinates.script",
"environment.script",
"declare.script",
"music.script",
"objects.script",
"functions.script",
"triggers.script"
} |
Необходимо помнить, что массивы в ЛУА заполняются через запятую. После последнего элемента запятая не ставится!
Как видим, исполнение скриптов миссии начинается с файла coordinates.script Так что открываем его и начинаем разбирать подробно.
coordinates.script
Как, должно быть, понятно из названия, в этом файле указываются все возможные координаты, используемые в сценарии миссии. Как минимум, желательно указать стартовые координаты для всех объектов в локации, если только эти координаты не генерятся по ходу действия. Для этого необходимо хотя бы в общих чертах представлять себе какие объекты в данной миссии будут присутствовать и какие действия они будут совершать.
Так же я предпочитаю указывать в этом файле и начальные координаты команды игрока, чтобы потом не вспоминать мучительно, куда ты их законопатил, и не рыть все файлы миссии в их поисках. Иметь одну общую координату очень удобно для тонкой настройки начала миссии.
Так же я рекомендую указывать в этом файле и единичные координаты ориентации объекта (direction или orientation).
Некоторые несознательные товарищи типа Леона, Саши Скорпиона и прочие ёжики так же помещали в этот файл и скрипт создания локации. Это возможно, но неправильно! Каждому овощу своё место, а каждому скрипту свое время.
Если, нечаянно или специально, ты создашь в этом файле какой-то объект, это может привести к вылету, т.к. сама локация еще не создана.
Рекомендую в обязательном порядке создать массив с координатами-исключениями (exceptions), в которых никакие другие объекты кроме намеченных создаваться не будут! Для чего это надо будет понятно из разбора следующих скриптов.
environment.script
В этом файле создаем локацию. Сначала задаем карту:
Код: |
InitMap(1400, 1400, 10, 100); |
Передаваемые параметры в данную функцию обозначают следующее:
1400 - размер карты по горизонтали (ось Х),
1400 - размер карты по вертикали (ось Z (а вовсе не Y, как может показаться)),
10 - угол наклона карты (чтобы не быть над ней уж вовсе вертикально),
100 - размер "грида" (единичного квадратика карты) в "кликах".
Создаем саму локацию:
Код: |
InitEnvironment("SR_Planet_6.env"); |
Указываем environment (космос), который хотим использовать в данной локации. По настройке космоса есть свои тонкости, пока лень о них писать. В данном случае я указал свой космос, текстуры которого создал с помощью движка SpaceEngine.
В принципе, это все. Впрочем, я рекомендую создавать здесь же декоративные объекты типа облаков, астероидов, мусора и прочего. При этом необязательно запихивать координаты этих объектов в файл coordinates.script, а можно указывать прямо по ходу создания. Данные координаты ни на что не влияют и в дальнейшем написании миссии использоваться не будут.
Так же я (с помощью Миши Кринка (krink)) написал для себя несколько простеньких функций, которые позволяют раскидывать объекты из заданного массива в пределах заданного объема (похожие функции есть и в скриптах самой игры, но мне мои кажутся удобней). Это удобно тем, что не надо париться, прописывая ручками местоположение и ориентацию каждого астероида в локации. Для декоративных целей вполне себе годится.
Т.к. при использовании этих функций я использую массив с exceptions, то в указанных в этом массиве координатах случайные объекты создаваться не будут, что подразумевает, что основные игровые объекты типа порталов и станций создадутся именно там, где мне нужно (напомню, что, если при создании объекта в локации данная координата уже будет "зобита" другим ранее созданным объектом, игра попытается впихнуть его куда-нибудь поблизости. Если же поблизости места найдено не будет, игра его закинет точно в центр локации). В общем, лучше подстраховаться.
Переходим к следующему файлу.
declare.script
Это, пожалуй, самый таинственный и загадочный файл во всех файлах миссии. Многие ЗВ-писцы пренебрегают его важностью. А зря!
Во-первых, именно здесь создается команда игрока.
Во-вторых, в нем я поместил массив с названиями всех значимых объектов в игре, как то - порталы и станции, а так же с названиями и описаниями квестов внутри заданной миссии. Это удобно, т.к. динамическое шифрование мне недоступно, а записывать все эти названия в отдельном loc-файле в папке LocData мне лень, да и внимание рассеивает изрядно. Здесь же все под рукой и не надо "далеко бежать", если необходимо что-то исправить "на лету".
В-третьих, здесь создаются фракции, участвующие в миссии, а так же прописываются взаимоотношения между ними.
В-четвертых, здесь же я поместил так называемый "антипылесосный" скрипт, чтобы геймер не бил честных торговцев и дружественных ему патрульных и не нарушал баланс преждевременной прокачкой (некоторые ушлые геймеры умудряются обходить это условие, но к данной теме это не относится).
Так же здесь я объявляю некоторые функции для автоматического создания звеньев, но это уже специфика КК.
music.script
В этом файле задаешь массив, который определяет, какая музыка и в каком порядке будет проигрываться. Отдельно "мирные" амбиенты, отдельно баттлы. Я предпочитаю "перемешивать" элементы массивов в случайном порядке с помощью специальной функции. Впрочем, тут все зависит от фантазии скриптуна и целей, которых он хочет добиться в миссии с помощью музыки.
objects.script
Один из самых сложных и ответственных скриптов в миссии! Здесь указывается создание основных объектов игры - порталов, станций, навпойнтов, единичных кораблей и флайтов.
Так же я предпочитаю использовать этот файл для объявления пилотов, задействованных в данной миссии (что логично, если подумать ).
В общем-то вся сложность здесь заключается во внимательном прописывании имен объектов. Важно следить, чтобы эти имена (особенно имена флайтов!!!) не совпадали. В противном случае могут произойти весьма забавные казусы - например 36 истребителей в одном звене
functions.script
Самый важный скрипт! Здесь, собственно, и прописывается все действо, которое происходит в миссии. Чаще всего именно здесь происходит 90% всех запар, с которыми сталкиваются скриптописатели.
Нужно ли его структурировать и как - решать автору миссии. Что касается меня, то я стараюсь придерживаться следующей структуры (т.е., другими словами, делю файл на следующие части):
EXECUTION - здесь прописываешь некоторые анимашки при входе в локацию (для меня немного устаревшее, т.к. все мувики я создаю по ходу действия, но, например, самая первая миссия оригинала создается именно по такому принципу).
VARIABLES - указываю важные глобальные переменные, которые требуются неоднократно в течение всей миссии (например, флаги исполнения каких-то действий, счетчики и прочее).
GAME FUNCTIONS - функции, которые используются движком для своих целей. В ЗВ-2 и ГВ их больше, в ЗВ-1 меньше, но они есть и их лучше помещать отдельно, чтобы потом не путаться.
MISSION FUNCTIONS - функции сюжета (у меня они порой еще и подразбиваются, если квестов в миссии больше одного).
MISSION DIALOGS - диалоги, само собой. Выношу их отдельно и последовательно нумерую. Раньше выдумывал оригинальные названия, чтобы "сразу понятно было, о чем речь", сейчас просто обзываю Dialog_01...n. Сами диалоги обязательно имеют начало (Dialog_01_Start), конец (Dialog_01_End), функцию анимации, если есть (Dialog_01_Anim) или хмл-диалога (Dialog_01_XML), ну и функции реплик, если идут с анимацией (Dialog_01_01...Dialog_01_n).
Что и как писать в этом файле зависит от фантазии автора и его умений. Тут советов можно накидать множество, но... лучше обойтись совсем без них. Каждый должен набивать свои собственные шишки - хотя бы иногда.
triggers.script
Практически не использую этот файл, т.к. предпочитаю создавать и "убивать" триггеры по ходу пьесы. Удобней, да и кэш чище Редко, когда нужны какие-то "стационарные" триггеры, работающие в течение всей миссии, и которые необходимо объявить прямо при входе в локацию, можно использовать этот файл. Во всех остальных случаях на него лучше забить. Ну и файл TriggerUtils.script вам в помощь (если сумеете его вставить в игру и правильно прописать его старт).
Вот, в общем-то, и все про создание локации в ЗВ-1. Как видим, ничего особо сложного. Впрочем, никогда не стоит забывать, что дьявол таится в деталях, поэтому как можно чаще пользуйтесь функцией LOG("текст сообщения, который необходимо вывести в лог игры") при отладке игры - сразу будет видно где, когда и в каком месте происходит затык
|
|
|
PirateOnCarrier
50 EGP Репутация: 0 Сообщения: 31
Зарегистрирован: 25.02.2017
![Вы не можете голосовать](images/tool_cool.gif) |
|
О, премного благодарствую за столь развёрнутый ответ, будем экспериментировать.
И еще такой вопрос - как всё таки создается космос?
Последний раз редактировалось: PirateOnCarrier (21:59 26-08-2017), всего редактировалось 1 раз |
|
|
Aleksey_SR
73 EGP Рейтинг канала: 4(67) Репутация: 6 Сообщения: 175 Откуда: Новокузнецк Зарегистрирован: 13.12.2015
![Вы не можете голосовать](images/tool_cool.gif) |
|
PirateOnCarrier : |
О, премного благодарствую за столь развёрнутый ответ, будем экспериментировать.
И еще такой вопрос - как всё таки создается космос?
|
В файле Environment.script юзаешь вышеупомянутые функции InitMap и InitEnvironment. Далее заполняешь его объектами.
_________________ Discord: shadowvinyl |
|
|
Michael_Moon
100 EGP
![Ветеран Elite-Games (10 лет)](/conference/images/ranks/medals/veteran10.png) Рейтинг канала: 4(72) Репутация: -2 Сообщения: 669 Откуда: РК, Кокшетау Зарегистрирован: 15.02.2011
![Вы не можете голосовать](images/tool_cool.gif) |
|
Aleksey_SR : |
В файле Environment.script юзаешь вышеупомянутые функции InitMap и InitEnvironment. Далее заполняешь его объектами.
|
Не совсем так, Лёш. Там все немного сложней
|
|
|
Aleksey_SR
73 EGP Рейтинг канала: 4(67) Репутация: 6 Сообщения: 175 Откуда: Новокузнецк Зарегистрирован: 13.12.2015
![Вы не можете голосовать](images/tool_cool.gif) |
|
Michael_Moon : |
Aleksey_SR : |
В файле Environment.script юзаешь вышеупомянутые функции InitMap и InitEnvironment. Далее заполняешь его объектами.
|
Не совсем так, Лёш. Там все немного сложней
|
Точно, перепутал файлы. coordinates.script должно быть.
P.S. кстати, почему бы все скрипты не слить в один файл? Или хотябы в 2: первый отвечает за локацию, второй за миссию? Я один раз такое с менюшкой проделывал. Ничего по сути не поменялось. Только мини-задержка появилась при появлении ГУИ окна при запуске игры.
_________________ Discord: shadowvinyl |
|
|
Michael_Moon
100 EGP
![Ветеран Elite-Games (10 лет)](/conference/images/ranks/medals/veteran10.png) Рейтинг канала: 4(72) Репутация: -2 Сообщения: 669 Откуда: РК, Кокшетау Зарегистрирован: 15.02.2011
![Вы не можете голосовать](images/tool_cool.gif) |
|
Aleksey_SR : |
P.S. кстати, почему бы все скрипты не слить в один файл? Или хотябы в 2: первый отвечает за локацию, второй за миссию? Я один раз такое с менюшкой проделывал. Ничего по сути не поменялось. Только мини-задержка появилась при появлении ГУИ окна при запуске игры.
|
А зачем? Каждый файл отвечает за свое. Удобно. При затыке знаешь где что искать. Была бы возможность, я бы такую же систему в ГВ сделал. Как минимум добавил бы coordinates.script, declare.script и environment.script
|
|
|
PirateOnCarrier
50 EGP Репутация: 0 Сообщения: 31
Зарегистрирован: 25.02.2017
![Вы не можете голосовать](images/tool_cool.gif) |
|
Michael_Moon : |
Aleksey_SR : |
P.S. кстати, почему бы все скрипты не слить в один файл? Или хотябы в 2: первый отвечает за локацию, второй за миссию? Я один раз такое с менюшкой проделывал. Ничего по сути не поменялось. Только мини-задержка появилась при появлении ГУИ окна при запуске игры.
|
А зачем? Каждый файл отвечает за свое. Удобно. При затыке знаешь где что искать. Была бы возможность, я бы такую же систему в ГВ сделал. Как минимум добавил бы coordinates.script, declare.script и environment.script
|
Не, я немного не то имел ввиду. Как создается скайбокс - то есть файл .env, который указывается при инициализации карты в enviroment.script?
|
|
|
Michael_Moon
100 EGP
![Ветеран Elite-Games (10 лет)](/conference/images/ranks/medals/veteran10.png) Рейтинг канала: 4(72) Репутация: -2 Сообщения: 669 Откуда: РК, Кокшетау Зарегистрирован: 15.02.2011
![Вы не можете голосовать](images/tool_cool.gif) |
|
3. Создание скайбокса
Файлы *.env лежат в папке ...\StarWolves\DATA\Environment. Смотрим, как и что мы можем сделать в плане космоса.
В принципе все грамотно и четко расписано в комментах внутри самих файлов, но для ленивых умом можно пройтись и разобрать тонкости.
Код: |
; файл, от куда брать координаты звёзд
StarsFile = empty.str |
Указание на файл, где содержатся координаты звезды и их количество. Редактируя файл *.str можно добиться практически любой звездной конфигурации. Но это, как всегда, требует времени, усидчивости и кропотливости. Так что в данном случае стоит просто заглушка.
Код: |
; радиус сферы, на которую будут накладыватся звёзды
StarsRadius = 0 |
Чем меньше сфера, тем "виднее" и гуще звезды. Стандартное значение где-то 300-500. Здесь у меня стоит нуль, потому что "звездность" задается текстурой. Отличие игровой звездатости от текстурной в том, что игровые звезды мерцают.
Код: |
; кол-во звёзд-точек для случайного разброса
StarsRandomPoint = 0 |
Чем выше значение, тем "звездатее" небо. Почему у меня "нуль" смотри выше.
Код: |
; кол-во плоских-звёзд для случайного разброса
StarsRandomPlain = 0 |
"Плоские" звезды - это текстурная генерация звезд "сияющих" в отличие от звезд-точек. В локации подбирается опытным путем по вкусу редактирующего.
Код: |
; базовый размер для случайно разбрасывемых плоских звёзд
PlainRandomSize = 0 |
Тут, по моему, комментарии излишни
Цитата: |
; разброс размеров для случайно разбрасывемых плоских звёзд
PlainRandomSizeSpread = 0
|
Тоже само понятно. Эксперимент - наше все.
Код: |
; начало имени файлов с текстурами для звёзд
SkyBoxName = SR_Planet_1/side |
Вот тут интересно. SR_Planet_1 - это название папки, содержащей текстуры для скайбокса. Там 6 файлов: 4 стороны, верх и низ. Папка эта лежит в папке TEXTURE.
Код: |
;начало тумана, как часть от полной глубины Z буфера, если -1 - туман отключен
FogStart = 0.5
;конец тумана, как часть от полной глубины Z буфера
FogEnd = 0.9 |
Отображение того самого "тумана войны", из глубины которого постепенно "проявляются" объекты, к которым приближается игрок. В данном случае первый параметр обозначает некую условную дистанцию, с какой начинает действовать этот пресловутый туман, второй - где он начинает заканчиваться (именно так).
Код: |
;цвет тумана
FogColor = 0 5 5 10 |
Тут он изображен "на-отмахнись". По-хорошему подбирается по основному цвету спектра одной из звезд, присутствующих в локации - типа, этот цвет превалирует.
Код: |
; общий амбиент сцены
BaseAmbient = 0 200 240 255 |
Тоже самое, что и в случае с цветом тумана. Общий амбиент я сейчас предпочитаю указывать по основному цвету спектра более яркой звезды, а цвет тумана - по цвету "подсвечивающей". Создается некий контраст, хорошо воспринимаемый визуально. Впрочем, тут все вкусовщина и художественное виденье сцены.
Код: |
; имя карты отражения уровня
ReflectionMap = SR_Planet_1/SRP1_reflection.dds |
Ссылка на текстуру, которая отвечает за подсветку отражений на объекте. Параметр зачастую недооцениваемый, хотя почему - не знаю. Придает объекту большую глубину и четкость за счет того, что создает на нем игру полутеней в рамках окрашивания основного амбиента.
Код: |
; параметры солнца
; максимум 2 солнца
Sun1_Pos = 10 81 500 -- расположение светила на сцене. 10 - угол сдвига относительно абсолютных координат локации (если помним, Vector3(0,0,1) = нулю градусов). 81 - угол сдвига относительно вертикали локации (угол 0 градусов будет обозначать, что светило точно у вас над головой, 90 - ровно на эклиптике), 500 - удаление в кликах (подбирая удаление, можно регулировать угол освещения объектов. Нечто вроде мощной лампы, которую приближаешь или удаляешь к сцене - уровень светимости почти не меняется, но на объекты в разных точках сцены свет будет падать под разным углом)
Sun1_ColorDiffuse = 0 255 245 200 -- основной цвет светила
Sun1_ColorSpecular = 0 255 245 200 -- дополнительный цвет светила, дающий оттенки или высверки. Лучше подбирать в тон основному цвету, с небольшим отличием.
Sun1_ColorAmbient = 0 25 24 20 -- еще один дополнительный цвет светила. Рекомендация та же, что и к спекулару, но сам оттенок подбирается темнее - желательно, на грани перехода основного цвета в темноту, тогда достигается самый качественный эффект. Я бы назвал этот параметр "цвет теней на объекте"
Sun1_LensFlareFile = LensFlare_G -- текстура светила, содержится в папке TEXTURE игры. Важно подобрать ленсфлэр таким, чтобы он как можно лучше соответствовал текстурам скайбокса! Ленсфлэр красного цвета будет не очень хорошо сочетаться с зеленой текстурой космоса, вплоть до того, что геймеру будет неприятно находиться в локации и выполнять миссию.
Sun1_LensFlareScale = 1.0 -- размер светила в градусах. Делать слишком большим не стоит, ибо светило получается "яростным". Сделаешь слишком маленьким - будет ощущение, что находишься где-нибудь на орбите Плутона - пусто и холодно. Как всегда, исходишь из текстуры локации и подбираешь размер |
Параметры светила в локации. Что за что отвечает отображено в комментариях.
Код: |
; параметры планет, до 10 планет
Planet1_MeshName = moon_1
Planet1_Pos = 300 60 20 |
Планеты, которые размещаешь в локации. Параметры примерно те же, что и для светила. Необходимо помнить, что указываемая планета (в данном случае moon_1), должна быть в папке OBJECTS игры. Степень приближения-удаления регулируешь последним параметром. Слишком приближать не стоит (ближе 5), ибо, как это ни парадоксально, объекты в локации могут оказаться... внутри этой планеты Так же степень приближения зависит от качества текстуры - если хорошая и подробная, можно расположить объект поближе, чтобы было лучше видно детали, если плохая, располагаешь подальше, чтобы было видно "вообще" В общем, везде и во всем необходимо соблюдать чувство меры и внутренней гармонии.
Напоследок хочу дать несколько бесплатных советов (можно не благодарить):
1. не старайся делать космос слишком ярким или кричащим - это сильно раздражает и отвлекает от самого действа.
2. всегда помни, что космос - всего лишь декорация для миссии. Всегда старайся подобрать космос так, чтобы выполнение миссии находилось в гармонии с тем, что геймер видит вокруг себя.
3. соблюдай цветовой режим - не пытайся сделать цвета звезды слишком яркими или ядовитыми. Геймер видит эти цвета на своем мамашипе и своих истребителях, и ему неприятно на них смотреть. Старайся сделать так, чтобы цвета в локации всего лишь придавали оттенок естественным цветам самого объекта - тогда у геймера отложится в голове, что "это та локации, где все объекты приобретают теплый оранжевый оттенок". Ему будет приятно перепройти мисиию, где его глаз не раздражает кислотный космос и кричащая палитра на обшивке его любимого мамашипа.
4. не старайся делать цвет облаков и туманностей белым - создается впечатление, что действие происходит где-то в атмосфере. По отношению к космосу получается гротеск.
В общем-то, все. Как всегда, ничего особо сложного и замудреного.
Последний раз редактировалось: Michael_Moon (19:44 27-08-2017), всего редактировалось 1 раз |
|
|
Protok St
65 EGP
![Ветеран Elite-Games (10 лет)](/conference/images/ranks/medals/veteran10.png) Рейтинг канала: 2(15) Репутация: 8 Сообщения: 106 Откуда: Мирградъ-Земля Зарегистрирован: 09.08.2009
![Вы не можете голосовать](images/tool_cool.gif) |
|
Код: |
; имя карты отражения уровня
ReflectionMap = SR_Planet_1/SRP1_reflection.dds |
Цитата: |
отвечает за подсветку отражений на объекте...Придает объекту большую глубину и четкость за счет того, что создает на нем игру полутеней в рамках окрашивания основного амбиента.
|
Карта отражения - текстура которая будет отражаться на материалах модели со свойством "отражение".
Эта текстура не оказывает влияние на "подсветку, глубину, чёткость, игру полутеней и окрашивание амбиентом".
Эта текстура отражается на зеркальных поверхностях.
Что надо о ней знать, так это то, что она должна быть безшовной. Иначе при ближайшем рассмотрении зеркал будут видны стыки краёв текстуры - что в космосе, сами понимаете, не комильфо.
Для отражения текстуры ReflectionMap, кроме свойства на материале модели, необходимо иметь альфа слой на текстуре используемой самой моделью.
Добавлю примеры. Хорошо видно текстуру отражения на плоских панелях портала. А идеально её видно на Рамаданте, если из под низа посмотреть на углубление с трубами по левому борту.
Отличные гайды, Серж! Радуют во всех отношениях )
Последний раз редактировалось: Protok St (19:25 03-10-2017), всего редактировалось 1 раз |
|
|
Michael_Moon
100 EGP
![Ветеран Elite-Games (10 лет)](/conference/images/ranks/medals/veteran10.png) Рейтинг канала: 4(72) Репутация: -2 Сообщения: 669 Откуда: РК, Кокшетау Зарегистрирован: 15.02.2011
![Вы не можете голосовать](images/tool_cool.gif) |
|
Влияние как раз оказывает, Ратмир, т.к. в игре у тебя все объекты зеркалят - больше или меньше Зеркалят, потому что все текстуры имеют альфу Именно этим передается типа игра полутеней, хотя на самом деле происходит то, что ты описал
|
|
|
Protok St
65 EGP
![Ветеран Elite-Games (10 лет)](/conference/images/ranks/medals/veteran10.png) Рейтинг канала: 2(15) Репутация: 8 Сообщения: 106 Откуда: Мирградъ-Земля Зарегистрирован: 09.08.2009
![Вы не можете голосовать](images/tool_cool.gif) |
|
Хорошо, что с "подсветкой, глубиной, чёткостью, и окрашиванием амбиентом", мы уже согласны.
Теперь, о полутени.
Michael_Moon : |
этим передается типа игра полутеней
|
Сперва:
полуте́нь — слабая тень, возникающая, когда объект освещён несколькими источниками света. Она также образуется на поверхности, обращённой к источнику света под небольшим углом;
Откуда следует, что "игра полутеней" передаётся размещением нескольких источников света.
Эффект отражения на текстуре(материале модели) не является источником света, и не взаимодействует с освещением.
При любом освещении эффект зеркала будет работать одинаково.
Это проверяется выставлением альфы на 100%. Получится полное отражение ReflectionMap, которое будет одинаковым при любом освещении.
Текстура отражения ReflectionMap указанная в среде, не влияет на перечисленные показатели.
Это не отменяет факта, что текстура отражения придаёт объектам особый вид. Однако она это делает вне зависимости от показателей освещения и амбиента. Таков графический движок. Одна и та же текстура отражения будет давать одинаковый эффект в разных условиях освещения и амбиента.
|
|
|
Michael_Moon
100 EGP
![Ветеран Elite-Games (10 лет)](/conference/images/ranks/medals/veteran10.png) Рейтинг канала: 4(72) Репутация: -2 Сообщения: 669 Откуда: РК, Кокшетау Зарегистрирован: 15.02.2011
![Вы не можете голосовать](images/tool_cool.gif) |
|
Не придирайся. Независимо от технического исполнения эффект передается именно такой, какой я описал
Присмотрись внимательней: ReflectionMap стараются подогнать под текстуру космоса (во всяком случае под её наиболее значимые детали). Получается, типа фон (туманности, скопления и т.д.) зеркалит на поверхности, как будто на неё ложится некий неяркий свет далеких светящихся объектов (которые объектами вовсе не являются). Т.е. получается как бы дополнительный эффект освещения, независимо от имеющихся основных "светильников".
Так что именно то и есть: "Придает объекту большую глубину и четкость за счет того, что создает на нем игру полутеней в рамках окрашивания основного амбиента"
Последний раз редактировалось: Michael_Moon (06:16 04-10-2017), всего редактировалось 1 раз |
|
|
Protok St
65 EGP
![Ветеран Elite-Games (10 лет)](/conference/images/ranks/medals/veteran10.png) Рейтинг канала: 2(15) Репутация: 8 Сообщения: 106 Откуда: Мирградъ-Земля Зарегистрирован: 09.08.2009
![Вы не можете голосовать](images/tool_cool.gif) |
|
Michael_Moon : |
Т.е. получается как бы дополнительный эффект освещения, независимо от имеющихся основных "светильников".
|
Это не освещение, не как бы освещение. Это отражение.
В данном случае мне неясны причины побуждающие подменять понятия.
|
|
|
Michael_Moon
100 EGP
![Ветеран Elite-Games (10 лет)](/conference/images/ranks/medals/veteran10.png) Рейтинг канала: 4(72) Репутация: -2 Сообщения: 669 Откуда: РК, Кокшетау Зарегистрирован: 15.02.2011
![Вы не можете голосовать](images/tool_cool.gif) |
|
R4JVR : |
Это не освещение, не как бы освещение. Это отражение.
|
Отражение чего?
|
|
|
Protok St
65 EGP
![Ветеран Elite-Games (10 лет)](/conference/images/ranks/medals/veteran10.png) Рейтинг канала: 2(15) Репутация: 8 Сообщения: 106 Откуда: Мирградъ-Земля Зарегистрирован: 09.08.2009
![Вы не можете голосовать](images/tool_cool.gif) |
|
Michael_Moon : |
Отражение чего?
|
"На колу мочало, начинаем всё с начала."
http://www.elite-games.ru/conference/viewtopic.php?p=3540714#3540714
"Не учи учёного, по кругу верчёного."
Беседа с человеком, который при любых обстоятельствах сохраняет свою точку зрения - доставляет.
Серьёзно, Серж, по-моему, про отражение написано достаточно. И то, что ты остаёшься при своём мнении - достойно уважения.
У меня есть другой вопрос где ты сможешь блеснуть знанием движка.
На каком расстоянии от камеры объекты в игре исчезают из вида?
Это расстояние константа для всех машин-компов или зависит от их мощности?
Настраивается ли это расстояние вручную, настройками конфига например?
|
|
|
Michael_Moon
100 EGP
![Ветеран Elite-Games (10 лет)](/conference/images/ranks/medals/veteran10.png) Рейтинг канала: 4(72) Репутация: -2 Сообщения: 669 Откуда: РК, Кокшетау Зарегистрирован: 15.02.2011
![Вы не можете голосовать](images/tool_cool.gif) |
|
Это не константа. Задается в main.ini файла в корне игры.
Итак, отражение чего мы видим на объектах? Вопрос с точки зрения обывателя, которому твои "тонкости игростроя" до Красной армии. Если что, не надо мне объяснять про текстуры и альфа-слои. Я, как обыватель, в них не разбираюсь и разбираться не хочу - захожу в любимую игру и просто играю.
|
|
|
|
|
|
Звездные волки 2: Гражданская война ->
МОДовый отсек: «Секреты моддинга (Вопросница)» |
|
К списку каналов | Наверх страницы |
Цитата не в тему: Хотя, с нашей скоростью постинга в конфу, конец темы ты можешь и не увидеть... (Harley)
|
» Секреты моддинга (Вопросница) | страница 47 |
|