Skip to content

Commit 2697683

Browse files
committed
feat: Add P2CE changelog 2026 03 18
1 parent d036ecf commit 2697683

1 file changed

Lines changed: 179 additions & 0 deletions

File tree

Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
# Portal 2: Community Edition - March 18th, 2026 Update
2+
3+
## Additions (17)
4+
- Added 360 video export to `startmovie`
5+
- Added a `sound` KV to `env_spark` to change the spark sound
6+
- Added ability to configure the filter used for floor buttons
7+
- Added Controller LED coloring by last shot portal (stolen from Portal 2)
8+
- Added ConVar `cl_portal_use_old_fizzle_effects` for using old Portal 1 style portal fizzle effects
9+
- Added `-debug_dynamic_mounts` to debug Steam dynamic mounts
10+
- Added enabled field to particle operators to toggle operator on/off
11+
- Added new customization option to show Conversion Gel on cubes. This is also available as an `info_portal_gamerules` keyvalue for mapmakers
12+
- Added `OnFizzled` output to `prop_portal`
13+
- Added `OnPressedCube` / `OnPressedPlayer` to floor buttons
14+
- Added `player_weapons_removed` & `player_equipped` game events
15+
- Added `sv_force_upgrade_weighted_cube` ConVar, to force the new models, allowing always seeing paint at the cost of backwards compatibility. This is intended for situations like default levels that are known not to check for specific models
16+
- Added texture flag to fully ignore `mat_picmip` (NOLOD only ignores `mat_picmip` when ConVar is positive) at 2^18
17+
- All paintable props now have `OnPainted` and `OnUnpainted` outputs
18+
- Floor buttons will now use the second hitbox set, if present to configure the trigger bounds
19+
- `prop_monster_box` now has gel overlays like regular cubes. It also has a new keyvalue to determine whether it should use the partially broken paint behaviour like in base Portal 2, or behave the same as regular cubes
20+
- `prop_physics_paintable` can specify which skins to swap to in order to use gel overlays
21+
22+
## Fixes (25)
23+
- Allowed .dat files to be included in addons
24+
- Fixed a crash if entity filters are evaluated on dead entities
25+
- Fixed a crash in some cases when cubes are pulled out of the way of a laser
26+
- Fixed an issue where scenes inside `scenes.image` files would not be properly precached, which resulted in their associated audio files being unable to play
27+
- Fixed crash with ragdolls
28+
- Fixed crash with the netconsole
29+
- Fixed `cvar_defaults.cfg` not properly overriding ConVars marked with FCVAR_REPLICATED
30+
- Fixed `host_map_mount_order_detection` not prioritizing custom asset paths in some cases
31+
- Fixed issues with map name handling for `trigger_changelevel` and `point_changelevel`
32+
- Fixed local splitscreen
33+
- Fixed misspelled KV on `snd_op_occlusion`: `occlusio_db_loss` is now `occlusion_db_loss` (old KV still works though)
34+
- Fixed painted cubes not displaying adhesion gel skins
35+
- Fixed pellets produced by `fire_energy_ball` not hurting players
36+
- Fixed rare crash when using `point_template` under some circumstances
37+
- Fixed save screenshots containing garbage
38+
- Fixed saves not working properly on Linux, due to a file system bug
39+
- Fixed splitscreen mode not rendering correctly
40+
- Fixed `sv_alternateticks` being forced off on Linux. Apparently it's even doing this in Portal 2
41+
- Fixed `sv_schrodinger_emit_sound`
42+
- Fixed the game not responding to `SIGINT`
43+
- Fixed WebM video export
44+
- Make `env_global`'s GetCounter input usable
45+
- Preserve bodygroups (frankenturret heads, etc) when fizzling objects
46+
- Properly clear `env_global` counters when initially created
47+
- VTF textures below `v7.5` are no longer allowed to set `v7.5`-specific flags to guard against flags from TF2 being set
48+
49+
## Improvements (18)
50+
- Cloth no longer simulates while the game is paused by default
51+
- `cl_portal_use_new_dissolve` and `fx_new_sparks` no longer require cheats to be enabled
52+
- Console input autocomplete suggestions now include fuzzy matches
53+
- Entity filters will no longer crash if chained in an infinite loop
54+
- `env_spark` entities can now override `fx_new_sparks` to use new or old sparks
55+
- Exposed the following debug ConVars: `snd_occlusion_pos_override`, `snd_occlusion_material_override`, `snd_occlusion_visualize`, `snd_occlusion_visualize_filter`, `snd_occlusion_indirect_radius`, `snd_occlusion_indirect_min`, `snd_occlusion_indirect_max`, `snd_occlusion_collide_min_distance`
56+
- `fps_max_menu` is now also respected while in game with opened menu
57+
- High Energy Pellets will now obey damage filters on the player
58+
- Lightboard KeyValues definitions file no longer needs to exist for the game to boot
59+
- Made `sv_gravity` affect cloth
60+
- Marked `hud_fastswitch` as archive
61+
- Marked `r_portal_light_intensity` as archived
62+
- Marked `sv_portal_legacy_compat`, `sv_enableholdrotation`, `mv_uncrouch_on_jump`, `mv_duckjump`, and `mv_bhop` ConVars as executable by maps
63+
- Move rumble to Steam input
64+
- Removed devonly flag from `net_fakelag`
65+
- Removed `soundsystem.dll`
66+
- Reworked how `prop_weighted_cube` functions. Every cube type has its own model, with identical skin layout. Cube type has been split into `behavior` and `shape` fields, allowing things like a spherical reflection cube. These new models dynamically tint, allowing showing all gel types as well as matching the configured colors
67+
- Schrödinger cubes now emit `SchrodingerCube.Music` for music
68+
69+
## AngelScript (27)
70+
- `util::TraceLine` can now take `array<CBaseEntity@>` as ent to ignore
71+
- `util::TraceLinePortal` can now take `array<CBaseEntity@>` as ent to ignore
72+
- Added (cl|sv)_scriptsystem_dump_lsp commands to game
73+
- Added `CBaseEntity::GetGroundEntity` `CBaseEntity::IsOnGround` `CBaseAnimating::IsOnFire`
74+
- Added `EHandle<>` template type to AS
75+
- Added `scriptsystem_dump` (and _json/_lsp) variant commands to Hammer
76+
- Added access masks to angelscript bindings. This will prevent client/server functions from being called in the wrong places
77+
- Added bindings for `AngleVectors`
78+
- Added ConVar change callback support to scriptsystem
79+
- Added KV and output support for script classes
80+
- Added parameter names to a lot of AS functions/methods
81+
- Applied access masks to attributes. ServerCommand/ClientCommand are only available in their respective domains
82+
- Entities in AS can now be casted
83+
- Entity outputs now have `Init` and `Get` methods
84+
- Exposed `CBaseEntity::KeyValues` methods to AS
85+
- Exposed more base entity classes to AS (only a stub for now)
86+
- Fixed AngelScript malformed attribute error displaying 'Entity' attribute name instead of the real name in some cases
87+
- Fixed AS debugger not working
88+
- Fixed casting in AS
89+
- Fixed issue where `CommandArgs@` in custom commands had to be non-const. It now requires const
90+
- Fixed Scriptsystem in Hammer not being able to load any scripts
91+
- Refactored script loading. Each search path will now load `sv_init.as` `cl_init.as` and `init.as` and define `SERVER` and `CLIENT` to differentiate where the modules are to be loaded
92+
- Scriptsystem debugger now works properly
93+
- Scriptsystem dumps now contain global funcdefs
94+
- Scriptsystem json dumps now use AS method names
95+
- Scriptsystem lsp dumps now doesn't duplicate methods from parent classes
96+
- Scriptsystem's `string.toInt` and `string.toUInt` can now convert numbers from any base
97+
98+
## Graphics (21)
99+
- Added `$emissiontransform` to PBR, to apply transform to the emission texture specifically
100+
- Added `nearz` property to clustered light entities
101+
- Added `sv_reloadmaterialsonmapload` ConVar that controls material reload behavior when loading map, can improve map load times when disabled
102+
- Added DoSSAO function to viewpostprocess
103+
- Added light cookies to `light_rt` entities
104+
- Added various ConVars to control AO
105+
- Doubled cookie atlas size, allowing 4 times the texture data to be allocated before exhaustion
106+
- Fixed `r_ssao` breaking cubemap building
107+
- Fixed `SetLightScale` on clustered lights not changing the light intensity
108+
- Fixed cookied lights only displaying cookies when shadowed
109+
- Fixed crashes when using some material proxies on non-standard stuff
110+
- Fixed flashlight and `env_projectedtexture` shadows being 4x larger per-dimension than their pre-clustered equivalents
111+
- Fixed lightmappedgeneric ssbump detail textures not working properly
112+
- Fixed multi-frame texture cookies only ever displaying the first frame
113+
- Fixed SSAO crashing game in some cases
114+
- Fixed sun specular not blending with lightmaps properly on PBR textures
115+
- Increased default clustered shadow budget from 6 to 12
116+
- Light cookies now correctly use the light entity orientation
117+
- PBR materials with manually specified `$envmap` will no longer be overridden to use `env_cubemap`
118+
- Rate limited the clustered atlas allocator warning to 1 message per second
119+
- Replaced general clustered light modes with independent lighting component modes
120+
121+
## Panorama (5)
122+
- Added `SettingsEnumBitField` Panorama control
123+
- Added `WeaponEquipped` and `WeaponsDropped` Panorama events
124+
- Fixed `SettingsSlider` `invert` not working correctly when the slider is set to display a percentage
125+
- Fixed crash with the video settings screen when an incorrect panel type is used for the setting dropdowns
126+
- Fixed Panorama rendertargets being invalidated when `mat_picmip` is changed
127+
128+
## Tools (41)
129+
- `devui_auto_scale` will now use the smallest window dimension to calculate scale factor
130+
- Added "Paste Special Again" context menu option in Hammer, which will use the last saved Paste Special options in the session without a prompt
131+
- Added `-EnvCubemapNotForcedForPBR` parameter to VBSP, for mappers that need PBR materials with handmade envmaps
132+
- Added `-help`/`-?` to StudioMDL
133+
- Added `-nowinerenderfix` to disable rerendering Hammer views on each frame in Wine
134+
- Added a "Use Native File Browser" option in Hammer, to allow using Qt file dialogs and vice versa
135+
- Added an ImGui game events debugger
136+
- Added an in-game cloth/softbody debugger
137+
- Added an in-game ImGui material inspector/rudimentary editor
138+
- Added ConVar `devui_auto_scale` which, when enabled, automatically scales DevUI to match the reference resolution of 1920x1080, like Panorama
139+
- Added displays thickness of ropes and cables in Hammer
140+
- Added manual inputs to clustered light inspector
141+
- Added mdl2dmx, a very basic static prop decompiler
142+
- Added Near Z property slider to clustered light inspector
143+
- Added position/angle inputs to clustered light inspector
144+
- Added script module info DevUI panel
145+
- Added support for custom fonts in DevUI themes. FontScaleDpi, FontScaleMain, FontScaleBase control font size. Font property controls the actual font and is a path like `resource/MyFont.ttf`
146+
- Added support for Hammer++ rectangle map hotspot definitions
147+
- Added vtex config flag "ignorepicmip" to control setting the IGNORE_PICMIP flag in the compiled VTF
148+
- Allow `bool`/`boolean` to be interchangably for FGD IO and KV definitions
149+
- Displacement tools now edit continuously without needing to move mouse
150+
- Entity report dialog can now be sorted
151+
- Fixed `devui_auto_scale` not performing any scaling
152+
- Fixed `devui_auto_scale` turning text into a blurry mess below 1080p
153+
- Fixed a crash in Hammer when copy-pasting brushes
154+
- Fixed a crash when removing/changing loaded FGDs in Hammer
155+
- Fixed copy+paste in ImGui windows
156+
- Fixed ImGui looking blurry due to autoscaling
157+
- Fixed Paste Special entity name prefix field not retaining its value across multiple different invocations of the dialog
158+
- Fixed StudioMDL trying to run `md` on Linux to create the output dir. It now runs `mkdir -p`
159+
- Hammer now does not spam warning about unknown detail object types
160+
- Hammer prints more FGD errors when something goes wrong
161+
- Hammer's Discord Rich Presence no longer shares map name by default
162+
- Model browser getting sometimes getting stuck
163+
- Removed `-winecompat` from Hammer, fixes will be applied when Wine is detected automatically
164+
- Removed zlib and libxml2 dependencies from StudioMDL on Linux
165+
- Shift+F1 keybind will now toggle the DevUI menu instead of failing to open a nonexistent VGUI window
166+
- The `-noao` VRAD parameter now sets `LVLFLAGS_DISABLE_BAKED_AO`
167+
- Updated VRAD help text
168+
- VRAD AO is now DISABLED by default and can be enabled by passing `-ao`. XeGTAO should be preferred for VRAD baked AO
169+
- When using the eyedropper tool, Hammer will prompt to name entities if they did not have one already
170+
171+
## VScript (8)
172+
- `prop_weighted_cube` now has `GetCubeBehavior()`, `GetCubeShape()`, `GetLaser()`, `IsEmissionLocked()`, `IsPressingButton()` and `GetPaint()` VScript functions. `GetCubeType()` *was removed*, use behavior/shape instead or a model check
173+
- Added `CBasePortal::IsActive`
174+
- Added `vscript_script_max_exec_time` to control max allowed script execution time. Use with caution
175+
- Fixed a crash in VScript when calling `CreateEntityByName` on a non-existing class
176+
- Fixed rare crash from VScript while converting some values to string
177+
- Fixed VScript crash related to saving tables that reference themselves
178+
- VScript `TraceLineEx` can now take an array of entities to ignore
179+
- VScript `TracePortalLine` can now take an array of entities to ignore

0 commit comments

Comments
 (0)