A downloadable Unreal Engine plugin for Windows

Buy Now$42.00 USD or more

Combine the best of both worlds when working on your 3D game!
The ease of BSP level construction with tried and tested tools can now be married to the power, speed and high performance of the Unreal Engine.

HammUEr is a Windows only plugin for Unreal Engine 4 and UE5 that lets you build your levels with any level editing tool that supports the formats designed for Valve's Hammer map editor (VMF), Doom3's DoomEdit (MAP/PROC) or an idTech2-3(Quake 1-3 and assorted other games that use the engine with varying levels of success and no guarantee of perfect imports)-based tool like GTKRadiant, JackHammer or Trenchbroom (MAP). With just a few simple clicks, you can have them imported into your Unreal Engine project as a collection of meshes placed in your scene the way you want, where you want. Want to change something? Make your edits in your favourite tool, then save, re-import, and you're done.

During the importing process you can assign materials already in your project to the original material names, or if you have the source images - (TGA/BMP/PNG/JPG)/VTF&VMT/SHADER(Q3)/MTR(D3)/WAD(Quake1 & Halflife)/WAL(Quake 2) - you can import them into UE as material instances based on a template material of your choice, and let HammUEr automatically find and assign the right ones. Don't want certain materials to show? Mark them no-draw and HammUEr will automatically not build sides for them!

Want to start building a level in Hammer with your UE materials for true WYSIWYG level editing? HammUEr can do that by exporting your UE material textures to VMT/VTF combos for easy use in Hammer with one click.

Have Source models you created for your maps? HammUEr can bring them into Unreal Engine for you and places them where they belong.

Use overlays and decals? HammUEr will also import those for you.

All my UE4 and UE5 plugins are in maintenance mode. That means I'll fix large bugs, and update to new engine versions when I have time, but don't expect any new features to be added.

Why "alpha"?

While most of the functionality is robust and well implemented, there's a few things that are still freshly implemented and, while they seem to work fine with my battery of sample maps, could use more testing (Q3 and Doom3 support in the latest builds).

(Screenshots from @skacky's func_mapjam_5 Quake map and Portal Stories: MEL map imports are only supplied as an example of what the tool can do with your own maps. The plugin is not meant to be used to import maps from other games or help infringe any copyrights.)

Where did the settings go?

With the 2.2 update, HammUEr's settings were moved away from the ConfigUEr tab to be more in line with the rest of Unreal Engine, and can now be found under Edit/Project Settings/Game/HammUEr.
Sorry for the confusion.

Third party libraries

From the Back To School updates for 4.26 and 4.27, HammUEr was switched from using homebrew VTF reading and writing code to using a version of VTFLib, updated to compile on more recent Visual Studio versions, which can be found here.

Terms of use

You are allowed to use HammUEr to import maps, textures and models you created, or have the rights or some kind of written permission for, as you need to acknowledge multiple times in the plugin itself.
You are not allowed to use HammUEr to infringe anyone else's copyrights by importing their maps, textures or models, and redistributing or selling the result, because that would be theft and illegal.
Remember, you're responsible for anything you do with HammUEr, and I'm in no way liable for any fallout that might occur as a result of your actions.
This means no fan "remakes" in UE4/UE5 of someone else's game, people.

You're also not allowed to resell or redistribute HammUEr or any part of the code (not in the Runtime section) or library to third parties. You are allowed to make modifications to your copy of the plugin source to integrate HammUEr into your own pipeline, though.

StatusIn development
Rated 4.8 out of 5 stars
(17 total ratings)
AuthorNT Entertainment
Made withUnreal Engine
Tags3D, hammer, plugin, quake, Unreal Engine


Buy Now$42.00 USD or more

In order to download this Unreal Engine plugin you must purchase it at or above the minimum price of $42 USD. You will get access to the following files:

HammUEr 1.8 alpha for 4.17 3 MB
HammUEr 1.8 alpha for 4.18 3 MB
HammUEr 1.8 for 4.19 fixed 3 MB
HammUEr 1.8 for 4.20 1 MB
HammUEr 1.8 for 4.21 2 MB
HammUEr 1.9 for 4.22 3 MB
HammUEr 1.9 for 4.23 Quake Fix 3 MB
HammUEr 2.0 for 4.24 April Tools 3 MB
HammUEr 2.1 for 4.24 Seven Eleven 3 MB
HammUEr 2.1 for 4.25 3 MB
HammUEr 2.1a for 4.25 Reload Fix 3 MB
HammUEr 2.1a for 4.25 Christmas 3 MB
HammUEr 2.1a for 4.26 Christmas 3 MB
HammUEr 2.2 for 4.26 Back To School 4 MB
HammUEr 2.2 for 4.27 Back To School 4 MB
HammUEr 2.3 for 5.0 Take Five 4 MB
HammUEr 2.3 for 5.0.2 Take Five 4 MB
HammUEr 2.4 for 5.1 Flu Season 4 MB
HammUEr 2.5 for 5.2 Summer 4 MB
sample materials 192 kB

Download demo

HammUEr manual 1 MB
HammUEr quick-start guide 1 MB


Log in with itch.io to leave a comment.

Viewing most recent comments 1 to 40 of 125 · Next page · Last page

I really love HammUEr so far <3
Is there any potential to batch export the maps?
What I am doing is essentially updating all the maps in trenchbroom with my changes and then i will go into my trenchbroom folder and select each map, they already have texture settings complete, then click GO to reimport the brushes. Would be useful to do this for all maps in the folder.

I'm trying to import some of my Quake .maps, but the plugin just keeps crashing. Anything more complex than a few brushes makes it crash.

I even took one of my maps and got rid of all the func_details that were off grid, but I can't get it to properly import it. I'm at a loss here.

This is the error I keep getting, based on the logs. I tried switching from Dx12 to Dx11 just in case but it didn't help.


Unhandled Exception: 0xe06d7363

KERNELBASE!UnknownFunction []

VCRUNTIME140!UnknownFunction []

msvcp140!UnknownFunction []

UnrealEditor_HammUEr!UnknownFunction [] (x4)

UnrealEditor_Slate!UnknownFunction [] (x7)

UnrealEditor_ApplicationCore!UnknownFunction [] (x4)

user32!UnknownFunction [] (x2)

InkObj!UnknownFunction []

atlthunk!UnknownFunction []


Any help would be appreciated.


I've had a similar problem it turned out that it was completely unrelated to the complexity of the brush but rather it was related to the texture information. Try resetting all the texture information on the map and try again. that's what fixed it for me once.


As someone else said double check texture info.

I also noticed i ran into crashes when there were far too many objects that are also having their textures replaced on import. What i did was in my editor I group all objects in the map and then import. This of course means its only going to be one object so you have to make more changes from the editor but i found most of my crashes came from not having them grouped enough. Try experimenting with grouping things you know you won't need to tweak as much.

(3 edits)

Please pastebin or something a map (or at least a couple of brushes of one) that has this crash so I can try to fix this now that I'm finally out of the hospital

Hi! I hope you are feeling better lately :)

Currently when i import this map "LavaFalls.map" from Trenchbroom it will crash about 70% progress through the importing of the meshes.
I also tried grouping all the meshes from the map into 1 group and importing that way which has resolved problems for me with other trenchbroom maps but didn't seem to help here.

I get the following crash from the engine:

Unhandled Exception: EXCEPTION_ACCESS_VIOLATION 0x00000000ffffffff











UnrealEditor_HammUEr_0001!MapFileLoader::ImportBrush() [Z:\_UnrealEngine\RocketCascade\Plugins\HammUEr\Source\HammUEr\Private\MapFileLoader.cpp:2519]

UnrealEditor_HammUEr_0001!MapFileLoader::ImportIntoWorld() [Z:\_UnrealEngine\RocketCascade\Plugins\HammUEr\Source\HammUEr\Private\MapFileLoader.cpp:2696]

UnrealEditor_HammUEr_0001!SHammerDialogWidget::RunConvert() [Z:\_UnrealEngine\RocketCascade\Plugins\HammUEr\Source\HammUEr\Private\SHammerDialogWidget.cpp:1206]

UnrealEditor_HammUEr_0001!TBaseSPMethodDelegateInstance<0,SHammerDialogWidget,1,FReply __cdecl(void),FDefaultDelegateUserPolicy>::Execute() [T:\UE_5.2\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h:275]




























I wanted to post an update of something i actually found resolved this crash i posted above. I have imported this LavaFalls.map file many times and it has generated the mesh and uses the auto replace existing mesh in the HammUER settings.

It started crashing on me over time of updating the map meshes would make the import process crash. Once i hit open map in the hammUER window i click the X to reset the meshes directory and let it generate the meshes again in this new directory and now the map is no longer crashing. (no changes made to the source map file)
Hoping this helps figure out what the problem is. Feel free to DM me on discord if you need any more info

i wrote this 4 months ago, but i would really love a community, a discord or someplace where I can ask a couple of question and troubleshoot some issues I am having, lots of love <3

I'm having trouble getting the texture export from UE4.27 to Hammer to work. All the materials just end up showing up as the missing texture chessboard in Hammer.

Strange, I just tried it again with the L4D2 version of Hammer.

I export from HammUEr to my SteamLibrary\steamapps\common\Left 4 Dead 2\left4dead2\materials directory, which creates a HammUEr directory under it. 
Then when I start the L4D2 tools and Hammer, It Just Works.
I can filter by hammuer in the browser, and the textures match their Unreal Engine originals.

Is there a mismatch between the directory you put them in and what the .vmt files reference? Because those include the HammUEr\ prefix, so if you changed the directory name, you might need to edit the .vmt files as well.

Thanks for the reply, but it turned out the problem was my fault. I didn't realise the materials I was trying to export used textures that didn't comply with Source's resolution requirements (they weren't powers of 2). I just had to resize the textures and now everything works fine. On a side note, the manual states that thumbnails in Hammer's texture browser don't work, but they actually do work just fine. The only issue I've noticed so far while working with the tool is that textures on really thin faces (2 units wide or so) get a little broken when imported to UE - part of the texture seems to disappear, leaving a small "gap" near the edge of the face.

Does it permits to import ragdolls as Skeletal Meshes ?

HammUEr will never support skeletal meshes by design, sorry.
Anything skinned/animated gets imported as a static mesh to allow you to use it to get your measurements right, but that's as far as it will ever go.

Any plans for Source 2 support?

No, sorry.

(1 edit)

5.1.1 extra pretty please with an extra cherry on top <3 <3


The 5.1 build should Just Work for 5.1.1 as well.
(or at least, did in testing)

didn't realize it, thanks. 

i also thank you for replying, unlike other devs (valve)


Is there a discord group for this plugin where I can ask a couple of questions? Lots of love

5.1 pretty please with a cherry on top <3


Should now be up.

Sorry it's so late, I've been quite ill.

Ahh sorry to hear, hope you're feeling better!

Возможно ли купить в России?

I'm sorry, I'm constrained by what the itch (and gumroad) payment processor(s) accept.

(1 edit)

Would really like to see Mac compat! Love the tool.

Unfortunately, I don't have a mac.
I also don't really have the time to support two different platforms with different requirements (and I'm pretty sure there's no mac version of vtflib, so that'd be another complication...)

I'm going to have to shelve this under "probably never happening, sorry."

I understand. Thank you for taking the time to respond anyway!

Thanks for the awesome tool!

Feature request: Do you think it would be feasible to add an option to disable texture filtering when importing textures? E.g. when importing from Quake 1 .wads it seems to default to using the "Default (from Texture Group)" Filtering setting on the UE5 texture. If I want to maintain the pixelated Quake1 look I need to go into each texture and set it to Nearest Neighbor. Not that big a deal but it would be nice if this could be set at import time.

Hm, that should be doable.
No promises for when it'll be added (and probably only to whatever the next UE version is)

This is now in for the 5.2 version, and can be found in the Project Settings/HammUEr/Texture & Material Importing section under "Default texture filter"

ive been trying to use it to import 2fort but the textures are missing, i genuinely have no idea what to do, ive looked everywhere trying to find any information on it but ive had no luck

You need to import any textures and materials you need separately first, from the TextUEr tab.
(and then restart UE for them to actually show up in the content browser, so they can be found and be linked up correctly when you try to import the VMF)

I'm getting a error when trying to import a vmf which crashes UE5.













UnrealEditor_Slate!SButton::ExecuteOnClick() [D:\build\++UE5\Sync\Engine\Source\Runtime\Slate\Private\Widgets\Input\SButton.cpp:464]

UnrealEditor_Slate!SButton::OnMouseButtonUp() [D:\build\++UE5\Sync\Engine\Source\Runtime\Slate\Private\Widgets\Input\SButton.cpp:389]

UnrealEditor_Slate!<lambda_51e270ca99ea7ce852539efd04dd453f>::operator()() [D:\build\++UE5\Sync\Engine\Source\Runtime\Slate\Private\Framework\Application\SlateApplication.cpp:4959]

UnrealEditor_Slate!FEventRouter::Route<FReply,FEventRouter::FToLeafmostPolicy,FPointerEvent,<lambda_51e270ca99ea7ce852539efd04dd453f> >() [D:\build\++UE5\Sync\Engine\Source\Runtime\Slate\Private\Framework\Application\SlateApplication.cpp:405]

UnrealEditor_Slate!FSlateApplication::RoutePointerUpEvent() [D:\build\++UE5\Sync\Engine\Source\Runtime\Slate\Private\Framework\Application\SlateApplication.cpp:4945]

UnrealEditor_Slate!FSlateApplication::ProcessMouseButtonUpEvent() [D:\build\++UE5\Sync\Engine\Source\Runtime\Slate\Private\Framework\Application\SlateApplication.cpp:5493]

UnrealEditor_Slate!FSlateApplication::OnMouseUp() [D:\build\++UE5\Sync\Engine\Source\Runtime\Slate\Private\Framework\Application\SlateApplication.cpp:5458]

UnrealEditor_ApplicationCore!FWindowsApplication::ProcessDeferredMessage() [D:\build\++UE5\Sync\Engine\Source\Runtime\ApplicationCore\Private\Windows\WindowsApplication.cpp:2210]

UnrealEditor_ApplicationCore!FWindowsApplication::DeferMessage() [D:\build\++UE5\Sync\Engine\Source\Runtime\ApplicationCore\Private\Windows\WindowsApplication.cpp:2699]

UnrealEditor_ApplicationCore!FWindowsApplication::ProcessMessage() [D:\build\++UE5\Sync\Engine\Source\Runtime\ApplicationCore\Private\Windows\WindowsApplication.cpp:1078]

UnrealEditor_ApplicationCore!FWindowsApplication::AppWndProc() [D:\build\++UE5\Sync\Engine\Source\Runtime\ApplicationCore\Private\Windows\WindowsApplication.cpp:916]



UnrealEditor_ApplicationCore!FWindowsPlatformApplicationMisc::PumpMessages() [D:\build\++UE5\Sync\Engine\Source\Runtime\ApplicationCore\Private\Windows\WindowsPlatformApplicationMisc.cpp:138]

UnrealEditor!FEngineLoop::Tick() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp:5139]

UnrealEditor!GuardedMain() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Launch.cpp:183]

UnrealEditor!GuardedMainWrapper() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:147]

UnrealEditor!LaunchWindowsStartup() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:283]

UnrealEditor!WinMain() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:330]

UnrealEditor!__scrt_common_main_seh() [d:\a01\_work\6\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]


(1 edit)

This callstack unfortunately doesn't help a lot.
It just says "something went wrong in HammUEr code", which basically tells me nothing...

If you still have this problem, feel free to drop me the offending VMF if you want, so I can add it to my testing group?

Same here, except I'm trying to import a Quake .map.

I'm on UE5.1.1

HammUEr 2.2 lacks any general settings for some reason and only shows session specific settings, any fix?


I'm having the same issue, did you find a workaround?

(1 edit) (+1)

Hi, general settings were moved to the actual Unreal Engine project settings menu, under Edit/Project Settings/Game/HammUEr.
Sorry for the confusion.


Thank you!

Could one make this plugin work at runtime in C++? Without the import window obviously. And does this come with the C++ source code? Thanks.

I'm afraid the code (and general workflow) isn't fast and performant enough to work runtime.
HammUEr comes with the source code for the Unreal Engine facing part, I'm afraid the actual conversion code isn't supplied because it uses some proprietary code I can't distribute.


Hi, does HammUEr supports the secondary UV channel, used with decal textures? 

If not, can it be implemented please?

As far as I've been able to ascertain and been told, the secondary UV channel for decals was a CS:GO hack specifically for one single map (nuke), that's... not really relevant for how decals work in UE? 


Hi, the UE5 version asks to be recompiled on UE 5.0.1 when I enable the plugin in my project, and trying to recompile it with UnrealBuildTool leads to errors during the process (whether with VS2019 or 2022 installed, it outputs errors like C2664 or C2678 in several files).

(1 edit) (+1)

Strange, that shouldn't happen, since those are "this code is wrong and can't compile" errors, and it... compiles fine.
Anyway, I've uploaded a precompiled 5.0.2 version, which should hopefully solve your problem.


Ue5 version doesnt seem to be working, says it requires HammUEr and HammUEr runtime

My bad, there's a silent dependency on a .modules file that I didn't notice _doesn't_ automatically get created when you do a standalone build outside of the editor in UE5 (but it _did_ in UE4...), and if that's missing, unreal engine complains.
Should be fixed now in the 5.0.2 version I just uploaded.

Question, can this tool convert maps in reverse (UE4 to hammer?)

(1 edit)

Sorry, no.
You *can* convert your materials from UE to Source to some extent to help with visualization, 
but that's it.

Hi, does HammUEr support American McGee's Alice BSP files? Or can I pay for you to add support?

Alice uses the same engine (Quake3 + Ritual's UberTools) as Heavy Metal F.A.K.K 2. Alice uses a FAKK42 BSP signature and F.A.K.K 2 uses FAKK12.

The following link may help also:


Thanks, Anna

HammUEr explicitly doesn't read compiled BSP files, only source files for maps, sorry.

(1 edit) (+1)

This is such an amazing product!! Thank you so much!! Any plans to bring to UE5??

Would love to use this with Source 2. Does it work with the new version of Hammer? If not, are there plans to support Source 2? New Hammer is a dream for level design.

Unfortunately, Source 2 support will never be added.



I was just wondering if you plan on supporting UE5?


Yes, eventually, when there's a "proper" one and no longer release candidates.


Thanks for the quick reply, much appreciated.

HammUEr 2.2 for 4.27 always crashes (100% from ~10 times) Unreal when importing models. What is the issue?

Not... sure?
I'm going to need more information that "it always crashes when importing models". What models? Are there any error messages?

I am trying to import CS:GO models.
The current error is: Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x000002510ad096cc

In YouTube comments I was suggested to split up models to different folders and try importing them separately. As it was claimed that it might be running-out-of ram issue. Though I have 128gb of ram. So far it worked, I still got the error in the last batch of 200mb models. I will split them up and see if it imports. If not, maybe there is a single or few files that causes this crash.


So I found one problematic model that will crash Unreal engine (HammUEr 2.2 for 4.27 ). The model is "animset_uiplayer_poses". It is in CS:GO models, the rest imports ok.

Yeah, there's no animation support in HammUEr, and I'm guessing this one has no mesh information at all.


Just going to reiterate this problem. in 4.27 Im using the back to school 2.2 version for 4.27, the ConfigUEr tab only shows "session specific settings" Any ideas how to fix this?


Just want to mention Ive used HammUEr for older versions of unreal with no problem. This is the first time I have had this issue with a version of HammUEr


Sorry, most of the settings were moved to an actual unreal settings page, so you can find everything in the actual project settings now


oh wow! thank you so much! This is great! Super helpful :D

(1 edit) (+1)

Project Settings/Game/HammEur

(1 edit)

I watched the quick-start video and wow this thing is amazing! My only question is - my scale is off but for some reason the general settings under the ConfigUEr tab do not show up. Only the session specific settings do. Any way to fix that?

(1 edit)

I second this issue, I also have it.... Anyone know how to fix this?

Sorry, most of the settings were moved to an actual unreal settings page in the most recent version, so you can find everything in the actual project settings now

Project Settings/Game/HammEur

Hi, how can i build hammuer for my custom ue4 build since my VS throws me an error: "HammUErRuntimeClasses.h(113) : LogCompile: Error: An explicit Category specifier is required for any property exposed to the editor or Blueprints in an Engine module."

Not... sure? 
I mean, it compiles locally with launcher UE4, and has since the very first version, so...
That line number doesn't seem to match with latest source, and you didn't specify *which* UE4 you're trying to build for, so I have no idea where the problem could be...

Anyway, find any public class property that's a UPROPERTY but doesn't have a Category = "<something>" bit in it like all the others, and add one I guess, see what happens?

Thank you for your response, for some reason unrealbuildtool didnt throw this error, so i just recompiled with #pragma warning(disable : 4834) in HammUErPrivatePCH.h since it was treating 'nodiscard' warning as error and i was done.

Woah!!! Great program! Such a relief....almost....

I do have a small problem, oh great software wizard. :)  the map looks pretty intact in trenchbroom, but upon importing certain complex geometries, I have massive polygonal holes and stretching in my models.

Is there any way around this? Thank you very much. 


I've updated the default algorithm in the new Back to School update for 4.26 and 4.27, which should hopefully take care of this problem for you.

Why do I lose some models when I import maps and models into the dus2 map in csgo, not only this map, but also some of the maps of inferno.

I'm... unsure.
I know that Valve models sometimes have different names inside of them than the one the map expect, so you might have to look for the closest matching one and copy/rename it?

Does Hammuer not support WorldGGX? https://developer.valvesoftware.com/wiki/WorldGGX

Been trying to import DOI maps. And running into issues with Hammuer not creating materials for DOI VMT blend files which don't have their own VTF file. However, I never had any problems with insurgency. 

However that from what I can tell, insurgency mainly uses WorldVertexTransition which works great for Hammuer. So I'm guessing that there is some kind of issue with Hammuer not creating materials for these VMT files which have 'WorldGGX' and no accompanying VTF file.

Is this something that could possibly be solved in the future? As right now I guess my only option is to go through all VMT files with WorldGGX and no accompanying VTF and switch them to WorldVertexTransition and hope that Hammuer creates a mat for those then?

Not... explicitly no, sorry.
Could maybe look into this for the next version.

I may not get an answer to this but could it be possible if this was available on Unreal Engine 5 in the future.

Import the map in UE4 and migrate the project to UE5.

I will be releasing an UE5 version down the line.
I've got a preliminary port working, but I'm going to take this opportunity to rewrite some things, and the current EA build is... not very plugin creation friendly.

I've tried importing the map in different ways already dozens of times. I don't understand why this is happening

Why does the plugin use all 16GB of my memory when I import models. It didn't do this before.

I don't think I changed anything in how the model importing code works recently...
You have any more information for me?

Working with this on 4.26 I am also having extreme memory usage issues when importing materials to the point that unreal crashes as it runs out of memory (64GB+ of RAM & 100GB+ Pagefile Size) when doing imports - typically at the "creating materials" stage. Running the same import on previous versions does not seem to cause this issue, possible memory leak?

I'll do some investigating while I do my rewrites for UE5, and release the same changes in an UE4.26 version

Hopefully the switch to VTFLib fixes this.

Will this support UE5 when it comes out?


Hi!! this software is awesome, I'm starting working with it.. I'm having problems,  my UVs sometimes are bad applied within unreal, can you get me some clue to fix it?

I'm using trenchbroom in quake mode to make maps.

(1 edit)

This should hopefully be fixed with today's Christmas Fixes, if it's the same problem as REVEL303 had downpage.

when importing materials this thing always appears. does anyone know how can i solve it?

Sorry, that's one I've never seen before.
I'm guessing one of your textures is broken, or not supported.
Try checking the log to see where it fails, or try breaking up your texture directory in a couple different ones, and then import them one by one to try and narrow the problem that way.

Viewing most recent comments 1 to 40 of 125 · Next page · Last page