Airman 6 Posted December 25, 2003 Q: Чем cоздаются сценарии для Flight Simulator Теоретически для создания сценария достаточно Microsoft SDK и текстового редактора. Для написания используется специальный язык BGL ассемблер, который потом компилируется при помошью программы BGLC (BGL Compiler). Так же в состав СДК входят вспомогательные программы BGLPacer - для "расстановки" эфффектов и библиотечных объектов, Annotator - для создания автогена на своих текстурах и Resampler - для создания фототеррайна, изменеиния ландклассов (текстур поверхности), создания т.н. мешей (неровности поверхности земли). Кроме того используется SCASM (Scenery ASeMbler) еще один язык от сторонних разработчиков. На практике для создания сценария используются визуальные средства. На сегодняшний день самые распостраненые это Airport for Windows http://www.airportforwindows.com/ и Flight Simulator Scenery Creator (FSSC). http://www.fssc.avsim.net/ Обе программы практически равнозначны и позволяют создавать законченный сценарий. Кроме того могут потребоватся программы создания трехмерных объектов такие как Easy Object Designer (EOD), GMax. Кроме того в интернете можно найти много программ облегчающих труд разработчика (постараюсь описать их в отдельно ближе к темем вопросов). Еще раз повторюсь AfW и FSSC на начальном этапе достаточны для создания полноценного сценария. Share this post Link to post Share on other sites
Airman 6 Posted December 25, 2003 Q: Создал свой сценарий, теперь у меня две полосы "старая" и "новая" Что делать? Бывают случаи когда файлы сценариев перескаются. Предположим файл сценария содержит взлетную полосу. Если другой файл BGL содержит ту же взлетную полосу в той же или слегка отличной позиции, две взлетных полосы могут быть отрисованы одновременно. Едиственный путь избегнуть этой ситуации - "вырезать" объекты из "старого" сценария. Для этого в AfW и в FSSC применяется Excluse Area в параметрах которой можно задать координаты области вырезания и категории объектов (для сценариев расположенных "ниже" в списке Библиотеки сценариев FS) которые необходимо скрыть. Вышесказанное относится и к другим объектам (визуальным, навигационным) и автогену. Кроме того "вырезать" область можно в Scenery.cfg например (пример из СДК): [Area.100] Group=Your Area ID=Your Area Title=Your Area Active=TRUE Layer=100 Local=C:\Your Area Exclude=N45 30,W120,N45,W119 30,objects,vors Первые четыре параметра координаты углов, следующий (или разделенные запятыми) что вырезается ALL, Objects, VORS, NAVS Последний вариант можно применить для "чужих" сценариев если автор по каким то причинам этого не сделел. Share this post Link to post Share on other sites
Airman 6 Posted December 25, 2003 Q:Полигоны отображаются в симе не правильно. Искажена форма, моргают или не видны вообще. Основных причин две: Первая - не выровнена поверхность и наш полигон просто прорезает какую либо неровность поверхности и частично (или полностью) проходит под ней. Для выравнивания применить Flaten Area Вторая - ошибка в номерах слоев (Level Layer) Номера слоев устанавливаются для полигонов, рулежек, дорог, и рек и могут иметь значения от 01 - 80. Объекты отрисовываются в FS в порядке увеличения слоев. Взлетная полоса имеет номер слоя 24. Так им образом, если вы хотите отобразить полигон "под" взлетной полосой уровень слоя для этого полигона должен быть меньше 24 и наоборот. Таким образом "нужный" полигон может быть отрисован под другими (не виден) или на одном слое с другим (моргать) и т. п. Share this post Link to post Share on other sites
Airman 6 Posted December 25, 2003 Q:Жесткая поверхность в ГМаксе Если вы сделали наземный полигон в Гмаксе, то добавив выделеную строку можно задать область жесткости для твердых поверхностей. Помните кусок кода для "превращения" 3D объекта в полигон (в понимани сима) OBJECT_0_START label word IFIN1 OBJECT_0_FAIL, image_complex, 2, 32767 ADDCAT OBJECT_0_SCALE, 26 ; 26 - номер слоя SET_SURFACE_TYPE 0, 273, 232, 0 ; задаем тип асфальт ;SHADOW_CALL OBJECT_0_SCALE ; эта стока нам не нужна - закоментирована OBJECT_0_FAIL label BGLCODE Парметры 1) 0 - тип поверхности (0-асфальт/бетон, 1-трава/песок, 2-вода) 2,3) 273, 232 - размеры если не помним, смотрим в Vertex_List (в _0.asm) и складываем абсолютные величины координат точек первый и третий столбец соответственно) 4) 0- высота. Центруется область по последней команде SCALE - в нашем случае по центру координат в Гмакс или по координатам введеным при экспрте (что одно и тоже) Просьба сообщить в топик "О Scenery SDK" если будут замечания, комментарии и вопросы, бо это мое ИМХО, но проверил - работает. Share this post Link to post Share on other sites
Airman 6 Posted December 25, 2003 Q:Как изменить автоген Автоген привязан к конкретному ландклассу - например на классе "тундра" будут расти чахлые кустики, на "крупный город" большие здания. Т.о. первый способ изменить автоген в своем сценарии - это поменять ландклассы - соответственно им изменятся и автоген. Второй способ это создать собственные текстуры поверхности (т.н. "Фототеррайн") и программой Annotator из Autogen SDK расположить на этих текстурах здания и деревья. Разумеется что зания будут случайными (различные высоты в заданном диапазоне, разной раскраски) но можно добится некой узнаваимости жилых массивов. (На самом деле фототерайн это просто еще один спецефический ландкласс - для которого существуют текстуры связанные с конкретным местом по своему имени) И для первого и второго случая можно применить resampler из Custom Terrain Textures SDK. Для создания RAW-файла ландклассов можно воспользоватся утилитой Landclass Assistant (она же поможет создать и INF файл) Так же есть утилиты облегчающие работу например TerraBuilder. EugSh напомнил мне еще один вариант использовать VTP полигоны с дефолными ландклассовыми текстурами. Share this post Link to post Share on other sites
Airman 6 Posted December 25, 2003 Q:Как "оживить" свой сценарий. Способ первый - использование эффектов. Применим когда задачу можно решить игрой текстур (как правило прозрачных), например дымы, феерверки, ночные иллюминации и т.п. Файл эффекта - обычный текстовый файл. Описание есть в Effect SDK. Там же есть и программа Placer - позволяющая помещать эффекты в свой сценарий. Кроме того есь ряд утилит. Напимер FSRergen - позволяющая в Гмакс расставить "точки привязки" и "привязать к ним эффекты. Способ второй - анимация в Гмакс. Обычно применяется для создания цикличного движения, например вращающихся антенн радаров. Используется префикс tick18_ для объекта и делается обыкновенная ключевая анимация. Способ третий - создание динамического сценария. Самый простой вариант использование динамических команд (типа как в програмируемом вездеходе Лего - "вперед 50", "ждать 10 сек.", "повернуть на курс 90", "разбудить другой объект", "уснуть" и т.д.) Следующим шагом может быть придание некого интелекта используя динамические переменные (например время суток) или мониторинг нахождения самолета или других динамических объектов в определенной зоне. Динамические команды описаны в документации к SCASM и в Scenery SDK 2000. Share this post Link to post Share on other sites
Airman 6 Posted January 8, 2004 Как настрить Гмакс для создания сценариев 1. Копируем в папку Plugins Гмакса, два файла FSModelExp.dle и MakeMDL.exe которые находятся в папке FS2002\gmax\Flightsim\plugins. MakeMDL лучше взять крайнюю версию из MakeMDL SDK (старая вообщем то тоже работоспособная, но есть пару глюков и главное в новой версии есть опция Keep Files - которая нам может пригодится в дальнейшем) 2. В национальных настройках Виндовс (Панель управления->Язык и стандарты->Числа) ставим разделител целой и дробной частей числа в "." (точку) вместо запятой в русской (и некоторых других) версиях. 3. Запускаем ГМакс. В Customize-> Unt Setup ставим Metric и выбираем Meters. 4. В Customize -> Preferences -> General ставим 1 Unit=1.0 Meters Все, теперь можно создать кубик с размерами равными длинне нашего любимого самолета, выполнить File -> Export - в появившемся окне MakeMDL указать нужные нам координаты. Полученую БГЛ положить в папку Addon Scenery сима, загрузит сим и проверить что наш кубик правильного размера. 1 Share this post Link to post Share on other sites