A special Source 2013 mod that helps with modding itself. It helps HL2 level designers make better maps and have a more comfortable experience designing them without changing too much of the game itself. Mapbase includes 50+ new entities (not counting filters or engine ports), hundreds of new I/O/KV (Inputs/Outputs/Keyvalues), heavily reworked FGDs, and a few big surprises. Mappers would create their maps based off of this mod and larger mods with their own unique changes would draw from Mapbase's code and assets.

RSS Mapbase v1.1 released

The first update since release is finally out. It fixes some issues people have been having, but it also adds a few new features as well. Features like the shader converter or model source files have not been released yet. This article goes into detail about what's in it, why it took so long, and when to expect more releases.

Posted by on

This is the first update since Mapbase released on September 30th. It doesn't release much of the content I've promised yet, but it fixes a bunch of issues people have been having with Mapbase itself. It also still adds a few new features and fixes some existing code.


- Applied the nexttoken security fix (suggested by ficool2, important for MP port)
- Fixed a crash with the follower wait point start/stop using handlers
- Fixed game_ui activator crash
- Changed vphysics triggers to accept more entities
- Fixed player squadmates not obeying hint node facing (e.g. wait points)
- Fixed npc_snipers
- prop_vehicle_jeep_old no longer changes classname
- Restored and added the other CTakeDamageInfo fields for point_damageinfo
- Fixed game_metadata not saving correctly
- Fixed logic_measure_movement not functioning while possessing spawnflags
- Added scripts/mapbase_rpc.txt script with choosable app ID and game image
- Fixed some casing that broke Linux support
- Added proper WorldVertexTransition blending to translucency and selfillum (translucency may need the translucent texture to be $basetexture, not $basetexture2)
- Added modified parallax corrected cubemaps to shader code (although currently unusable)
- Fixed Variant_ParseInput
- Added/restored custom scanner speed (experimental, needs more work)
- Added a frustum to point_camera
- Added spheres to env_fog_controller
- Several miscellaneous code changes/fixes and comment adjustments

The demo map VMFs and BSPs were also uploaded.

I would've released this update earlier, but it took almost a month because of some IRL issues, school, and burnout. However, I started working on other projects with Mapbase, and as I've worked on those projects, I've occasionally found Mapbase-related bugs that hindered my progress (including a few that hadn't been reported by others yet), leading me to go back to Mapbase to fix them. This helped motivate me to put out this update and I hope it continues to be a motivating factor in the future.

I had an idea about a week ago to add a "frustum" to point_camera that displays the camera's FOV in the 3D viewport, similar to projected textures and what I did for info_hint. This allows you to easily see exactly what would be visible through the camera.

As I was adding that, however, I suddenly realized env_fog_controller doesn't have wireframe spheres to display its fog start/end. I thought this was especially necessary now that Mapbase uses radial fog. This means you could adjust env_fog_controller's fog levels like you could adjust a prop's fade distance.

I didn't add these spheres to point_camera since it would get too crowded with the frustum and I didn't add them to sky_camera because the skybox scale prevents the spheres from accurately reflecting the fog values.

While browsing the shader code, I realized $translucent/$alphatest and $selfillum don't blend in between two albedos in displacement blend textures, but with a few simple line changes, they could. Getting $selfillum working was easy, but I had some trouble with transparency since it turns out the shader might not actually be able to use the second texture's alpha, meaning you could only blend the $basetexture's transparency with $basetexture2's opaqueness. They cannot both be transparent.

Before I made this change, $selfillum and translucency on WorldVertexTransition always used the $basetexture's values. This will now look different with Mapbase's shaders, but I consider intentional usage of the old behavior to be rare and easy to fix.

I added a file called mapbase_rpc in the "scripts" folder that lets Mapbase-derived mods change the app ID and large image for Discord RPC without having to modify the code. I also updated the mod templates to have them by default.

As always, post comments here, open issues on GitHub, or reach out to me on Discord if you need to report any bugs or issues.

Mapbase Release Build

Mapbase Release Build

Mapbase "Demo" Maps


Mapbase Mod Templates

Mapbase Mod Templates

Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.

Follow Profile
Half-Life 2
Send Message
Release date
Mod watch
Related Mods
Related Games
Half-Life 2
Half-Life 2 First Person Shooter