Portal 2: Community Edition - April 17th, 2026 Update

Initial Open Beta release build.

Additions (13)

  • Implemented the campaign system , allowing modders to create their own fully-fledged standalone campaigns or spin them off into their own individual sourcemods using a simple KV3-based pipeline.

  • Clustered lights now support volumetric lighting effects

  • Added additional options for customising npc_security_camera decals, sounds, sprites and speed

  • Added ForceLookAt input and OnDetach output to npc_security_camera

  • Humanoid NPCs can now press Portal floor buttons like players

  • Adhesion Gel-coated props can now stick to floor buttons.

  • Added new flag to point_push to make it respect BlockLOS brushes during line-of-sight checks

  • Static props and overlays can now be dynamically tinted by the colour of a specific paint type. Useful for matching gel pipes and signage to configured gel colours.

  • Added read support for the following packaging formats:

    • Quake/HROT PAK pack files

    • Fairy Tale Busters APK pack files

    • These should not be considered a viable substitute for VPK files, and are only intended for mounting other games' content. They cannot be used for Workshop addons.

  • Added slopescale property to lights, which allows mappers to tweak the shadow bias slopescale value per light, which can help to reduce shadow acne.

  • Added a sound KV to env_spark to change the spark sound

Panorama Closed Captions

  • Added a new KeyValues3-based subtitles system that is based upon the more robust Panorama UI framework, featuring support for Pano XML syntax and common HTML-style tags

    • A dedicated script for migrating old KV1 captions has been added to the sdk_tools directory to help facilitate the transition to the new KV3 format

  • Merged SubRip (SRT) subtitles/"cheaptitles" parser into Panorama CC system

  • Connected the NPC actor gender system to KV3 captions. When applicable to NPCs who speak, gender postfixes will be searched first, then non-binary variant if it cannot be found. (Parity with VGUI CC system.)

  • Added ConVar cc_panorama_log, which will control logging messages from new CC system (for messages that did not have an existing check already.)

    • Missing caption logging is still connected to only cc_showmissing.

  • Captions will now respect and prioritize the cc_lang ConVar over global game language (-language/cl_language) when specified.

    • English CC localization tokens are used as fallback option, should a token not exist in the preferred language.

Improvements (15)

  • Portal 2 content is now bundled as part of P2:CE

    • The game is no longer required to be installed in order to launch P2:CE

    • All assets have been repacked; existing maps have been compressed using BSPZIP, videos re-encoded with the WebM format (using VP8 codec) and all existing textures upgraded to VTF 7.6 (rev2), w/ zstd compression

      • Base game Portal 2 content now weighs 6.63 GiB in total, yielding an overall total reduction of ~5 GiB

  • In the workshop uploader finish popup, the link to the addon is now clickable

  • Workshop Uploader: User-defined ignore paths/files in an addon are now relative to that addon's directory

  • Cameras now have their cables in Portal 1 maps, and optionally in new custom maps

  • Improve behavior when holding and releasing Adhesion Gel-coated props

  • Fall back to older DPI modes on Windows if PerMonitorV2 API is unsupported

  • Added argument names to VScript functions in script_help, as well as the Wiki

  • Startup videos should now render at a lower framerate

  • Add 'Stop' button to sound fields in Hammer

  • Apply ent_text autocomplete to all other ent_* debug info toggle commands

  • Avoid overriding $color and $alpha when overlays are tinted

  • The limits for overlay count, face count and render order have been mostly removed. Render order is now limited to 65536, while both others can have up to 2 billion

  • Panorama Label elements now support loading inline movies.

Fixes (19)

  • Reading of color keyvalues should work properly now

  • Fix a spurious warning for prop_weighted_cubes with custom models defined

  • Fixed workshop uploader possibly failing on Linux if file to copy exists in scratch folder

  • logic_playerproxy now respects the player_throwenable ConVar

    • This effectively prevents the player pressing MOUSE1 to bypass the anti-softlock mechanism that would disallow throwing Wheatley into a bottomless pit during the game's intro and plot twist

  • Fixed crash when unloading map with env_portal_credits

  • Fixed game_text not rendering under certain channels; a dedicated font has been introduced for this

  • Fixed npc_security_camera not being grabbable with the Gravity Gun after being knocked off the wall

  • Fixed packed AngelScript files not running on Windows clients

  • Increased the limit of entities that point_push can potentially affect from 256 to 1024

  • Fix Adhesion gel not overriding reflection/conversion gel in physics object interactions

  • Allow Schrödinger cubes to hit themselves via portals

  • Fixed PNG screenshots not looking right on map with HDR and postprocess effects

  • Fixed invalid integer type in blob network bypass code

  • VBSP can now transform origin and angles keyvalues for entities not present in FGD data

  • Fix parallax_obb entities when inside instances.

  • Fixed color_correction_volume not working at all

  • Fixed crash with the netconsole

  • Fixed missing 'slope scale' on env_projectedtexture entities.

  • Fixed ent_fire !names failing due to case-sensitivity.

Removals (1)

The below change was reverted during development of the next update. KV1 subtitles will remain in-game only as a last-resort fallback for KV3 captions:

  • Legacy KV1 captions (built via captioncompiler) will no longer function in-game as they have been fully deprecated. The server will now load KV3 caption files and use that to determine networking dispatch.

    • The captioncompiler tool has also been effectively deprecated as of this release. Please migrate your old-format captions to the new system using the dedicated script in the sdk_tools directory now.

    • This resolves an issue where truly custom captions would not play, because they had no equivalent hash ID substitute that permitted the internal system to dispatch CC messages.

    • Temporary note: MP servers will currently not be able to dispatch networked CC tokens over the server, meaning players will not be able to see CC/subtitles in a MP game until support for doing so is implemented in a future build.