Worldcraft++

A community-stabilized map editor for the Half-Life 2 Leak.

Changelog & Updates

Announcement - 1/4/26

Hello guys, Filip here.

I'm officially announcing that, possibly in June, there will be a public Beta-Testing of Worldcraft++! However, I can't determinate on which day the testing will start. Worldcraft++ is still being upgraded, fixed etc, etc.

After beta tests will end, I will gather feedback, and it will be used for actual release of Worldcraft++.

Thank you for reading.

Update - 4/3/26 to 31/3/26
  • Fixed a bug causing an Invalid Texture Extents happening when rotated brush has an extremely small/broken texture scale. This happens when importing or decompiling maps.
  • Rewrote slightly void CMapDoc::UpdateAutoVisGroups(void) function.
  • Fixed displacements using lots of memory (Fix inspired by Hammer++).
  • Fixed undo/redo not updating models. (REVERTED.)
  • Backported 3D Radius Spheres from 2013 Hammer, that appears when using entities like: light, ambient_generic, etc.
  • Fixed "The SmartEdit Enter Key Trap" which existed since 1998!
  • Fixed 2D view bugging out and "stop working" after zooming out due to hard-coded limit.
  • Improved 3D selection, making it faster and comfortable to use. (REVERTED.)
  • Cleaned up some stuff in code.
  • Fixed an bug where custom mod directory in Leaked Hammer would not display user-made models, sounds and textures.
  • Removed CSG "requirement" due to Valve already merging VBSP and VCSG into one thing.
  • User can now safely cancel the map compiler without Leaked Hammer crashing or bugging out + added safety check in void CProcessWnd::Append(CString str) function.
  • Fixed strncpy Buffer Overrun in Model Browser.
  • Added red text in I/O.
  • Added Sound Browser.
  • Worldcraft++ now has it's own registry while still being in LeakNet directory in Registry Editor.
  • Finished function responsible for creating brushes in 3D View.
  • Fixed memory leak in GDI Handle which would cause "Black UI Bug".
  • Fixed LEAKLEAK commment in void CMapEntity::RemoveHelpers(bool bRemoveSolids), responsible for handling entity properties (like in prop_static model or entity class). Worldcraft++ no more "secretly" abandons the old models into RAM and wastes gigabytes of users RAM.
  • Fixed Invalid Solid bug.
  • Fixed CString memory corruption crash in OP_entity.cpp.
  • Fixed weird over-lighted white textures happening.
Announcement - 12/3/26

Hello everybody, Filip here.

I'm announcing that work on Worldcraft++ will unfortunately take sometime to make due to personal issues and some technical bugs that arise. While this sounds very disappointing, I will do everything in my power to bring Worldcraft++ still to 2026 release, but I can't predict when the build will be ready for beta-testing or for release.

Thank you for reading.

Update - 19/2/26
  • Added faster loading and made sure that the leaked Hammer will keep the previously opened .vmf file in memory.
  • Fixed Lazy Evaluation in Texture Browser, which caused a loop due to textures not being loaded into memory, causing Leaked Hammer to become unresponsive.
  • Improved Mouse Wheel Speed, allowing the user to move around the uncompiled map faster than having to hold W key. The user can also manipulate the speed of the camera by holding Shift and using the scroll.
  • Added new Hotkeys:
    • H - Quick Hide Selection
    • U - Unhide all
    • ESC - Quick Deselect
  • Improved auto-visgroup.
  • Added a 2003-looking Hammer model browser.
  • Improved Grid Navigation inspired by J.A.C.K and Hammer++. (Suggestion made by soup2.0)
  • Added a secret easter egg.
  • Fixed a bug with Texture Scale Reset.
  • Fixed Grid Drift, where if the user would place an entity (e.g., at 2048.55) and saved, Hammer would write it as 2048.6 and make the entity off-grid. (Which was a risk of creating leaks)
  • Re-fixed an error about uncapped FPS; the previous fix used Sleep(30), which was at first helpful. DWM saw those as requests and slowed Hammer back to 30 fps.
  • Fixed the infamous Vertex Snap / Invalid Solid bug.
Update - 8/2/26
  • Re-added .map and .RMF support.
  • Rewrote CWorldcraft::Run to remove the hard-coded 60 FPS sleep limit, the main loop now prioritizes message processing and rendering immediately when the application is active, providing minimum input latency and maximum smoothness.
  • Implemented a thread sleep (10ms) trigger when the application is inactive or minimized to prevent unnecessary CPU consumption while multitasking.
  • Added timeBeginPeriod(1) to InitInstance, this forces the Windows timer resolution to 1ms, eliminating micro-stutters and jitter in the 3D viewport animations previously caused by low-precision system timing.
  • Removed hardcoded render distance caps in CMapView3D. View frustum Far Z is now initialized to 300,000 units.
  • Optimized hotkey logic for view distance control to support large-scale adjustments.
  • Fixed CMapStudioModel render distance not synchronizing with the active camera frustum settings.
  • Rewrote CMapView2D::DrawGrid to support adaptive spacing. Grid lines now double in interval (e.g., 64 -> 128) as zoom decreases, ensuring line spacing never falls below 4 pixels.
  • Fixed GDI rendering issue where the grid would fail to render (black screen) at low zoom factors due to sub-pixel grid spacing.
  • Fixed a bug where pasted brush-work wouldn't paste on the location chosen by the user and instead, appear far away from the chosen place.
  • Made sure that the camera movement in editor doesn't stutter when having high FPS or using scroll and W key for fast moving.
  • Added a function inspired by Hammer++ to hide Nodraw textures to make them stop rendering in Hammer Editor under the F5 key. (does not function, possibly requires a community fix in future.)
  • Increased Ray Length from 4096/8192 units to 10,000 units.
  • Forced map compiler to inject -red2black flag into VRAD parameters.
  • Added memory leak detection.
  • Fixed Squashed Textures in Hammer Editor's Texture Browser.
  • Upgraded 2D Orientation Arrows which is based on 2007 Hammer, it will allow mappers to see if info_player_start or prop_static are correctly placed by showing yellow line in Top (2D) View.
  • Added Auto-VisGroups and made sure that they automatically make categories.