Skip to content

Instantly share code, notes, and snippets.

@jase-perf
Last active October 21, 2025 20:21
Show Gist options
  • Save jase-perf/3f6328fb66427802090f458775e481df to your computer and use it in GitHub Desktop.
Save jase-perf/3f6328fb66427802090f458775e481df to your computer and use it in GitHub Desktop.
Engine-agnostic P4 typemap that will work with UE, Unity, Godot, etc.
# 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+l //....md5anim ## Unity3D files that should be locked
text+l //....md5mesh ## Unity3D files that should be locked
text+l //....meta ## Unity3D files that should be locked
text+w //....config ## Auto-updated files - reconcile offline work carefully
text+w //....deps.json ## Auto-updated files - reconcile offline work carefully
text+w //....DotSettings ## Auto-updated files - reconcile offline work carefully
text+w //....ini ## Auto-updated files - reconcile offline work carefully
text+w //....json ## Auto-updated files - reconcile offline work carefully
text+w //....log ## Auto-updated files - reconcile offline work carefully
text+w //....modules ## Auto-updated files - reconcile offline work carefully
text+w //....pdm ## Auto-updated files - reconcile offline work carefully
text+w //....runtimeconfig.json ## Auto-updated files - reconcile offline work carefully
text+w //....target ## Auto-updated files - reconcile offline work carefully
text+w //....uatbuildrecord ## Auto-updated files - reconcile offline work carefully
text+w //....uproject ## Auto-updated files - reconcile offline work carefully
text+w //....version ## Auto-updated files - reconcile offline work carefully
text+w //....xml ## Auto-updated files - reconcile offline work carefully
binary+Fl //....avi ## Already compressed - store uncompressed and lock
binary+Fl //....bz2 ## Already compressed - store uncompressed and lock
binary+Fl //....gif ## Already compressed - store uncompressed and lock
binary+Fl //....gz ## Already compressed - store uncompressed and lock
binary+Fl //....jar ## Already compressed - store uncompressed and lock
binary+Fl //....jpeg ## Already compressed - store uncompressed and lock
binary+Fl //....jpg ## Already compressed - store uncompressed and lock
binary+Fl //....mov ## Already compressed - store uncompressed and lock
binary+Fl //....mpg ## Already compressed - store uncompressed and lock
binary+Fl //....rar ## Already compressed - store uncompressed and lock
binary+Fl //....tif ## Already compressed - store uncompressed and lock
binary+Fl //....tiff ## Already compressed - store uncompressed and lock
binary+Fl //....zip ## Already compressed - store uncompressed and lock
binary+l //....a ## Standard binary - store compressed and lock
binary+l //....aac ## Standard binary - store compressed and lock
binary+l //....aar ## Standard binary - store compressed and lock
binary+l //....aas ## Standard binary - store compressed and lock
binary+l //....ae ## Standard binary - store compressed and lock
binary+l //....ai ## Standard binary - store compressed and lock
binary+l //....aiff ## Standard binary - store compressed and lock
binary+l //....anim ## Standard binary - store compressed and lock
binary+l //....apk ## Standard binary - store compressed and lock
binary+l //....asset ## Standard binary - store compressed and lock
binary+l //....bik ## Standard binary - store compressed and lock
binary+l //....bin ## Standard binary - store compressed and lock
binary+l //....blend ## Standard binary - store compressed and lock
binary+l //....bmp ## Standard binary - store compressed and lock
binary+l //....bnk ## Standard binary - store compressed and lock
binary+l //....btr ## Standard binary - store compressed and lock
binary+l //....celtx ## Standard binary - store compressed and lock
binary+l //....cfm ## Standard binary - store compressed and lock
binary+l //....class ## Standard binary - store compressed and lock
binary+l //....clip ## Standard binary - store compressed and lock
binary+l //....controller ## Standard binary - store compressed and lock
binary+l //....cubemap ## Standard binary - store compressed and lock
binary+l //....dae ## Standard binary - store compressed and lock
binary+l //....data ## Standard binary - store compressed and lock
binary+l //....dds ## Standard binary - store compressed and lock
binary+l //....demo ## Standard binary - store compressed and lock
binary+l //....doc ## Standard binary - store compressed and lock
binary+l //....docx ## Standard binary - store compressed and lock
binary+l //....dot ## Standard binary - store compressed and lock
binary+l //....ear ## Standard binary - store compressed and lock
binary+l //....fbx ## Standard binary - store compressed and lock
binary+l //....flac ## Standard binary - store compressed and lock
binary+l //....fnt ## Standard binary - store compressed and lock
binary+l //....ibl ## Standard binary - store compressed and lock
binary+l //....ico ## Standard binary - store compressed and lock
binary+l //....ip ## Standard binary - store compressed and lock
binary+l //....light ## Standard binary - store compressed and lock
binary+l //....lighting ## Standard binary - store compressed and lock
binary+l //....lwo ## Standard binary - store compressed and lock
binary+l //....m4a ## Standard binary - store compressed and lock
binary+l //....ma ## Standard binary - store compressed and lock
binary+l //....mask ## Standard binary - store compressed and lock
binary+l //....mat ## Standard binary - store compressed and lock
binary+l //....mb ## Standard binary - store compressed and lock
binary+l //....mp3 ## Standard binary - store compressed and lock
binary+l //....mp4 ## Standard binary - store compressed and lock
binary+l //....navmesh ## Standard binary - store compressed and lock
binary+l //....obj ## Standard binary - store compressed and lock
binary+l //....odg ## Standard binary - store compressed and lock
binary+l //....odp ## Standard binary - store compressed and lock
binary+l //....ods ## Standard binary - store compressed and lock
binary+l //....odt ## Standard binary - store compressed and lock
binary+l //....ogg ## Standard binary - store compressed and lock
binary+l //....otf ## Standard binary - store compressed and lock
binary+l //....otg ## Standard binary - store compressed and lock
binary+l //....ots ## Standard binary - store compressed and lock
binary+l //....ott ## Standard binary - store compressed and lock
binary+l //....overrideController ## Standard binary - store compressed and lock
binary+l //....pac ## Standard binary - store compressed and lock
binary+l //....pdf ## Standard binary - store compressed and lock
binary+l //....physicMaterial ## Standard binary - store compressed and lock
binary+l //....png ## Standard binary - store compressed and lock
binary+l //....ppt ## Standard binary - store compressed and lock
binary+l //....pptx ## Standard binary - store compressed and lock
binary+l //....prefab ## Standard binary - store compressed and lock
binary+l //....prefab.unity ## Standard binary - store compressed and lock
binary+l //....psb ## Standard binary - store compressed and lock
binary+l //....psd ## Standard binary - store compressed and lock
binary+l //....raw ## Standard binary - store compressed and lock
binary+l //....renderTexture ## Standard binary - store compressed and lock
binary+l //....res ## Standard binary - store compressed and lock
binary+l //....response ## Standard binary - store compressed and lock
binary+l //....roq ## Standard binary - store compressed and lock
binary+l //....rpt ## Standard binary - store compressed and lock
binary+l //....shadow ## Standard binary - store compressed and lock
binary+l //....skp ## Standard binary - store compressed and lock
binary+l //....so ## Standard binary - store compressed and lock
binary+l //....sxw ## Standard binary - store compressed and lock
binary+l //....tar ## Standard binary - store compressed and lock
binary+l //....terrain ## Standard binary - store compressed and lock
binary+l //....tga ## Standard binary - store compressed and lock
binary+l //....tres ## Standard binary - store compressed and lock
binary+l //....ttf ## Standard binary - store compressed and lock
binary+l //....u ## Standard binary - store compressed and lock
binary+l //....uasset ## Standard binary - store compressed and lock
binary+l //....udk ## Standard binary - store compressed and lock
binary+l //....umap ## Standard binary - store compressed and lock
binary+l //....unity ## Standard binary - store compressed and lock
binary+l //....unitypackage ## Standard binary - store compressed and lock
binary+l //....upk ## Standard binary - store compressed and lock
binary+l //....war ## Standard binary - store compressed and lock
binary+l //....wav ## Standard binary - store compressed and lock
binary+l //....webm ## Standard binary - store compressed and lock
binary+l //....wma ## Standard binary - store compressed and lock
binary+l //....wmv ## Standard binary - store compressed and lock
binary+l //....xls ## Standard binary - store compressed and lock
binary+l //....xlsx ## Standard binary - store compressed and lock
binary+w //....app ## Build output - stays writable, be sure to reconcile offline work
binary+w //....## Build output - stays writable, be sure to reconcile offline work
binary+w //....dylib ## Build output - stays writable, be sure to reconcile offline work
binary+w //....exe ## Build output - stays writable, be sure to reconcile offline work
binary+w //....exp ## Build output - stays writable, be sure to reconcile offline work
binary+w //....ipa ## Build output - stays writable, be sure to reconcile offline work
binary+w //....lib ## Build output - stays writable, be sure to reconcile offline work
binary+w //....pdb ## Build output - stays writable, be sure to reconcile offline work
binary+w //....rc ## Build output - stays writable, be sure to reconcile offline work
binary+w //....stub ## Build output - stays writable, be sure to reconcile offline work
binary+w //....ubulk ## Build output - stays writable, be sure to reconcile offline work
binary+w //....uexp ## Build output - stays writable, be sure to reconcile offline work
binary+wS2 //..._BuiltData.uasset ## Large regenerable files - keep 2 versions, be sure to reconcile offline work
@jase-perf
Copy link
Author

Thanks, @CitizenZultron ! I will look at incorporating this soon.
The P4 server will automatically detect if files are text or binary so I generally only use the typemap for files that I want to add special modifiers to, OR files that it incorrectly identifies (for example, a binary file with a long text-based header can sometimes incorrectly show up as text).
So unless you've found any of those text files to be interpreted incorrectly by the server, I'll probably leave those off.

The suggestion of adding .meta files as text+l makes sense! Definitely happy for the input on Unity files since I don't use Unity as often.

@michaelwbell
Copy link

Hello. This is a helpful typemap. I believe there's one error:
.exp files are set to be binary. I believe they need to be writeable in the workspace. At least in my case, trying to compile Unreal Engine 5.

I have a related question. Should the .exp and .lib files just be ignored in P4Ignore?

Cheers.

@jase-perf
Copy link
Author

@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:

**/Engine/Binaries/**/*.exp

So it does seem like at least those ones should be ignored. I wonder if all of them should, though.

@alpozcan
Copy link

Thanks. I've also added .flac in my version.

@jase-perf
Copy link
Author

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!

@ShadyKutz
Copy link

Hey @jase-perf it should be _BuiltData.uasset not _BuildData.uasset

@jase-perf
Copy link
Author

Hey @jase-perf it should be _BuiltData.uasset not _BuildData.uasset

So true!! Just updated. Thanks for catching that!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment