Last active
July 15, 2025 23:28
-
-
Save jase-perf/3f6328fb66427802090f458775e481df to your computer and use it in GitHub Desktop.
Game Engine Typemap (WIP) Engine-agnostic typemap that will work with UE, Unity, Godot, etc.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Perforce File Type Mapping Specifications. | |
# | |
# TypeMap: a list of filetype mappings; one per line. | |
# Each line has two elements: | |
# | |
# Filetype: The filetype to use on 'p4 add'. | |
# | |
# Path: File pattern which will use this filetype. | |
# | |
# See 'p4 help typemap' for more information. | |
TypeMap: | |
# Text files. These lines are probably unnecessary as P4 will auto-detect the type. | |
text //....asmdef | |
text //....asmref | |
text //....cginc | |
text //....cm | |
text //....compute | |
text //....cs | |
text //....csv | |
text //....editorconfig | |
text //....gitignore | |
text //....hlsl | |
text //....js | |
text //....json | |
text //....md | |
text //....package | |
text //....proc | |
text //....proc | |
text //....rsp | |
text //....shader | |
text //....template | |
text //....txt | |
text //....uss | |
text //....xml | |
text //....yaml | |
# Text files that should be locked. (These are Unity3D files) | |
text+l //....md5anim | |
text+l //....md5mesh | |
text+l //....meta | |
# Text files that should remain writable (often automatically updated) | |
# Be EXTRA SURE to reconcile offline work to make sure they are submitted properly. | |
text+w //....config | |
text+w //....DotSettings | |
text+w //....ini | |
text+w //....log | |
text+w //....modules | |
text+w //....pdm | |
text+w //....target | |
text+w //....uatbuildrecord | |
text+w //....uproject | |
text+w //....version | |
# Binary files to lock and to store uncompressed (because they are likely already compressed) | |
binary+Fl //....avi | |
binary+Fl //....bz2 | |
binary+Fl //....gif | |
binary+Fl //....gz | |
binary+Fl //....jar | |
binary+Fl //....jpeg | |
binary+Fl //....jpg | |
binary+Fl //....mov | |
binary+Fl //....mpg | |
binary+Fl //....rar | |
binary+Fl //....tif | |
binary+Fl //....tiff | |
binary+Fl //....zip | |
# Most binary files should be locked to avoid merge conflicts. | |
# Feel free to add more file endings as needed. | |
# Also, if you want to take advantage of Delta Transfer in P4 | |
# you could add +F to all binaries to get faster sync/submit | |
# at the cost of using more storage space on the server. | |
binary+l //....a | |
binary+l //....aac | |
binary+l //....aar | |
binary+l //....aas | |
binary+l //....ae | |
binary+l //....ai | |
binary+l //....aiff | |
binary+l //....anim | |
binary+l //....apk | |
binary+l //....asset | |
binary+l //....bik | |
binary+l //....bin | |
binary+l //....blend | |
binary+l //....bmp | |
binary+l //....bnk | |
binary+l //....btr | |
binary+l //....celtx | |
binary+l //....cfm | |
binary+l //....class | |
binary+l //....clip | |
binary+l //....controller | |
binary+l //....cubemap | |
binary+l //....dae | |
binary+l //....data | |
binary+l //....dds | |
binary+l //....demo | |
binary+l //....doc | |
binary+l //....docx | |
binary+l //....dot | |
binary+l //....ear | |
binary+l //....fbx | |
binary+l //....flac | |
binary+l //....fnt | |
binary+l //....ibl | |
binary+l //....ico | |
binary+l //....ip | |
binary+l //....light | |
binary+l //....lighting | |
binary+l //....lwo | |
binary+l //....m4a | |
binary+l //....ma | |
binary+l //....mask | |
binary+l //....mat | |
binary+l //....mb | |
binary+l //....mp3 | |
binary+l //....mp4 | |
binary+l //....navmesh | |
binary+l //....obj | |
binary+l //....odg | |
binary+l //....odp | |
binary+l //....ods | |
binary+l //....odt | |
binary+l //....ogg | |
binary+l //....otf | |
binary+l //....otg | |
binary+l //....ots | |
binary+l //....ott | |
binary+l //....overrideController | |
binary+l //....pac | |
binary+l //....pdf | |
binary+l //....physicMaterial | |
binary+l //....png | |
binary+l //....ppt | |
binary+l //....pptx | |
binary+l //....prefab | |
binary+l //....prefab.unity | |
binary+l //....psb | |
binary+l //....psd | |
binary+l //....raw | |
binary+l //....renderTexture | |
binary+l //....res | |
binary+l //....response | |
binary+l //....roq | |
binary+l //....rpt | |
binary+l //....shadow | |
binary+l //....skp | |
binary+l //....so | |
binary+l //....sxw | |
binary+l //....tar | |
binary+l //....terrain | |
binary+l //....tga | |
binary+l //....tres | |
binary+l //....ttf | |
binary+l //....u | |
binary+l //....uasset | |
binary+l //....udk | |
binary+l //....umap | |
binary+l //....unity | |
binary+l //....unitypackage | |
binary+l //....upk | |
binary+l //....war | |
binary+l //....wav | |
binary+l //....webm | |
binary+l //....wma | |
binary+l //....wmv | |
binary+l //....xls | |
binary+l //....xlsx | |
# Binary files that should stay writable because they will be updated automatically, | |
# such as when building without requiring checkout first. | |
# Be EXTRA SURE to reconcile offline work to make sure they are submitted properly. | |
binary+w //....app | |
binary+w //....dll | |
binary+w //....dylib | |
binary+w //....exe | |
binary+w //....exp | |
binary+w //....ipa | |
binary+w //....lib | |
binary+w //....pdb | |
binary+w //....rc | |
binary+w //....stub | |
binary+w //....ubulk | |
binary+w //....uexp | |
# The Sn flag means the server will only keep the latest n versions of the file. | |
# This is useful for large files that we want to store but can be regenerated if needed. | |
binary+wS2 //..._BuildData.uasset |
Thanks. I've also added .flac in my version.
Since information is limited, I am sharing my typemap with a more specific focus on Unity Engine that could complement this list:
Thanks for that @CitizenZultron ! I finally took the time to incorporate your changes and update the typemap. I made a few changes like removing +S from a couple file types, since I try to avoid recommending that without caveats since it could result in someone losing a version they needed and that can't be regenerated from the other files. Let me know if you think that was incorrect, though!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@michaelwbell
I just checked my gist for p4ignore here https://gist.github.com/jase-perf/b15b57d72fa8095c732fdbc4ca948903
which is based on Epic's recommendations and there is this line:
So it does seem like at least those ones should be ignored. I wonder if all of them should, though.