Source SDK: Mastering the Source/Release Notes
The Source SDK notes is a section under the Documentation panel in the Application Browser. If clicked it leads to a page on the Valve Developer Community wiki that contains a complete record of all updates made to the Source SDK since its release.
This page will cover all the updates, just like the Valve Developer community page. To see the original page on the developer community follow this link:
This update addresses visual regressions seen in Model Viewer and Hammer after the TF2 Halloween update.
This update addresses all known issues introduced over the past week including:
- Crash when opening the VGUI model browser in Hammer
- Hammer lockups
- Black textures in Hammer, HLMV, and Faceposer
Added a new Engine Version called ‘Source Engine MP’ which is the proper one to select if working with Team Fortress 2, Counter-Strike:Source, or Day of Defeat: Source. Users should select ‘Reset Game Configurations’ in the SDK Launcher so that these games become properly associated with the new engine version.
Tools binaries for Portal, Half-Life 2 and its episodes are now located in a directory called ‘sourcesdk/bin/source2009/bin’. Users may need to update shortcuts they’ve created for vtex.exe, studiomdl.exe, etc. in order to ensure they are using the proper versions of these tools. The binaries used for modifying Team Fortress 2, Counter-Strike:Source, or Day of Defeat: Source remain in the ‘sourcesdk/bin/orangebox/bin’.
'Half-Life 2', 'Episode 1', 'Episode 2', and 'Counter-Strike: Source' now default to the 'Source Engine 2009' engine configuration. Users developing content for these games should manually add configurations for these games in the context of the 'Source Engine 2009' engine or can simply use the 'Reset Game Configurations' utility.
The terminology for Engine Version has changed and now maps to the year of release rather than to particular products. Here are the options now present in the list of engine versions along with the games which utilize them:
- Source Engine 2006
- Half-Life 2
- Counter-Strike: Source
- Half-Life 2: Deathmatch
- Half-Life 2: Episode 1
- Source Engine 2007
- Half-Life 2: Episode 2
- Source Engine 2009
- Half-life 2
- Day of Defeat:Source
- Team Fortress 2
There are now tools supporting three versions of Source in the SDK distribution. If you are creating content for a game or total conversion based on Source Engine 2007 you may need to run some of the command-line tools now located at:
The command-line tools needed for Source Engine 2006 and Source Engine 2009 are still located at:
- Added source files for ten shipping TF2 maps:
arena_lumberyard arena_ravine cp_badlands cp_dustbowl cp_granary cp_gravelpit ctf_2fort pl_badwater pl_goldrush tc_hydro
- Fixed the issues with the following tools: height2ssbump, normal2ssbump, pfm2tga, splitskybox, vbspinfo, vmt_tweak, vmtcheck, shadercompile
- Fixed an issue in studiomdl pertaining to $shadowlod
- The texture browser automatically ignores most textures that cannot be placed on brushes or displacements, as well as anything inside a .svn folder for those using svn as their choice of versioning software.
- Added additional auto visgroups for sprites and cubemaps
- Separated the VRAD calls into two sequential while using HDR (-ldr and –hdr) instead of –both
- Model browser is now created once per session
- Displacement brush dial now has greater range
- Added a stop button to sound previews
- Added the ability to edit game configurations with vconfig
- Added a new template mod that replaces the old ‘advanced’ source . This template has options for teams,classes, sprinting, prone, stamina, etc.
- Added shader source; fxc.exe, psa.exe and vsa.exe must be placed into the dx9sdk\utilities folder and you must modify materialsystem\stdshaders\buildsdkshaders.bat to set your paths.
- Most tonemap controller options now work in multiplayer. The ‘template mod’ map ‘sdk_teams_hdr’ demonstrates this.
- All three mod types by default mount the required appids – Multiplayer uses 218 and mounts 320 for example. Gameinfo.txt contains a new entry ‘AdditionalAppId’ for this purpose.
- Fixed a number of issues which caused the server to not compile in linux.
Multiplayer source codeEdit
- Players animate with the new animation system that came along with TF2.
- Fixed third person animations and all effects
- Fixed SLAM issues
- Fixed Use of UTIL_GetLocalPlayer on the server in various locations
- Fixed a number of other bugs / asserts.
Singleplayer source codeEdit
- Fixed a number of issues preventing the source from functioning correctly
- Added new vehicle “hl2buggy” so that users may have both the charger and the old buggy.
- See Source SDK Known Issues for a list of existing issues with this release.
- Particle Editor, Material Editor, and Commentary Editor are now included in the Source SDK
- Updated SDK source code for Orange Box mods
- Added example particle system files to SDK content
- Updated Linux binaries and makefiles for dedicated servers and server plugins
- The Faceposer phoneme editor now pops up a warning message when a phoneme cannot be saved
- Fixed crash in 'splitskybox.exe'
- Day of Defeat:Source now appears in the list of Orange Box games
- SDK shaders have not yet been updated for Orange Box games
- New editors can be accessed by adding ‘-tools’ to the launch options for Orange Box games or mods utilizing the Orange Box engine
Current Known IssuesEdit
- Cannot create shortcuts to Hammer, Faceposer, and Model Viewer.
- Linux makefiles shipped with the SDK are incomplete.
- The Particle Editor is not presently included in the Source SDK.
- Updated SDK shaders are not presently included in the Source SDK.
- Team Fortress 2’s game objects for new ‘Payload’ gameplay are now available to map makers.
- Custom settings in Hammer are no longer overwritten when the SDK is restarted.
SDK Source CodeEdit
- Modders can now create single player and multi-player mods based in the HL2:Episode Two source code when the engine version is set to The Orange Box. It is still possible to create mods based on HL2:Episode One.
- There is now a drop list in the SDK Launcher that allows the user to switch between engine versions.
- Two new lighting preview modes are available in Hammer.
- Models are automatically centered when loaded in Faceposer.
- Fixed crash and corrupt configurations for users that don’t own any Orange Box games.
- Fixed crash when loading a .VMF with HL2 is set to the active game.
- Fixed crash when loading a model with HL2 set to the active game.
- Resolved issues with building models for any games that that use the Half-Life 2:Episode 1 engine.
Current Known IssuesEdit
- You must add this to the launch options for the Source SDK in order to edit games that run using the Ep1 version of the Source engine
- The sourcesdk_content folder is not getting updated consistently so we suggest selecting 'Refresh SDK Content' the first time that you run the SDK.
- When running the Orange Box versions of the 'studiomdl' and 'vtex' you should include '-nop4' on the command line to bypass our Perforce integration with these tools. We will eliminate this need in a subsequent release.
- The %VProject% env var is not getting dynamically set anymore when you change the mod in the SDK launcher.
- Cannot create shortcuts to Hammer, Faceposer, and Model Viewer since.
See Source SDK Known Issues for a more complete list of known issues and workarounds.
- Map source for Portal level 'testchamber_a_05' is included for reference.
- In order to support multiple versions of the SDK tools the directory structure underneath 'sourcesdk\bin' has changed.
'sourcesdk\bin' - contains binaries needed to run the Source SDK launcher 'sourcesdk\bin\ep1\bin - contains Ep1 engine compatible versions of the SDK tools 'sourcesdk\bin\orangebox\bin - contains Orange Box engine compatible versions of the SDK tools
- SDK Launcher can run either the Orange Box compatible versions of the SDK tools or the Ep1 versions. The newest tools are run by default, but specifying '-engine ep1' in the launch options of the Source SDK tool will have the launcher run the previous versions of Hammer, Faceposer, and Model Viewer.
- Cubemaps can now be built for maps running in the Orange Box engine.
- Added Hammer models and materials that were missing in the 11/07 release.
- Fixed crash when opening VGUI model browser in Ep1 engine version of Hammer.
- Fixed changes to GameConfig.txt being lost randomly
- Fixed crash opening 'Load Model' dialog in HLMV with HL2:Episode Two set as the current game.
- Added new Maya 7.0 SMD exporter
- ParticleDefault Material and Texture Are Now Included in the SDK Bugzilla
- Added Source for Antlion Guard to SDK Content As An Example of a Quadruped
- Added 'HL Modelviewer' and 'phonemeextractor' Source Code to SDK Distribution Bugzilla
- env_terrainmorph has been removed.
- Hanging lamps now require a phys_ballsocket to prevent the prop from dopping on the ground. Even with the Ballsocket, the rope acts very jittery, a non-existent problem in Source 2006.
- Compiling the 'phonemeextractor' requires Microsoft SAPI 5.1 to be installed under 'src/utils/sapi51'
Source SDK BaseEdit
- Developer Console Now Bound to F12 As Well As '~' Key - Addresses Console Issues for non-QWERTY Keyboards Bugzilla
- 'envballs.mdl' Now Included In Source SDK Base Bugzilla
- Mod Creation Wizard Now Places Mod Name In the 'gameinfo.txt'
- 'New Game' and 'Load Game' Now Show Up As Options In Single-player Mods Bugzilla
- Replaced Semi-colons In Server Project Files With Commas to Fix Linux Compilation Issue Bugzilla
- Fixed 'memoverride.cpp' Build Failure Under Linux Bugzilla
- Owners of HL2MP But Not HL2 Can Now Create Multi-player Mods
Source SDK BaseEdit
- Added Missing Sprite Materials That Caused Gravity Gun to Look Strange In Multi-player Mods
- Added Response Files to Fix the "NPCs Don't Talk" Problem Bugzilla
- Visual Studio 2005 Support Bugzilla
- SDK now ships with solution files, project files, and static LIBs for both Visual Studio 2003 and Visual Studio 2005. There were also several code changes to accommodate Visual Studio 2005.
- When you create a new mod the solution and project files for both compilers are copied to the target directory. All Visual Studio 2003 solution and project files are of the form project-2003.vcproj or solution-2003.sln. Similarly, all Visual Studio 2005 solution and project files are of the form project-2005.vcproj or solution-2005.sln.
- Spectate Mode Added to HL2MP
- Faceposer Crashes When When Trying to Extract or Add a .txt File Bugzilla
- Fixed bug where visemes (the face shapes used by phoneme processing) would be connected to the wrong parts of the face depending on the order that models were loaded.
SDK Code FixesEdit
- Added player 'ready' command in HL2MP. If mp_readyrestart is enabled, then the round can be restarted if every player says 'ready'
- In HL2MP objects no longer hide tripwire slams. If an object is placed on top of a tripwire slam, it explodes, mirroring the behavior of det-pack slams.
- Scoreboard no longer changes during intermission, in the case a player is standing next to a grenade or flaming barrel when the round ends.
- Fixed ragdoll velocity extraction.
- Fixed 3d skybox always rendering, even if not visible. added "r_3dsky 2", which forces the 3d skybox to always render.
- Fixed about 15 cases of off by one errors in iterating from 1 to gpGlobals->maxClients in the game and client code. Bugzilla
- Lag compensation added back into HL2MP. It was mistakenly removed in the previous SDK release. Bugzilla
- shaderlib.lib can be compiled again. This was broken in the previous release. Bugzilla
General new featuresEdit
'vbspinfo.exe' and 'splitskybox.exe' Have Been Added to SDK
- Both of these tools are located in ...\sourcesdk\bin.
- 'vbspinfo' provides interesting stats on compiled map files and can be very valuable to level designers that are concerned about optimization.
- 'splitskybox' splits a .PFM skybox into its component parts. See this Wiki page for more info regarding its usage: HDR Skybox Creation
New SDK code featuresEdit
'mathlib' Source Code has Been Added to the Source SDK
- By popular request the source code for mathlib has been added to the SDK.
SDK code fixesEdit
Linux Dedicated Server Build Now Properly Builds and Links
- Makefiles were modified and the following binaries were added to the distribution:
SDK Shaders Have Been Revamped
- The old 'sdkshaders' has been gutted and replaced with snapshot copies of many of our production shaders. Specifically, the shaders included are:
- all generic vertex and pixel shaders
- 'bloom' effect shaders
- 'water' effect shaders
- 'refract' effect shaders
See the Wiki for details regarding how to build these new SDK Shaders: Shader authoring/Quick Start
Procedural Materials Now Working
- The crash encountered when following the Wiki's instructions for creating a procedural material is now gone. Procedural materials have been working fine since the 8/4/2006 SDK release.
Major new features in this releaseEdit
- Half-Life 2: Episode One enhancements.
- NPC behavior enhancements.
- New Game Content called 'Source SDK Base'.
- Many other improvements and bug fixes.
General new featuresEdit
- New Game Content Called 'Source SDK Base'.
- Located on Steam's 'Tools' page.
- Available to anyone who owns Half-Life 2.
- Uses the lastest shipping version of the Source Engine (HL2: Episode One).
- Contains only the hardware stress test included in Lost Coast.
- This content will be updated whenever a new version of the Source Engine ships.
- Mod makers should always use its SteamAppId (215) in their single player and multi-player mods.
- 'Create Mod Wizard' looks for any mods that are referencing SteamAppId 220 and reminds the user to change this to SteamAppId 215. The user must make this change manually.
- SDK now includes cs_militia.vmf so that users can study it more closely.
New SDK code featuresEdit
- Half-Life 2 Episode 1 Enhancements.
- Episode 1 behavior for Alyx and combine NPCs is included.
- Support for Alyx Darkness Mode.
- Analog joystick support as well as rumble controller support.
- Added support for HUD hints for ALT-Fire. (e.g. #valve_hint_alt_weapon_smg1).
- Now perform view smoothing when the player is walking on entities that cannot move.
- Beam Effects Enhancements.
- Added HDR color scale.
- Added separate inputs for red, green, and blue.
- Added InputStopSweeping to snipers.
- Client side .vcd's can now share a cache with the server ones, prevents hitching when loading instanced .vcd files (response system, etc.) which are used by the client, too. System allows MOD authors to install their own shared .dlls which export an IAppSystem so they can do similar kinds of shared caching system.
- Optimization to box/ray traces against vphysics objects. Net result is that the new code is rougly 2.3X faster for traces that hit.
- Weapon System Enhancements.
- Changed weapon selection UI so that selecting an empty bucket makes a deny sound and closes the UI.
- Added "weapondelay" to response rules. This field lets you specify how long an NPC should suspend firing their weapon when they start to speak certain responses.
- Player will now auto-switch to a newly acquired weapon if they pull it in with the physcannon.
- Weapons can be configured to have an underwater ALT-Fire option.
- NPC Behavior Enhancements.
- Added input "RemoveFromPlayerSquad" to npc_citizen. This instantly and properly ejects a citizen from the Player's squad.
- Added "Urgent" flag to assault & rally points. NPCs moving to Urgent points will run Urgent navigation solutions (Ignoring prop_physics blockers, eventually teleporting).
- Made "ForceCrouch" option on assault/rally points only make the NPC crouch when they're near the point.
- Added AI_BaseNPC::GetJumpGravity(), default 1.0f.
- Activities can be remapped to new activities based on NPC readiness. See episodic/scripts/actremap.txt.
- Added CAI_BaseNPC::PlayerPenetratingVPhysics to enable player avoidance when player vphysics intersects npcs.
- Episodic now forces all trackpathers to use the "fixed" patrolling logic. Fixes the gunship not patrolling properly above the attic.
- Added "Max Squadmates Per Enemy" option that allows the designer to specify how many squadmates may attack any given entity.
- Changed DLL loading code to search the system path after loading from the bin directory.
- Optimized sound engine.
- Sound engine is now 1.3X the original speed.
New Hammer Editor featuresEdit
- Added an "Enable Autosave" check box in general options.
- Auto-save files use the .vmf_autosave extension so that auto-save doesn't overwrite manually saved .vmf files.
- The check for an autosave file is now made on map load, rather than on crash recovery.
- Layouts of vgui panels in Hammer are now saved.
- Viewport splitter now saves its position at program shutdown.
- Added support for "setpos x y z; setang u v w" format in view->Go to coordinates.
- Model browser now exchanges skin values with the properties dialog in Hammer.
- Close caption system now knows how to fall back to hl2\resource\*.txt/.dat files if the requested token isn't present in the MOD game dir.
- Added Select all events for current actor/channel menu items to right click "Select/Deselect" submenu.
- Holding shift key while hitting 'h' or 0->9 keys in flex animation view will apply the curve type to all selected samples across all flex controllers, not just the current one.
- Choreo view timeline area draws w/ a slightly different color to make it clear where you should right click.
- Added check/uncheck all and invert selection buttons to flex sliders view.
- Changed flex panel buttons to have several of them under a menu button which pops up a menu having the choices there instead.
- Changed bitmap generation to overlay gestures with idle pose instead of being composited with reference pose, fixed gesture bitmaps being rotated 90 degrees.
- Mousewheel zooming tries to maintain focus on what the mouse is over (applies to Choreoview, Ramp tools, Gesture tool, Flex Animation tool).
- Also, added Home/End/PgUP/PgDn key support to various windows to allow rapidly moving around the event or scene being edited (applies to Choreoview, Ramp tools, Gesture tool, Flex Animation tool).
- Shift-H for toggling hold of flex animation tracks now gathers left/right samples as well as value samples if any are selected.
Model Viewer featuresEdit
- HLMV sorts animations by type (full body, posture, gesture), by name. Full body comes first, then gestures, then postures.
- Enabled the ability to view models with normalmaps in HLMV. This feature, for whatever reason, had been disabled.
- Changed hlmv to save current sequences by name instead of index number.
- Added -nosort to HLMV. This will display sequences in their compile order instead of alphabetical order.
- HLMV now caches normal-map viewer settings in registry along with other stuff.
SDK code fixesEdit
- Incorrectly using the maximum carry amount for ammo damage dealt by NPCs when not getting max carry amount from a console variable.
- Gravity gun beams no longer draw when r_drawviewmodel is 0.
- Added a sorting rule to the mapentity loader to make vphysics triggers spawn before props.
- Fixed crouching NPCs not standing up when running ACT_RUN_AIM.
- Fixed refcounting issue with procedural textures.
- Fixed memory leak in vgui::HTML control due to procedural texture being recreated, but old texture not being deleted until level change.
- Fixed several bugs related to awkward NPC behavior regarding crouching and rally points.
- Fixed case where missing files would hose the audio sound cache every time the cache was reloaded from disk.
- NPC's now take a smoother (no more stop/start) path when navigating between assault points which are marked "clear on arrival".
- Fixed bug where Assault behavior was supposed to, but did not, have a higher priority than Follow behavior (player companion).
- Fixed bug/missing feature where "Never Timeout" on Assault Points was being ignored unless the point in question is the last in a chain.
- Combine ball now dissolves NPCs if fired by an Elite Combine; The ball will not dissolve Vital Allies and will only dissolve the FIRST player ally it finds and do the regular damage to the rest, this way it wont nuke your whole squad.
- Combine ball now applies the correct base velocity to the player; Fixes player flying forward when hit by a ball while on the air.
- Fixed crashing bug where vehicle driver could reference a null pointer for the physics object of its recently-destroyed vehicle.
- Player's impact velocity (used to compute falling damage) now subtracts the velocity of the ground entity that the player lands on.
- Fixed crashing bug where bouncebombs carried by scanners would reference a NULL physics object upon restore.
- Fixed crash with restoring ragdolls that are touching triggers.
- Fixed NPC's in LEAD behavior waiting for the player even though the player is 'ahead' of the NPC, relative to the goal.
- Turned off stair smoothing when on a moving object (fixes view floating up when falling).
- Fixed a bug in unduck where the view could get stuck in a 'not ducked' position when the player was actually still ducked.
- Added distance checks when determining enemy visibility in AI_BaseNPC.cpp. Fixes npcs freezing due to choosing enemies that it can see but are too distant when another enemy is closer but not visible.
- NPCs searching for lateral LOS to their enemy will ask their behaviors for maximum allowed lateral movement. Fixes NPCs on rally points not being able to use lateral LOS checks at all.
- Fixed case where Citizens could fail to pick up a weapon without marking it unavailable to other citizens. This caused a bug where citizens would stop following.
- Fixed bug where citizens could stop following if unable to retrieve a weapon in an unreachable location.
- Fix for user reported bug where built in mp3 player would advance > 1 song during level transition due to multiple engine calls to StopAllSounds.
- Fixed crash when saving if the level contains a color_correction entity.
- Fix for .wav's with emphasis track reading bogus sentence data causing mouths to go haywire.
- Changed CStdioFile::FS_fwrite to chunk out files bigger than 256kb; fixes "Insufficient system resources exist to complete the requested service" issue.
- Fixed crash when try to load a map after a 'flush'.
- Fixed longstanding bug where ropes out of pvs might accumulate an impulse (from rotorwash effect, e.g.) and then suddenly simulate a huge impulse when they come into your pvs for the first time.
- Fixed bug where any npc taken through a level transition would no longer blink.
- Fix backward compat bug with MODs where dtvariant data structure had changed sizes.
- Fixed bug if you jumped and landed crouched, the view wouldn't completely return to standing height when you released the crouch key.
- Fixed buffer overflow in vgui::RichtText control when parsing input strings for URL's.
Hammer Editor fixesEdit
- Fixed several bugs related to the auto-save directory validation.
- Fixed an entity-properties related crash based on a submitted minidump.
- Fixed several exit crashes in Hammer.
- Fixed an autosave crash in Hammer where the code was using FindClose instead of CloseHandle to close a file handle.
- Fixed a rendering problem in Hammer (the model browser window would look freaky for a while until you moved it) caused by a bug in shader code.
- Backslashes are now disallowed in keyvalues entered in an object properties box and are replaced with forward slashes at apply time.
- 'setang' actually works now in view->Go to coordinates.
- Hammer Check For Problems no longer reports !caller and !self as missing or invalid targets.
- Fixed bug in Paste Special which truncated I/O connections with wildcards by one or two characters each time.
- Fixed a bug in Check For Problems that caused it to incorrectly flag I/O connections in the wrong case as broken.
- Fixed crash when hit browse for model when entity model was not found.
- Fixed hammer not correctly loading npc model.
Faceposer and Model Viewer fixesEdit
- Fixed crash in "redo extraction" when operating on a selection of words only.
- Fixed bug where rame/sceneramp curve types weren't being loaded back out of .vcds correctly.
- Fixed Faceposer Flex animation timeline hotkeys not copy/pasting flex sliders at the correct time.
- Fixed bug in faceposer where jaw_drop would return max drop when asked for flextrack data outside of range.
- Fixed bug with setting keyframe from sliders for high range flex controllers - fixes "funneler" and "jaw_drop" keys not cutting and pasting from the slider window.
- Fixed bug where balance of high range combo flex controllers wasn't returning the correct left/right weighting - fixes "funneler" always showing up as being unbalanced.
- Fix for faceposer unable to select flex event after closing and reopening a new .vcd.
- Fixed longstanding bug where clicking in the client area of a tool window or on a scrollbar, etc. wouldn't bring it to front.
- Fix for fighting between networked flex settings and client side "Expression" support causing facial jitters when using Expression events.
- Fixed faceposer starting out rendering remnant of previous faceposer session.
- Fixed a bug in cleanup of physics models in HLMV.
- Fixed bug with HLMV not linking flex sliders to the face on initial load. Fix should also help with random alt-tab crashes.