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 (currently Windows only) is a plugin that lets you build your levels with 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 Unreal Engine 4 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.)

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 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.

Updated 27 days ago
StatusIn development
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 3 MB
HammUEr 1.8 for 4.20 for source builds 2 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 70 · Next page · Last page

Cant i just get any  valve game for free and get this for FREE


Any plans for 4.23 support? :)

Hi, i've downloaded the pack and imported everything, i've been running into an issue where there's a small amount of assets missing.

These are assets related to crates, fences and other small items that should be spread in other packs. In your introduction video you're also missing these. 

Which Valve pack should i download to resolve this issue?

Hi there. I was just wondering if you could tell me or link me to your Terms of Use. I am basically wondering about Copyright if HammUEr was to be used to port a full source engine game to Unreal Engine and either sell for money or be free (on Steam). Thank you.

Deleted post

If it's your own game and assets, that's down to whatever engine licensing deal you have going on.
If it's not your own game and assets, then... no? Absolutely not? Because that's illegal and this shouldn't even be a question.

HammUEr is a tool to help people that are more comfortable working with old BSP-based level editors still use those in UE4 with its mesh-based workflow, that's it.

More explicit version of the terms of use now prominently on the page.

Appreciate the reply. Thank you for clearing things up and adding it to the main page.

(1 edit)

Hello,how to fix this crash ? its ue4 4.16 hammuer https://i.gyazo.com/b776bc2a53572cccb7594f2d69418326.png https://answers.unrealengine.com/questions/897990/view.html

Unfortunately, besides the fact that I'm not really supporting the 4.16 version any longer since it's over 2 years old, there's not much information in those images, so I can't really help.
Do you have an actual log?

(4 edits)


I just have a little problem, how can you get the same blendtexture on unreal engine that I have on hammer ? ( for the ground ) My blend texture are just displaying little tiles and are not blended at all.

Is this plugin compatible with blend textures ?

Basic two texture blend materials for displacements should be supported

(1 edit) (+2)

Memory leaks found in source.


empty() call to std::vector is used, which checks if the vector is empty (returns bool), but your usages discard the value. You most likely meant to use clear(), which erases all elements of the vector.

Good catch.
That's what happens when you try to marry two systems that use the same term for opposite things.
Fixed in the 4.22 build.

Is there any way to increase the file name size/length for importing assets? A lot of the assets I import have half of their names cut out, which causes a lot of preventable issues with maps.

For example, when I try to import models with the names "stone_pillar_86_new", "stone_pillar_94", "stone_pillar_7", and "stone_pillar_73", their names get cut down to something like "stone_pilla". Whenever this happens, each model overrides eachother and only one of the models actually import.

By default, it imports models with the name field stored in the actual model file, but there's a checkbox on the PropUEr tab that imports models with the actual filename as well.

Hello, dude I wanted to know how to download my plugin I no longer have access to my email. then I change my address for the next download or refund please on my card. 

I can give you the last four digits of my bank car

This is something you should contact itch.io support for.
There's nothing I can do to help you.

(1 edit)

some textures dont import. im trying to import hl2 maps plz halp. im using ue 4.21

Have you looked at the import logs?
Do you know which textures they are?
Is there something special about them?

Subject: Helping others with materials.

It is possible to emulate all (or close to all) graphical effects from the Source Engine in Unreal Engine. When I am done making materials that can be instanced I will share a photo of the setup if requested to.

So I'm having a problem while importing models, it gets to 25% and then it crashes. At 23% memory maxes out(32GBs) followed by my C drive maxing out at witch point it crashes.(I only have 23 Gbs left on my C drive) thing is UE is not installed on my C drive. My vault cache location is not on my C drive, My Project file is not on my C drive and i changed DerivedDataCache to off the C drive and it still overflows. Any Ideas?


Did a fresh install of windows so i had enough space, still crashes but this time at 45% and with no error message or crash report.

Can you try splitting the source directory up into a couple of smaller ones and importing those one by one?
That should at least help narrow down the problem somewhat, while also remove the need to reimport the same things over and over again.

what would we have to donate to get access to hammuer.lib source? There are some little things i'd like to change/fix/exhance, as well as actually be able to debug a crash that I'm getting when loading certain maps. 

(4 edits)

I think I may have figured out what the crash is though.

I believe in (vmfloader) info_overlay, you are parsing StartU/EndU and StartV/EndV as int, instead of float.

While it's more common for them to usually be 1 or 0, in the actual format they are float, and in some of our maps

[Edit] Yep, that is absolutely what it is.

    "StartV" "1"
    "targetname" "decal_spanish_brokenwall-3_StartVShouldBe.7Not1"

I also added a "hammuer" function to vmf_tweak (one of the source engine tools, that i don't think is publicly released other than in alien swarm maybe) which goes through everything that uses a model, and gives it a targetname, to make it easier on the import since without hammuer.lib source we cannot parse for anything.

As an aside, if it's unwilling for you sharing for example github access to it, would it be too much trouble for you to MOVE the "mapentity" stuff into the plugin itself, and out of the lib? ie: ask the plugin for the translation of all of the map classnames, for each of the loader.. instead of hardcoding the entity types into the lib.. (that is one of the things I would do if I had access lol)

Another thing that I would like to do, depending on how you load all the brush faces anyway, is to introduce part of the CSG process, so all intersecting brushfaces get chopped up to discard all of the parts of the solid that cannot be seen.. would save a lot of pre-processing time with going through a lot of old maps and clip + nodraw everywhere ;)

Especially large ones like this:

Note, that the grid here is a lot bigger than standard  (65k/65k) and this map fills up almost all of the normal source engine map size, horizontally anyway. lol. (we had/have a lot of large maps in TI, and our version of the engine/hammer increases a lot of limits..which is good for making stuff for unreal as well :))


My apologies, you're right about the info_overlay parsing, and the UVs should be correctly read passed through as floats in the 4.21 build.
Unfortunately, I can't release the source for the lib, and don't really have much time to do active development these days, so I don't see myself doing any major refactor work.
Would a basic thing for unknown entity types (or a separate array for all of them) that'd be a hashset or something that you can parse yourself on the UE plugin side work?


That's a little dissapointing, but understood. The entity thing is of much more concern for myself, and the simplest solution that I can see would be just adding an std::map<std::string, std::string> of every actual entity key to BaseEntity or something, even if you leave the default parsing that does the MapEntityType, then I can just intercept it in MapFileLoader::ImportIntoWorld, to read the original keyvalue for custom entities, and their values, by simply using GetEntity(x), and then looking at the KeyValue map for the original classname. (I noticed that all unknown ones end up falling under the static prop type as well, and the classname in BaseEntity appears to get overridden, I had actually tried to read that when I was first trying to parse custom entities, but ended up modifying VMFTweak to just convert everything to prop_static with a custom targetname ie: prop_dynamic_originaltargetname, or ropestart_xxx, ropekey_xxx) Which, works, and allows me to replace the actors post-import, but I'd prefer if I can just create the proper actors at import time, especially for some more complicated custom ones)

Thanks, and I really appreciate this!


Sorry it took a while, but every Entity class now has a GetOriginalData function that'll return a std::map of the data the plugin read from the VMF file.

There are many reasons that this should be updated for 4.21. This new version introduces better editing features such as editing meshes which should be of interest considering that this plugin imports brush groups as static meshes. This new feature allows the in-engine editing of which faces have what material so that if in Hammer you didn't do texturing because all of your materials are in UE you could then decide where materials go on polys in-engine. https://docs.unrealengine.com/en-us/Studio/Datasmith/HowTo/ModifyStaticMeshGeome...

    The old version of this game engine also has a hindering ui bug. On windows the ui does not show drop down menus unless high contrast settings are enabled, (causes white text on white background in hammer in some cases) https://answers.unrealengine.com/questions/591961/drop-down-menus-not-working-in...

I am considering workarounds for the lack of an update do to so many more things being available on the newer engine. Perhaps using the plugin to import materials then opening the project with a new version to make a compatible copy would work for materials. And the  perhaps exporting the scene as one fbx file, but I can only imagine the problems that would cause for lightmaps and optimization. It is a good idea to update the plugin because of everything your missing out on and using a newer version would be very difficult or just time consuming. (import map then copy to new engine "oops map has problem" back to step one)

When do you think that HammUEr will be updated for 4.21?

Yeah, can you please update it or tell us when it will be updated?

(2 edits)


     Does your plugin have a bias against importing materials that are not "Lightmapped Generic"? There seems to be a problem with the plugin that has costed me 71 days of my time and so it seems that I cannot find a fix for the problem without contacting you. Perhaps there is a known problem with the creation of materials that are of the type "cable" for example? 

     It seems that after trying around 5 different ways of importing materials and textures there is a strange issue that occurs such as lighting making my scene look like a child with a giant crayon was let loose and assumed the white lightmaps were a paper.  If you are in need of the engine version I was forced to downgrade from 4.17 to 4.12.5 in order to start the plugin which costed me a few days of work I had already done only for the plugin to not actually import the materials I had made in the more updated engine. 

     This is a peculiar problem and as of today on 11/22/2018 I have come to the realization that the plugin may not know what to do with something that is not "Lightmapped Generic" casuing it to not create a vmt for materials labeled "cable" for example. Regarding the lightmap issue I have simply restarted my work several time to try to get a fix but now there isn't a lightmap problem anymore because what the plugin has done is create static meshes for the level but not actually put them in the level though I had an idea about what this was caused by and nope the brushes are indeed grouped.

I have created this account for the very purpose of contacting NT Entertainment and therefore I am new to this website and/or its way of functioning.

(1 edit)

I have experimented to see if the bias is the case and it seems that after editing the vmt to say it is "LightmappedGeneric" it proceeds to import that material but none other. I want to know if you are aware of this bug involving that of discrimination from non "LightmappedGeneric" vmts.

EDIT: I have done this with all the vmts in the folder. Now the plugin creates a material for them. 

I have no idea what to tell you, except that I can't reproduce your problem at all.
I just ran a test with a cable materials directory (so just "SplineRope" and a "$basetexture" field), and those all imported fine without needing to change or edit anything in the VMTs, so I have no idea what was going on on your machine. Any unknown types should default to the LightmappedGeneric handler anyway...

Deleted post
Deleted post

anyone gota solution for UE crashing when trying to import materials with hammuer , all vtx and dx90 /dx80 are deleted

i also have 16gb of ddr4 so i dont think ram is a problem 

im trying to import csgo materials and it crashes at 0% rip

its been 21 days since i wrote this message and my problem is still not solved, this software cost me $42 usd and it doesn't even work

1) itch.io doesn't always send me emails when people post comments, so apologies for the late reply.
2) vtx files are model-related and have nothing to do with materials and textures
3) "it crashes" doesn't really help me debug your problem. Which version of UE are you trying to use? What does the log say before it crashes?

I'm having the same issue, but ram is the problem. I have 12gb of ram, and with nothing else open HammUEr maxes out and crashes before I can import materials or models.

(1 edit)

Hi! i'm doing some modding of  Lineage 2 for fun and very interested in your plugin, i need to extract bsp's  from l2 client, but L2 was made in ue2, could your plugin extract bsp from ue2 based game? If it's possible, i'll definitely buy it.

I'm afraid not.
HammUEr doesn't exist to import random levels from games, it was created to help level designers that prefer CSG brush editors over more recent model-based level creation workflows to get their work into Unreal Engine.

When I import my meshes non of them have textures wich means that when i import my map the map dosent have textures. It is something that I cant solve. No matter what. I even tried to re-import EVERYTHING again and still: Nothing.

I'm trying to import csgo maps on Unreal Engine 4.19.2

Deleted post

Which version of the 4.19 importer are you using? The fixed one?
Also, are you sure your material setup is correct?


This plugin rocks. It truly adds a new dimension to the ue4 editor.

I have a problem though. When I import one of my maps made in Trenchbroom, I get what appear to be overlapping vertices (z-fighting). Other maps from TB work fine. Can you recommend anything?


(1 edit)

When importing models, will it also import the animations associated with them? Or will I have to manually import using crowbar, etc

Animated models only get imported as static meshes, since they're only meant to be references to get your scaling right, and not as a means of using content you don't own the rights to.
For your own animated content, you should have source files that can be imported by normal UE means.

I see, I understand. Some models may be released under a license that allows me to.

Thanks for responding, your software is great :)


(3 edits)

I like this plugin alot however there is alot of import errors with models being completely gone or textures missing even after importing them correctly (CSGO) This happens on official and workshop maps. When i can i will post pictures 

Has anyone tried this with Jedi Academy maps?


I imported cache map to unreal engine but i see a lot of single mesh and material bugs can anyone help me how can i fix them?

this same thing happens to me

For me it just does not import materials :(

First off, thanks for this plugin, it's been a mega time-saver, and is bloody awesome.

Potential Future Feature Request:

An option for imported brushes (not displacements) to be created as Additive UE BSP, instead of auto triangulation etc. Unreal's format does allow stuff like removing faces, no all nodraw and stuff can still be removed. It could just be useful in certain circumstances to have the brushes in brush format, so they are editable in unreal after.

And of course, we can then convert them to static mesh from within unreal directly, later.

Oh, another secondary one: Have some way for us to define custom classes, so we can link entities <-> Actors automatically on import! Perhaps with a callback that passes stuff like the static meshes etc to the newly instantiated actor, to hook things up.

eg: In tactical Intervention, we have custom things like prop_breakdown and prop_hitzone. It would be coolio to be able to let hammuer instantiate a custom actor, instead of having to rename custom ents to prop_static so that they import in the correct place.

Thanks again for your amazing work :)


Any possibility of adding support for COD1? It's based on ID Tech 3 and uses Radiant. Same .map file structure as DOOM 3, however upon importing UE4 just crashes.

The COD map formats are heavily modified, unfortunately.

Hello! I wanted to ask a couple of things about this plugin. First of all am I allowed to use this plugin for a paid game? Am I allowed to share this plugin with my team members and not anyone else if I bought it? Also if I want to map for a paid UE4 game (commercial purposes) using 3dsmax for example I need to buy it and not use the free student license so, what about using hammer for commercial purposes?


I've tried to import materials/models from CSGO for about two days now and it ALWAYS crashes. Any idea why?

"Log file open, 06/19/18 13:28:43

LogWindows: Failed to load 'aqProf.dll' (GetLastError=126)
LogWindows: File 'aqProf.dll' does not exist
LogWindows: Failed to load 'VtuneApi.dll' (GetLastError=126)
LogWindows: File 'VtuneApi.dll' does not exist
LogWindows: Failed to load 'VtuneApi32e.dll' (GetLastError=126)
LogWindows: File 'VtuneApi32e.dll' does not exist
LogInit: Display: Running engine for game: HammEUr
LogPlatformFile: Not using cached read wrapper
LogInit: Display: RandInit(1962371680) SRandInit(1962371680).
LogInit: Read version file with build ID '3944462'
LogInit: Overriding engine version to CL 4033788, compatible CL 3944462
LogInit: Registered custom module enumerator with build ID '3944462'
LogTaskGraph: Started task graph with 5 named threads and 23 total threads with 3 sets of task threads.
LogStats: Stats thread started at 0.259854
LogD3D11RHI: Aftermath initialized"

Unfortunately, none of the things in this log have anything to do with HammUEr, so I can't really help you with this.
Some of those dll errors seem to refer to intel vtune, but a quick google doesn't seem to give any decent solutions, apart from maybe needing administrative rights when you install/run unreal engine?
Good luck, hope you figure it out.

(2 edits)

I had just recently found out about this plugin for UE4, and I am actually running into the exact same issue. I am able to get the textures imported just fine, but when attempting to import .map or files it finishes loading from master list, the I get an immediate CTD.

I did try loading a .vmf which I had exported from Hammer Source SDK (originally on GoldSrc, used converter) and the map loaded into UE4 only once,  any other time (same map) nothing showed up after loading and referring to master material list.
I'm running Epic Games Launcher as Admin, and I get the same thing as brikkew. I'm on UE4 4.19.2 w/ latest build of HammUEr

Could you optimize this so we can use it to work with Paragon maps?

I... don't really understand the question.

Deleted post
Deleted post

I'm trying to import the csgo materials and textures, but HammUEr seems to not being able to read the VMTs. It is importing the textures, but doesn't create material-instances.
Only when using the "create materials for not-used textures" dialog, it creates material-instances, but none of them uses the decal-material. (I exctracted the material files with gcfscape from csgo's pak01_dir.vpk and i'm using ue4.19)

Deleted post

I get a lot of errors like this in the output log:


LogTemp: Warning: Could not find  , cutting down to smallest identifier.
LogTemp: Error: Could not find texture   for VMT asphalt/asphalt_b, aborting creation of material
LogTemp: Warning: Could not find  , cutting down to smallest identifier.
LogTemp: Error: Could not find texture   for VMT asphalt/asphalt_b1, aborting creation of material
LogTemp: Warning: Could not find  , cutting down to smallest identifier.
LogTemp: Error: Could not find texture   for VMT asphalt/asphalt_b1_blend, aborting creation of material
LogTemp: Warning: Could not find  , cutting down to smallest identifier.
LogTemp: Error: Could not find texture   for VMT asphalt/asphalt_b2, aborting creation of material


(1 edit)

There was a change to the UE API I wasn't aware of, which led to this problem happening.
I've uploaded a new version, so please download "HammUEr 1.8 for 4.19 fixed" and try again.

(1 edit)

Oh thank you very much, i was already so desperate, that i completely deleted, redownloaded and reinstalled ue4 and csgo :D

Edit: Yes, with the new version it creates materials-instances and decals as expected.

Same problem here! 

I keep getting errors saying, "Binaries for the 'HammUEr' plugin are missing or incompatible with the current engine version." It also says "'HammUEr' failed to load because module 'HammUErRuntime' could not be found" I have UE 4.19.2 and HammUEr 1.8

The plugin should work with 4.19.2 as uploaded, so something might have gone wrong while downloading/extracting it.
Please download the new fixed version and try again.

Can you please upload a 4.19 fix version for source builds?

I'm also having this exact problem, tried downloading again a couple times.

Warning: No filename provided for module HammUErRuntime
Warning: ModuleManager: Unable to load module 'HammUErRuntime' because the file 'C:/Users/Josh/UnrealEngine/Engine/Binaries/Win64/' was not found.

the hammuer dll's are in the plugins binary directory. why is it looking in the engine binaries?

(1 edit)

Only the "flat_normal" and the "HammUErBaseMaterial" show up and the "HammUErDecal" won't. i couldn't figure out what's wrong.
Can anyone help me?

Weird, if the others show up, it should show up as well.
If not, there's an example of what it should look like in the manual on page 6 (lower picture), so just build something that looks like that and use it instead.

i actually figured it out! my ue4 version was too old and the plugin probably didn't support it back then.. silly me

it takes me 2h+ importing textures and models from csgo to UE ive tried a different disk still didnt fix any suggestion on how to make it go faster?

Unfortunately, there's a lot of data to import, and there's really nothing you can do to make it go faster.
You only need to do it once, tho.

Does the 4.18 version work with 4.19??

4.19 build has been uploaded

Ah nice, I managed to get what I needed with 4.18 and migrated it to 4.19.

But still great job on the plugin.

Hi, when I import textures or models, my C:disk will be used. But I use D:disk, why?

I... have some trouble understanding what you're asking, but files that are imported end up wherever your unreal engine project is (because they need to be converted to something UE understands), which I guess is somewhere on your C drive in your case?

Unreal Engine uses a Cache to store temporaly your materials and meshes. You can change this folder-destination to your other drive under Edit->Editor Preferences and then under General->Global->Local Derived Data Cache.

oh! thanks

(1 edit) (+1)
It seems you're not on discord anymore Tursfter? We had a converstation almost a year ago but I can't find it again. Anyway, I encountered this bug and I can't seem to fix it. In Radiant it looks normal but when I import it in UE4, the textures arent aligned anymore (Still using UE 4.15.3 with the 1.7.1 version, soon we'll update to 4.19 when it's being released) Any ideas? (This doesn't happen on all faces but it starts to happen more often)

I even have one area where its starting to get curved for some reason

The 4.15 builds are pretty ancient by now, so hopefully a move to a newer one should fix this.
If not, try moving the brush in hammer and then moving it back into place where it was, or check the texturing and redo it so it looks the same but the values are different (if that makes sense)

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