; ---- 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. [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 [Platform xenia] tags=console,renderer,dx12 [Platform provo] tags=console,renderer [Platform salem] tags=console,renderer ; 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 ; 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 ;xenia=enabled ;provo=enabled ;salem=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= [Fingerprinting] ; Set to true to enable file hashing for identifying changes in files ; This can be slower depending on the number and size of the project files as well as hard disk speed ; When set to false, file modification time will be used instead. ; File mod times are faster but more likely to result in time spent processing files when their contents haven't actually changed UseFileHashing=true ; ---- 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] exportsettings= 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 engineroot.txt ; @GAMENAME@ - the name of the current game project, for example '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=@ROOT@/@GAMENAME@ display=@GAMENAME@ 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\\/.* [Exclude TempFiles] ; note that $ has meaning to regex, so we escape it. 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\\/.* ;------------------------------------------------------------------------------ ; 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} ; same as above [RC mp4] glob=*.mp4 params=copy productAssetType={DDFEE0B2-9E5A-412C-8C77-AB100E24C1DF} [RC mkv] glob=*.mkv params=copy productAssetType={DDFEE0B2-9E5A-412C-8C77-AB100E24C1DF} ; same as above [RC webm] glob=*.webm params=copy productAssetType={DDFEE0B2-9E5A-412C-8C77-AB100E24C1DF} ; same as above [RC mov] glob=*.mov params=copy productAssetType={DDFEE0B2-9E5A-412C-8C77-AB100E24C1DF} ; same as above [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 ; only tools-supporting platforms should copy this file. Everyone else can 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 [RC pak] ; Copy all pak files except level.pak, level.pak has its own builder. 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}