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

Материал из 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

The sample file creates a new console variable group named sys_spec_Particles that behaves like an integer console variable. By default, this variable has the state 4 (because of the third line). When changing the variable value, the new state is applied to the referenced CVars. Console variables that are not specified in the cfg file are not set. All desired console variables need to be part of the [CRYENGINE:default] section, otherwise an error message is output. If a console variable is not specified in a custom section ([CRYENGINE:1], [CRYENGINE:2], etc.) the value specified in the [CRYENGINE:default] section is applied.

Console Variable Group Documentation

Some simple documentation text that gives information about the different cvar states in a group is available automatically. Use the question mark operator as usual to output the documentation text.

Example (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

Checking the Variable Group State

When cvars organized in a CVar group are changed individually, the CVar group might no longer represent the value that is assigned to it. To find that out via the console, enter the CVar group name in the console. If the group variable value is not representative, the real state is printed besides the usual information. Example:

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]

By using the console command sys_RestoreSpec, it can be checked why the system spec variables don’t represent the expected states.

sys_RestoreSpec
Restore or test the cvar settings of game specific spec settings,
'test*' and 'info' log to the log file only
Usage: sys_RestoreSpec [test|test*|apply|info]

Filter console and/or file logging

There are two CVars that can be used to filter console messages.

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

To enable the console filter you have to set log_UseFilter to 1/2/3.

0 - filter is disabled
1 - filter only ingame console
2 - filter only the log file
3 - filter both

The actual filter can be set through log_Filter. This is a string that is used to filter the log messages.

log_Filter  = foo //will only display messages that have the string “foo” somewhere.
log_Filter  = -bar //will remove all loggings that have “bar” somewhere.
log_Filter  = foo|bar|dude //you can combine different filters - this will only display loggings with “foo”, “bar” or “dude” in it.
log_Filter  = -foo|-bar|-dude //this will remove all loggings with “foo”, “bar” or “dude” in it.
log_Filter  = foo|-bar //this will display only loggings with “foo” but no “bar” in it.

Примечание: all filters are case insensitive

How to disable «Too many apps» Message Box?

If you open more than one instance of the Launcher you will notice a Message Box informing you that an instance of the Launcher is already opened:

Toomanyapps.jpg

However in some situations, like multiplayer debugging, it might be necessary to open more than one instance of the Launcher on one machine. To disable the Message Box you can add the following line to your root/''system.cfg config file:

ignoreTooManyAppsMessage=1