{ // ---- Enable/Disable platforms for the entire project. AssetProcessor will automatically add the current platform by default. // PLATFORM DEFINITIONS // [Platform (unique identifier)] // tags=(comma-seperated-tags) // // note: the 'identifier' of a platform is the word(s) following the "Platform" keyword (so [Platform pc] means identifier // is 'pc' for example. This is used to name its assets folder in the cache and should be used in your bootstrap.cfg // or your main.cpp to choose what assets to load for that particular platform. // Its primary use is to enable additional non-host platforms (Ios, android...) that are not the current platform. // note: 'tags' is a comma-seperated list of tags to tag the platform with that builders can inspect to decide what to do. // while builders can accept any tags you add in order to make decisions, common tags are // tools - this platform can host the tools and editor and such // renderer - this platform runs the client engine and renders on a GPU. If missing we could be on a server-only platform // mobile - a mobile platform such as a set top box or phone with limited resources // console - a console platform // server - a server platform of some kind, usually headless, no renderer. "Amazon": { "AssetProcessor": { "Settings": { "Platform pc": { "tags": "tools,renderer,dx12,vulkan" }, "Platform es3": { "tags": "android,mobile,renderer,vulkan" }, "Platform ios": { "tags": "mobile,renderer,metal" }, "Platform osx_gl": { "tags": "tools,renderer,metal" }, // this is an example of a headless platform that has no renderer. // To use this you would still need to make sure 'assetplatform' in your startup params in your main() chooses this 'server' platform as your server 'assets' flavor "Platform server": { "tags": "server,dx12,vulkan" }, // this section allows you to turn on various platforms in addition to the host platform you're running on // 'enabled' is AUTOMATICALLY TRUE for the current platform that you are running on, so it is not necessary to force it to true for that platform // To enable any additional platform, just uncomment the appropriate line below. "Platforms": { //"pc": "enabled", //"es3": "enabled", //"ios": "enabled", //"osx_gl": "enabled", //"server": "enabled" }, // ---- The number of worker jobs, 0 means use the number of Logical Cores "Jobs": { "minJobs": 1, "maxJobs": 0 }, // cacheServerAddress is the location of the asset server cache. // Currently for a network share server this would be the absolute file path to the network share folder. "Server": { //"cacheServerAddress": "" }, // ---- add any metadata file type here that needs to be monitored by the AssetProcessor. // Modifying these meta file will cause the source asset to re-compile again. // They are specified in the following format // metadata extension=original extension to replace // if the metadata extension does not replace the original, then the original can be blank // so for example if your normal file is blah.tif and your metafile for that file is blah.tif.exportsettings // then your declaration would be exportsettings= ; ie, it would be blank // however if your metafile REPLACES the extension (for example, if you have the file blah.i_caf and its metafile is blah.exportsettings) // then you specify the original extension here to narrow the scope. // If a relative path to a specific file is provided instead of an extension, a change to the file will change all files // with the associated extension (e.g. Animations/SkeletonList.xml=i_caf will cause all i_caf files to recompile when // Animations/SkeletonList.xml within the current game project changes) "MetaDataTypes": { "animsettings": "i_caf", "Animations/SkeletonList.xml": "i_caf", "cbc": "abc", "fbx.assetinfo": "fbx" }, // ---- add any folders to scan here. The priority order is the order they appear here // available macros are // @ROOT@ - the location of asset root // @PROJECTROOT@ - the location of the project root, for example 'Q:\MyProjects\RPGSample' // note that they are sorted by their 'order' value, and the lower the order the more important an asset is // lower order numbers override higher ones. // If specified, output will be prepended to every path found in that recognizer's watch folder. // Note that you can also make the scan folder platform specific by using the keywords include and exclude. // Both include and exclude can contain either platform tags, platform identifiers or both. // if no include is specified, all currently enabled platforms are included by default. // If includes ARE specified, it will be filtered down by the list of currently enabled platforms. // "ScanFolder (unique identifier)": { // "include": "(comma seperated platform tags or identifiers)", // "exclude": "(comma seperated platform tags or identifiers)" // } // For example if you want to include a scan folder only for platforms that have the platform tags tools and renderer // but omit it for platform osx_gl, you will have a scanfolder rule like // "ScanFolder (unique identifier)": { // "watch": "@ROOT@/foo", // "include": "tools, renderer", // "exclude": "osx_gl" // } "ScanFolder Game": { "watch": "@PROJECTROOT@", "display": "@PROJECTROOT@", "recursive": 1, "order": 0 }, // gems will be auto-added from 100 onwards "ScanFolder Root": { "watch": "@ROOT@", "recursive": 0, "order": 10000 }, "ScanFolder Engine": { "watch": "@ENGINEROOT@/Engine", "recursive": 1, "order": 20000 }, "ScanFolder Editor": { "watch": "@ENGINEROOT@/Editor", "output": "editor", "recursive": 1, "order": 30000, "include": "tools,renderer" }, // Excludes files that match the pattern or glob // if you use a pattern, remember to escape your backslashes (\\) "Exclude _LevelBackups": { "pattern": ".*\\\\/Levels\\\\/.*\\\\/_savebackup\\\\/.*" }, "Exclude _LevelAutoBackups": { "pattern": ".*\\\\/Levels\\\\/.*\\\\/_autobackup\\\\/.*" }, "Exclude HoldFiles": { "pattern": ".*\\\\/Levels\\\\/.*_hold\\\\/.*" }, // note that $ has meaning to regex, so we escape it. "Exclude TempFiles": { "pattern": ".*\\\\/\\\\$tmp[0-9]*_.*" }, "Exclude AlembicCompressionTemplates": { "pattern": ".*\\\\/Presets\\\\/GeomCache\\\\/.*" }, "Exclude TmpAnimationCompression": { "pattern": ".*\\\\/Editor\\\\/Tmp\\\\/AnimationCompression\\\\/.*" }, "Exclude EventLog": { "pattern": ".*\\\\/Editor\\\\/.*eventlog\\\\.xml" }, "Exclude GameGemsCode": { "pattern": ".*\\\\/Gem\\\\/Code\\\\/.*" }, "Exclude GameGemsResources": { "pattern": ".*\\\\/Gem\\\\/Resources\\\\/.*" }, "Exclude Private Certs": { "pattern": ".*\\DynamicContent\\\\/Certificates\\\\/Private\\\\/.*" }, "Exclude CMakeLists": { "pattern": ".*\\\\/CMakeLists.txt" }, "Exclude CMakeFiles": { "pattern": ".*\\\\/.*\\\\.cmake" }, "Exclude User": { "pattern": ".*/[Uu]ser/.*" }, "Exclude Build": { "pattern": ".*/[Bb]uild/.*" }, // ------------------------------------------------------------------------------ // Large Worlds Test // ------------------------------------------------------------------------------ "Exclude Work In Progress Folders": { "pattern": ".*\\\\/WIP\\\\/.*" }, "Exclude Content Source Folders": { "pattern": ".*\\\\/CONTENT_SOURCE\\\\/.*" }, "Exclude Art Source Folders": { "pattern": ".*\\\\/ArtSource\\\\/.*" }, //------------------------------------------------------------------------------ // RC params mapping examples //------------------------------------------------------------------------------ // note that productAssetType is a means of setting the output asset Type (as in AZ::Data::AssetType) of a simple job // and is the recommended way to specify that a certain kind of file (such as '*.myextension') becomes registered as the // actual UUID of that type in the engine itself. // Use a regex for matching files, same params for all platforms // "RC TGAs": { // "pattern": ".+\\\\.tga$", // "params": "/tga /texture" //} // Use a glob, have special params for es3 platform // "RC TIFFs": { // "glob": "*.tif", // "params": "/texture", // "es3": "/pvrt" //} // You can also modify a version to compile all matching files again // By default the version is empty // "RC tif": { // "glob": "*.tif", // "params": "\\someparams", // "version": 1.0 //} // This will make the AssetProcessor compile all the .tif files again // you can also optionally supply a priority. // this is used to sort jobs when no other external circumstance sorts them // for example, copy jobs will be higher in priority than other jobs that are not copy jobs // however if they're both copy jobs or both not, and no other circumstances apply, then priority will be used. // default priority is zero if not specified // you can specify an option to skip processing for a file type based on the platform. // for example, if you dont want to process tif files for ios, you can make tif files // process on any platform except for ios: // "RC tif": { // "glob": "*.tif", // "params": "\\someparams", // "ios": "skip" //} // you can specify an option to output product dependencies for a copy job. // please note that you only need to set this option when cry code is required to parse the asset. // otherwise product dependencies will be output automatically by the CopyDependencyBuilder. // for example, if you want to output the product dependencies for font assets: // "RC font": { // "glob": "*.font", // "params": "copy", // "outputProductDependencies": true //} // you can also specify an option to make all jobs critical that matches some pattern/glob. // for example, if you want to make all png files critical than set critical to true. // Note that by default all copy jobs are critical. // Critical jobs are processed before non critical jobs and also prevent the runtime or editor from starting until they are all complete. // "RC png": { // "glob": "*.png", // "params": "\\someparams", // "critical": true //} // you can also specify an option to make all the job store in the asset server cache location if you are running AP in server mode. // For example, if you want to store all png jobs in the asset server cache location including their logs, you can set checkServer = true. // The client(i.e if you are running AP in non-server mode) will also check for this flag to know which jobs to fetch from the asset server cache location. // if unsucessful, it will process the job locally as usual. // "RC png": { // "glob": "*.png", // "params": "\\someparams", // "critical": true, // "checkServer": true //} // note that the FULL PATH to the file will be used as the match, not the relative path // so ensure start your patterns with .* or as appropriate. // Also, any rules which match will apply - so if you have two rules which both apply to PNG files for example // but you only want one, you might want to use exclusion patterns: //Example: process everything EXCEPT the ones in the libs/ui folder with these params // "RC png-normal": { // "pattern": "(?!.*libs\\\\/ui\\\\/).*\\.png", // "params": "/imagecompressor=CTSquish /streaming=0", // "lockSource": true //} //Example: Process everything in the libs/ui folder with linear color space // "RC png-ui": { // "pattern": "(.*libs\\\\/ui\\\\/).*\\.png", // "params": "/imagecompressor=CTSquish /streaming=0 /colorspace=linear,linear", // "lockSource": true //} // More example Regexes: // "pattern": "(?!(.*libs\\\\/ui\\\\/)|(.*editor\\\\/).*\\\\.png" // This pattern will not match anything with editor/ or libs/ui/ in it // "pattern": "((.*libs\\\\/ui\\\\/)|(.*editor\\\\/).*\\\\.png" // This pattern will only match anything with editor/ or libs/ui/ in it // Give every [Section Name] its own unique Name or else they will overwrite each other! "RC i_caf": { "glob": "*.i_caf", "params": "/cafAlignTracks=1 /animConfigFolder=Animations /skipdba=1 /refresh=1", // force server to send the 'pc' platform to RC.EXE so it compiles the same as PC. "server": "/cafAlignTracks=1 /animConfigFolder=Animations /skipdba=1 /refresh=1 /p=pc", "priority": 5, "productAssetType": "{6023CFF8-FCBA-4528-A8BF-6E0E10B9AB9C}" }, "RC caf": { "glob": "*.caf", "params": "copy", "productAssetType": "{6023CFF8-FCBA-4528-A8BF-6E0E10B9AB9C}" }, "RC mp4": { "glob": "*.mp4", "params": "copy", "productAssetType": "{DDFEE0B2-9E5A-412C-8C77-AB100E24C1DF}" }, "RC mkv": { "glob": "*.mkv", "params": "copy", "productAssetType": "{DDFEE0B2-9E5A-412C-8C77-AB100E24C1DF}" }, "RC webm": { "glob": "*.webm", "params": "copy", "productAssetType": "{DDFEE0B2-9E5A-412C-8C77-AB100E24C1DF}" }, "RC mov": { "glob": "*.mov", "params": "copy", "productAssetType": "{DDFEE0B2-9E5A-412C-8C77-AB100E24C1DF}" }, "RC bk2": { "glob": "*.bk2", "params": "copy", "productAssetType": "{BF4879B9-B893-41D2-80E9-24A7BDCD2B50}" }, "RC img": { "glob": "*.img", "params": "copy" }, "RC dba": { "glob": "*.dba", "params": "copy", "productAssetType": "{511562BE-65A5-4538-A5F1-AC685366243E}", "version": 2 }, "RC cgf": { "glob": "*.cgf", "params": "/VertexPositionFormat=exporter /VertexIndexFormat=u32", // on server, feed rc.exe the param /p=pc to force it to compile assets for server platform in pc format. "server": "/VertexPositionFormat=exporter /VertexIndexFormat=u32 /p=pc", "lockSource": true, "priority": 10 // allow CGF files to compile first, so untextured models appear before their textures for faster startup // other available params: /SplitLODs=1 }, "RC surfaceTagNameList": { "glob": "*.surfaceTagNameList", "params": "copy", "productAssetType": "{A471B2A9-85FC-4993-842D-1881CBC03A2B}" }, "RC gradImageSettings": { "glob": "*.gradimagesettings", "params": "copy", "productAssetType": "{B36FEB5C-41B6-4B58-A212-21EF5AEF523C}" }, "RC fbx": { "glob": "*.fbx", // Priority set to 9 so its "before" things like materials but after things like actors and motions (which build using a proper AssetBuilderSDK builder and thus are not in this file) "priority": 9, "version": 5 }, "RC chr": { "glob": "*.chr", "params": "copy", "productAssetType": "{60161B46-21F0-4396-A4F0-F2CCF0664CDE}", "version": 2 }, "RC skin": { "glob": "*.skin", "params": "copy" }, "RC cfi": { "glob": "*.cfi", "params": "copy" }, "RC cfx": { "glob": "*.cfx", "params": "copy" }, "RC cfr": { "glob": "*.cfr", "params": "copy" }, // Warning: If you change the VertexIndexFormat, make sure you update the vtx_idx typedef in Code\CryEngine\CryCommon\ProjectDefines.h "RC abc": { "glob": "*.abc", "params": "/SkipFilesWithoutBuildConfig=0 /VertexIndexFormat=u32", "console": "/SkipFilesWithoutBuildConfig=0 /VertexIndexFormat=u32", "mobile": "/SkipFilesWithoutBuildConfig=0 /VertexIndexFormat=u16", "version": 3, "server": "skip" }, "RC png-entityicon": { "pattern": "(.*EntityIcons\\\\/).*\\\\.png", "productAssetType": "{3436C30E-E2C5-4C3B-A7B9-66C94A28701B}", "params": "skip", "tools": "copy" }, "RC usm": { "glob": "*.usm", "params": "copy", "server": "skip" }, "RC animevents": { "glob": "*.animevents", "params": "copy", "productAssetType": "{C1D209C1-F81A-4586-A34E-1615995F9F3F}", "version": 2 }, "RC adb": { "glob": "*.adb", "params": "copy", "productAssetType": "{50908273-CA36-4668-9828-15DD5092F973}" }, "RC bspace": { "glob": "*.bspace", "params": "copy" }, "RC cdf": { "glob": "*.cdf", "params": "copy", "productAssetType": "{DF036C63-9AE6-4AC3-A6AC-8A1D76126C01}" }, // note - this used to be skinnedMeshAsset but its now Character Definition File specific. // .skin has its own type. "RC chrparams": { "glob": "*.chrparams", "params": "copy", "productAssetType": "{4BBB785A-6824-4803-A607-F9323E7BEEF1}", "version": 2 }, "RC comb": { "glob": "*.comb", "params": "copy" }, "RC dlg": { "glob": "*.dlg", "params": "copy" }, "RC csv": { "glob": "*.csv", "params": "copy" }, "RC json": { "glob": "*.json", "params": "copy" }, "RC lmg": { "glob": "*.lmg", "params": "copy" }, "RC smtl": { "glob": "*.smtl", "params": "copy" }, "RC sub": { "glob": "*.sub", "params": "copy", "productAssetType": "{71F9D30E-13F7-40D6-A3C9-E5358004B31F}", "version": 2 }, "RC sbsar": { "glob": "*.sbsar", "params": "copy" }, "RC loc.agsxml": { "glob": "*.loc.agsxml", "params": "copy", "version": 1 }, "RC node": { "glob": "*.node", "params": "copy" }, "RC veg": { "glob": "*.veg", "params": "copy" }, "RC dat": { "glob": "*.dat", "params": "copy" }, "RC lut": { "glob": "*.lut", "params": "copy" }, "RC txt": { "pattern": "^(?!.*PreloadLibs.txt).*\\\\.txt", "params": "copy" }, "RC cal": { "glob": "*.cal", "params": "copy" }, "RC grp": { "glob": "*.grp", "params": "copy", "productAssetType": "{7629EDD3-A361-49A2-B271-252127097D81}", "version": 2 }, "RC xls": { "glob": "*.xls", "params": "copy" }, "RC ini": { "glob": "*.ini", "params": "copy" }, "RC ttf": { "glob": "*.ttf", "params": "copy" }, "RC otf": { "glob": "*.otf", "params": "copy" }, "RC ext": { "glob": "*.ext", "params": "copy" }, // Copy all pak files except level.pak, level.pak has its own builder. "RC pak": { "pattern": "^((?!\\\\/level\\\\.pak).)*\\\\.pak$", "params": "copy" }, "RC ctc": { "glob": "*.ctc", "params": "copy" }, "RC uiprefab": { "glob": "*.uiprefab", "params": "copy", "server": "skip" }, "RC sprite": { "glob": "*.sprite", "params": "copy", "server": "skip" }, "RC bin": { "glob": "*.bin", "params": "copy" }, "RC inputbindings": { "glob": "*.inputbindings", "params": "copy", "productAssetType": "{25971C7A-26E2-4D08-A146-2EFCC1C36B0C}" }, "RC physmaterial": { "glob": "*.physmaterial", "params": "copy", "productAssetType": "{9E366D8C-33BB-4825-9A1F-FA3ADBE11D0F}" }, "RC ocm": { "glob": "*.ocm", "params": "copy" }, // Feature tests use the raw .tif files for the golden image comparison "RC goldenimages": { "pattern": ".*GoldenImages\\\\/.*\\\\.tif", "params": "copy", "server": "skip" }, // Copy over certificates for use with FileDataSource "RC CertificatePEM": { "glob": "*.pem", "params": "copy" }, // Copy over certificates for use with Dynamic Content "RC CertificateDER": { "glob": "*.der", "params": "copy" }, "RC PhysXMeshAsset": { "glob": "*.pxmesh", "params": "copy", "productAssetType": "{7A2871B9-5EAB-4DE0-A901-B0D2C6920DDB}" }, // Copy over cooked PhysX heightfield "RC PhysX HeightField": { "glob": "*.pxheightfield", "params": "copy", "productAssetType": "{B61189FE-B2D7-4AF1-8951-CB5C0F7834FC}" }, "RC filetag": { "glob": "*.filetag", "params": "copy", "productAssetType": "{F3BE5CAB-85B7-44B7-9495-863863F6B267}" }, // Precompiled shader srg "RC azsrg": { "glob": "*.azsrg", "params": "copy", "productAssetType": "{F8C9F4AE-3F6A-45AD-B4FB-0CA415FCC2E1}" }, // Precompiled shader variant "RC azshadervariant": { "glob": "*.azshadervariant", "params": "copy", "productAssetType": "{9F4D654B-4439-4C61-8DCD-F1C7C5560768}" } } } } }