Developer Guide (Version 1.12)

Configuring System Entities

A single system entity lives at the heart of every Lumberyard application. This entity's components, known as system components, power major systems within Lumberyard. You can use the Advanced Settings dialog of the Project Configurator to choose the components for your project and configure them. Editing a system entity is like editing an entity in the Entity Inspector.

To configure system entities

  1. Compile a profile build of your project so that the Project Configurator can load your project's compiled code.

  2. Go to your Lumberyard \dev\Bin64\ directory, and then launch ProjectConfigurator.exe

  3. In the Project Configurator, select your project.

  4. Click Advanced Settings.

    Click Advanced Settings

    The first time a system entity configuration is loaded, you are prompted to add any required components that are missing from the system entity.

    Adding missing components

    Some system components are optional, and some are required. Both the Lumberyard engine and the gems used by your project may require certain components.

  5. Click Yes. Even if you decline, the required components are created at run time.

  6. Use the Project option at the top of the Advanced Settings dialog box to select the project that you want to edit. For the Configuration option, choose Game if you want to make changes to the Game (launcher) system entity, or Editor to modify the Editor system entity.

    System Entity tab

    The System Entity tab lists components that have been added.

  7. Click Add Component to select from a variety of components to add.

    Add component
  8. To remove a component, right-click the component in the list and choose Remove Component "<ComponentName>".

  9. On the Memory Settings tab, expand System memory settings to configure system memory options.

    System memory settings
  10. Click Save to save your changes to disk. The changes are saved to an application descriptor file, described next.

Application Descriptor Files

When you edit a system entity's configuration by using the Advanced Settings dialog box of the Project Configurator, you are actually editing an application descriptor file.

Application descriptor files are new to Lumberyard 1.5 and list all modules that a project uses. Currently, each project requires two application descriptor files in its asset directory:



In the Project Configurator Advanced Settings dialog box, these files correspond to the Game and Editor options in the Configuration menu.

The following example shows the beginning of a Game.xml file. Both the Game.xml file and the Editor.xml file have the same structure.

<ObjectStream version="1"> <Class name="ComponentApplication::Descriptor" type="{70277A3E-2AF5-4309-9BBF-6161AFBDE792}"> <Class name="bool" field="useExistingAllocator" value="false" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/> <Class name="bool" field="grabAllMemory" value="false" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/> <Class name="bool" field="allocationRecords" value="true" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/> <Class name="bool" field="autoIntegrityCheck" value="false" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/> <Class name="bool" field="markUnallocatedMemory" value="true" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/> <Class name="bool" field="doNotUsePools" value="false" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/> <Class name="bool" field="enableScriptReflection" value="true" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/> <Class name="unsigned int" field="pageSize" value="65536" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/> <Class name="unsigned int" field="poolPageSize" value="4096" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/> <Class name="unsigned int" field="blockAlignment" value="65536" type="{43DA906B-7DEF-4CA8-9790-854106D3F983}"/> <Class name="AZ::u64" field="blockSize" value="0" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/> <Class name="AZ::u64" field="reservedOS" value="0" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/> <Class name="AZ::u64" field="reservedDebug" value="0" type="{D6597933-47CD-4FC8-B911-63F3E2B0993A}"/> <Class name="char" field="recordsMode" value="2" type="{3AB0037F-AF8D-48CE-BCA0-A170D18B2C03}"/> <Class name="unsigned char" field="stackRecordLevels" value="5" type="{72B9409A-7D1A-4831-9CFE-FCB3FADD3426}"/> <Class name="bool" field="enableDrilling" value="true" type="{A0CA880C-AFE4-43CB-926C-59AC48496112}"/> <Class name="AZStd::vector" field="modules" type="{2BADE35A-6F1B-4698-B2BC-3373D010020C}"> <Class name="DynamicModuleDescriptor" field="element" type="{D2932FA3-9942-4FD2-A703-2E750F57C003}"> <Class name="AZStd::string" field="dynamicLibraryPath" value="LmbrCentral" type="{EF8FF807-DDEE-4EB0-B678-4CA3A2C490A4}"/> </Class> [...]

The list of system components in the application descriptor file corresponds to the list of components on the System Entity tab in the Advanced Settings dialog box. Each component can have its own settings. The application descriptor file also contains properties that determine how to allocate memory. These correspond to the settings on the Memory Settings tab in the Advanced Settings dialog box.