Использование консоли и файлов конфигурации

Материал из CryWiki Russia

Перейти к: навигация, поиск

Консоль CryENGINE — внутриигровой пользовательский интерфейс, который обеспечивает прямую связь с движком. Он обрабатывает ввод в форме консольных команд и переменных и отображает сообщения лога, сохраняя при этом историю пользовательского ввода и ответы движка.

Содержание

Консольные переменные и команды

Многие аспекты кода движка и игры могут быть изменены с помощью консольных переменных. Консольная переменная имеет имя и значение, которое обычно может быть изменено. Многие значения могут быть изменены во время выполнения с помощью консоли, что делает настройки движка или поведения игры более удобным для дизайнеров и программистов, чем изменения файлов конфигурации или даже исходного кода.

Консольной переменной, которая используется довольно часто является r_DisplayInfo, в которой могут быть назначены различные целые числа. Значение 1 означает, например, что в верхнем правом углу экрана будут показаны основные сведения профилирования, как то текущая частота кадров. Значение 0 отключает отображение этой информации, в то время как значение 2 будет использовать другой режим отображения с несколько иной информацией.

Помимо консольных переменных, которые всегда имеют присвоенного значения, есть консольные команды, которые выполняют конкретные функции при вызове.

Основы использования консоли

Console1.jpg
Консоль в игре


Открытие консоли

В лаунчере или в режиме игры в Sandbox, консоль можно открыть с помощью кнопки тильда ~. В Sandbox доступно отдельное окно консоли, если пользователь не находится в режиме игры, как правило, расположено в нижней части экрана.

Вывод сообщений

Консоль показывает историю сообщений журнала, в том числе предупреждения и ошибки. Список можно прокручивать с помощью клавиш Page-Up и Page-Down. Количество сообщений, выводимых на консоль можно контролировать с помощью глубины журнала, которая может быть настроена с помощью CVar log_verbosity.

log_Verbosity
DUMPTODISK
определяет уровень детализации журналов сообщений, выводимых в консоли
-1=подавляет все журналы (в том числе eAlways)
0=подавляет все журналы (за исключением eAlways)
1=дополнительные ошибки
2=дополнительные предупреждения
3=дополнительные сообщения
4=дополнительные комментарии

Все сообщения консоли сохраняются в файл журнала — Editor.log при запуске Sandbox или Game.log при использовании лаунчера.

Ввод комманды

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

screenshot myScreenshot

Чтобы назначить консольную переменную на определенное значение, введите имя переменной, затем пробел и значение, которое вы хотите назначить.

r_DisplayInfo 1

Консольные переменные и команды нечувствительны к регистру, поэтому не имеет значения, используете ли вы заглавные буквы или нет.

Чтобы запросить значение из Консольной переменной, просто введите имя переменной и нажмите Tab или Enter. Значение будет выведено в консоль.

r_DisplayInfo

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

r_DisplayInfo ?

Автозаполнение и история ввода

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

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

Доступные консольные переменные

CryENGINE имеет огромный список консольных переменных. Большинство из них организованы по модулю и имеют соответствующий префикс. Префикс r_ в r_DisplayInfo например, указывает, что переменная связана с модулем рендера. Для того, чтобы его легко отслеживать из доступных переменных и команд, существует несколько способов, чтобы перечислить все из них.

Команда DumpCommandsVars может быть использована для создания текстовых список всех зарегистрированных переменных и команд. По умолчанию, список хранится в текстовом файле под названием consolecommandsandvars.txt, расположенный в корневой папке CryENGINE. HTML-версия доступна в папке ConsoleHTMLHelp и лучше всего открыть index.html. Если вы ищете конкретную консольную переменную точного названия которой вы не знаете, может быть полезно поискать в текстовом или HTML-файле с помощью текстового редактора или браузера.

Окно консоли в Sandbox имеет поле ввода, в котором могут быть введены команды. Дважды щелкнув на нем появится диалоговое окно, которое содержит список всех зарегистрированных консольных переменных. Непосредственно там можно изменить значения.

И, наконец, для удобства, предварительно сгенерированный список консольных переменных и команд доступен в документации.

Файлы конфигурации

В конфигурационном файле (CFG) можно задать список консольных переменных. Каждая строка конфигурационного файла содержит имя CVar и затем требуемое значение (дополнительный = может быть использована между именем и значением). Однострочные комментарии могут быть добавлены после двух символов --. Пример:

sys_game_folder = Game
-- Отключить полноэкранный режим
r_Fullscreen = 0

Есть несколько файлов конфигурации, которые выполняются автоматически, в следующем порядке (если CFG выполняется позже, он переопределит предыдущие настройки):

  •  %USER%/game.cfg
  • root/system.cfg
  • root/user.cfg

Группы консольных переменных

Группы консольных переменных предоставляют удобный способ применять предустановленные настройки для нескольких консольных переменных одновременно. Группа CVar может изменить другие консольные переменные и группы, поэтому могут быть использованы для создания больших иерархий. Обратите внимание, что циклы в назначении не выявляются и могут привести к сбою. Группы CVar особенно полезны для определения различных профилей качества («конфигураций системы»).

Регистрация новой группы

Каждая группа консольных переменных хранится в виде отдельного CFG-файла, где имя файла определяет имя группы. Группы консольная переменная хранятся в папке Game\Config\CVarGroups (где Game это имя директории игры). Чтобы создать новую группу консольных переменных, добавьте новый текстовый CFG-файл в эту папку

Пример файла sys_spec_Particles.cfg:

[default]
; default of this CVarGroup = 4
e_particles_lod=1
e_particles_max_emitter_draw_screen=64
 
[1]
e_particles_lod=0.75
e_particles_max_emitter_draw_screen=1
 
[2]
e_particles_max_emitter_draw_screen=4
 
[3]
e_particles_max_emitter_draw_screen=16

Файл примера создает новую группу консольных переменных c именем sys_spec_Particles которая ведет себя как целая консольная переменная. По умолчанию эта переменная имеет состояние 4 (из-за третьей строки). При изменении значения переменной, применяется новое состояние к указанной CVars. Консольные переменные, которые не указаны в CFG-файле не меняются. Все необходимые консольные переменные должны быть частью раздела [CRYENGINE:default], в противном случае выводится сообщение об ошибке. Если консольная переменная не задана в пользовательском разделе ([CRYENGINE:1], [CRYENGINE:2] и др.) применяются значения, указанные в разделе [CRYENGINE:default].

Документация группы консольных переменных

Простые текстовые документы, которые дают информацию о различных состояниях группы CVar доступны автоматически. Используйте оператор вопросительный знак, как обычно, для вывода текста документации.

Пример (sys_spec_Particles):

Console variable group to apply settings to multiple variables
 
sys_spec_Particles [1/2/3/4/x]:
... e_ParticlesLod = 0.75/1/1/1/1
... e_ParticlesMaxScreenFill = 16/32/64/128/128
... e_ParticlesObjectCollisions = 0/1/1/1/1
... e_ParticlesQuality = 1/2/3/4/4
... e_WaterOceanSoftParticles = 0/1/1/1/1
... r_UseSoftParticles = 0/1/1/1/1

Проверка состояния группы переменных

Когда CVar организованы в группы, индивидуальные изменения CVar могут больше не представлять значения, возложенные на него. Чтобы выяснить это с помощью консоли, введите имя группы CVar в консоли. Если значения группы переменных не являются репрезентативными, будут выведены реальные состояния помимо обычной информации. Пример:

sys_spec_Particles=2 [REQUIRE_NET_SYNC] RealState=3
sys_spec_Sound=1 [REQUIRE_NET_SYNC] RealState=CUSTOM
sys_spec_Texture=1 [REQUIRE_NET_SYNC]

С помощью консольной команды sys_RestoreSpec, можно проверить, почему переменные конфигурации системы не имеют ожидаемые состояния.

sys_RestoreSpec
Восстановление или проверка конкретных CVar настроек игры,
запись только 'test*' и 'info' в файл журнала
Использование: sys_RestoreSpec [test|test*|apply|info]

Фильтр консоли и/или файла журнала

Есть два CVars, которые могут быть использованы для фильтрации сообщений консоли.

log_UseFilter=0,1,2,3
log_Filter="string"

Чтобы включить фильтр консоли вы должны установить log_UseFilter на значение 1/2/3.

0 - фильтр отключен
1 - фильтровать только игровую консоль
2 - фильтровать только файл журнала
3 - фильтровать и то и то

Фактически фильтр может быть установлен через log_Filter. Это строка, которая используется для фильтрации сообщений журнала.

log_Filter  = foo //будут отображаться только сообщения с строкой “foo”.
log_Filter  = -bar //будут удалены все сообщения с строкой "bar".
log_Filter  = foo|bar|dude //можно сочетать различные фильтры - это покажет только сообщения содержащие строки "foo", "bar" или "dude".
log_Filter  = -foo|-bar|-dude //это удалит все сообщения содержащие строки "foo", "bar" или "dude".
log_Filter  = foo|-bar //это покажет только сообщения содержащие строку “foo”, но не содержащие строку “bar”.

Примечание: все фильтры чувствительны к регистру.

Как отключить окно сообщения «Too many apps»?

Если вы откроете более одного экземпляра Launcher вы заметите окно сообщения, информирующее вас о том, что экземпляр Launcher уже открыт:

Toomanyapps.jpg

Однако в некоторых ситуациях, таких как отладка мультиплеера, это может быть необходимо, открыть более одного экземпляра Launcher на одной машине. Чтобы отключить окно сообщения вы можете добавить следующие строки в файле конфигурации root/''system.cfg:

ignoreTooManyAppsMessage=1