Source Feature Requests
This article needs to be cleaned up to conform to a higher standard of quality because:
This page is about things happening in-game.
For bugs (only) concerning things occurring while using the SDK, see Source SDK Bugs.
If you think something is not intended to function like it does, post it in the Source Bug Reports page.
- 1 Animation/Physics
- 2 General
- 3 Graphics
- 4 Hammer
- 5 Audio
- 6 Code/Scripting
- 7 Entity and brush behavior
- 7.1 An Entity/Command for reading variables
- 7.2 The super gravity gun
- 7.3 Teleport
- 7.4 Multiple Fog Controllers
- 7.5 Physics
- 7.6 Poison Damage
- 7.7 Improved chapter unlock entity
- 7.8 Every entity should have an OnSpawn output
- 7.9 Scaling props
- 7.10 An 'ammo' property for game_player_equip entity
- 7.11 A slight different behavior for game_player_equip entity
- 7.12 A 'parent' property for weapon entities
- 7.13 Merging some "map property" entities in the worldspawn one
- 7.14 Moving sound
- 7.15 Subtitles/Closed captions in multiplayer games
- 7.16 Nav editing
- 7.17 More branch paths for path_track entities
- 7.18 Volumetric light brush entity
- 7.19 tools/blocklight fade defined by brush dimensions
- 7.20 A step entity
- 7.21 Minor suggestions
- 8 Mapping
- 9 CSGO Request
NPCs should be able to be hit by an object and that object will move the ragdoll, but the NPC will react and reposition itself.
For example, if you were to throw an object at an NPC's head, currently the object just bounces off and the NPC doesn't react. What should happen is that the NPC's head moves and the NPC reacts to return their head to its original or ideal position.
This would also help add realism to combat. For example, if you were to shoot a combine soldier in the knee, it should make the knee move, maybe even knocking the soldier over. The solder will try to get back up, and if it succeeds, it should be limping if the knee is damaged enough.
Valve is planning to add more physics-based animation to their engine, and this would be an excellent addition.
- If I'm not mistaken, Valve has implemented physics-based animations starting from Left 4 Dead's Source engine. --Prof. Orribilus 05:16, 25 September 2012 (PDT)
In this the player entity would be more interactive with it's environment. Example: When an explosion in near the player the player is ragdolled(somewhat) and pushed away.This including first-person views.
sv_autosave should disable map-specific autosaves too.
Better progress bar for bzip2ed fast map downloads.
Addition Add a percentage complete display? Also do not make the progress bar wrap many times (make 100% the end).
Dynamic shadows handling
Better handling of dynamic shadows to prevent shadows in indoor spaces being cast in inappropriate directions for lighting conditions. Either enable dynamic shadows to be cast by light sources other than light_environment, or institute 'fallback' diffuse shadow directly under object if not directly lit from sky light. This would require a trace along the vector of the light_environment angle to see if it hits a skybox texture, but would at least prevent the situations we get where indoor shadows are falling in completely the wrong direction.
Other possible 'cheap' solution would be to enable multiple shadow_control entities in a map, one per area separated by area portals. In this way, a map with strong directional daylight in outdoor areas could use straight down shadow controllers in indoor areas to reduce the jarring appearance of indoor shadows.
- Ah finally thats gonna add a little amount though to the overall performance.--Gear 04:57, 31 Oct 2006 (PST)
Addition Allow your own player shadow to be visible to you. At the moment you cannot see where the shadow is cast, however your enemy can in multiplayer games- big advantage in some cases.
- A console command for the dynamic shadow draw distance.
The ability to make materials that reflect the world, instead of using cubemap reflection. Exactly like water.
- It's been added to Source 2007 Engine. Check glass/ folder in Source Shared 2007. --JakeB 15:30, 18 Jun 2008 (PDT)
- Very limited uses though. This needs to be improved on, along with water tech --Welsh Mullet 13:47, 16 June 2010 (UTC)
More Skybox control
The ability to change the settings of a 3D Skybox (namely its texture) would be beneficial. I'm unsure of the best way to achieve this. Changing the sv_skyname in the console does not actually change the sky texture even after trying mat_reloadtextures or mat_reloadmaterial. It does however change the sky texture after reconnecting, if you are playing on an online server.
An alternative to changing the sv_skyname would be to edit the skyname keyvalue of the worldspawn entity.
Adding an OpenGL renderer would be a good idea, like Half-Life had.
Addition: As a comment to both this and the Linux porting suggestion, adding OpenGL support would greatly benefit Linux WINE users even if there is not official port of Source for Linux. OpenGL translates far easier then DirectX under WINE.
- Done in Mac engine update? --Welsh Mullet 13:49, 16 June 2010 (UTC)
- Currently, OpenGL is in the Mac version only. Windows version is still limited to DirectX. --Barracuda 19:03, 16 June 2010 (UTC)
- Thought it was the same engine... Can you download the mac version on linux? --Welsh Mullet 20:54, 16 June 2010 (UTC)
Dynamic cubemaps should be added to the engine, with at least 1 cubemap always "following" the player, so that the reflections on view models and stuff around the player would have more realistic reflections. To get an idea of what I mean, try watching this video, it explains a problem with static cubemaps (note: the video is NOT mine) 
- A possible newer camera view to show how far a light entity will cast it's light as well as the shadows it will create. Also the camera view can be special, it can be toggled like others and even show other events within the map and maybe incorrectly placed entities and possible errors.
- Dragging in the 2d views while in camera mode always sets camera pos. Currently it only works the first time, after that you hav to find the gizmo.
- Brush dimensions always stay in 2d view
- A built in cinematic editor that allows for users to build a scene in Hammer and preview the animation in real-time.
- An in-editor material editor complete with texture importing and material customization tools.
- The ability to copy texture paths in the browser
- A more advanced Material Viewer.. Categories, Tags, Searching
Real-Time Editing Solutions
- The ability to edit game environments in real time through Hammer is one so chooses.
- Autoloading pointfiles option
- Tools to create add-ons from with in hammer.(e.g. An add-on for randomly distributing trees to large environments)
Preserving groups of brushes tied to entity
Even now, tieing to entity a group of brushes causes the lost of the group. Preventing this from happening would be useful.
Fade distance options
Stuff like selecting props without a fade distance, opaque helpers, toggle draw on/off in hammer like ingame, more accurate "camera" distance
Displacement tool in z mode
Holding m1 would move vertexes in zmode like when not in zmode + update marker when moving
- Cutting brushes could always use nodraw on new faces.
- Right click to reset entity key
- Random texture rotation
- Enable/disable full stop when leaving a trigger_push
- AddOutput BaseVelocity to have absolute control rather than add onto current velocity
Better music support
Better support for music, including:
- Ability to mark a sound as music regardless of the format.
OnFinishedPlayingoutput to cleanly loop a sound.
- Fade in and fade out effects (in a map entity).
- Music not to suddenly cut out between maps
Soundscape creation tool
Soundscape creation tool with real-time preview.
Sound sample previews
First of all, it would be good if you could preview button sounds instead of choosing them from a list and testing them each in-game.
Second of all, I'd like to be able to play looping sounds using the loop, so that I know which ones are looped and which are not, and how they sound looped. You could add a Stop button to prevent a loop going on forever.
More sound formats, particularly Ogg Vorbis (not difficult to implement) or FLAC.
OpenAL provides more realistic 3d dimensional sound. While current sound engine is good, you can still clearly hear sounds when you are close to source but between you and source are some huge rocks or thick wall.
- There is inital OpenAL support in MacOS X version --Nshopik 22:46, 3 September 2010 (UTC)
Tracked audio support
You can do lots of cool things with tracked audio formats such as fading in channels and what not. And they can be smaller file-size wise too, not like it matters these days.
ambient_generic Playtime in seconds
Improved chapter system
Improved chapter system, ideally with only one file (plus any images) to worry about!
GCF priority for HL2:SP
I'd like to have custom content have priority over the Half-Life 2 GCF files. For example I'd like to be able to add custom sentences to a custom hl2/scripts/sentences.txt file without having to create my own mod for that. The GCF overriding custom material is apparently unique to HL2:SP. Even Lost Coast lets custom content have priority over the GCF. --Andreasen 05:40, 3 Apr 2006 (PDT)
- Annoying as that is, it's pretty easy to create your own mod for HL2:SP - have a look at MINERVA as an example, and feel more than welcome to rip it apart and convert into something new with a search-and-replace on the word 'MINERVA'. It makes the final mod much easier to distribute, install and remove as well, as it's a single folder in SourceMods rather than many files scattered through HL2's directories... —Cargo Cult (info, talk) 07:14, 3 Apr 2006 (PDT)
I would really love to have a complete source engine documentation designed for mod developers, because right now I have to spend hours of code reading to find out how to do a minor change.--Psycommando 20:12, 14 Jan 2009 (PST)
Implement in other Source games then Half-Life 2 / Half-Life 2 DeathMatch the camera material, mechanism described in info_camera_link page. It would be cute to have. --Prof. Orribilus 07:58, 30 September 2012 (PDT)
Entity and brush behavior
An Entity/Command for reading variables
We have a method of modifying server variables (incrementVar), but no way of reading back what we set. Can we have either a client/server command for reading variables, or an entity that can do it?
The super gravity gun
I don't know what exactly is causing this, but while working on the npc_citizen_fleeing prefab, I noticed that shooting/punting/pulling the citizen with the Super gravity gun won't kill him, but just rip away ragdoll duplicates from his body. He won't die. I'm posting this under feature requests because I'm thinking that the scripting isn't written for citizens (or perhaps other NPCs too) interacting with the super gravity gun.
Also, if the super gravity gun global state is turned on, the bodies of zombies killed with another weapon simply vanishes, instead of turning into ragdolls. (The headcrab can detach as a ragdoll if the zombie is blown up though.)
The current trigger_teleport isn't teleporting thrown grenades or weapons, it is even (to my understanding) impossible to set a filter to allow hegrenade_projectile, weapon_hegrenade, or weapon_glock entities, The filter or trigger_teleport ignores these entities.
Multiple Fog Controllers
It would be helpful to have more than one env_fog_controller allowed in a map. The current work around is the use of triggers in conjunction with a point_clientcommand that changes the values of many settings; fog_color, fog_colorskybox, fog_enableskybox, fog_end, fog_endskybox, fog_override, fog_start, fog_startskybox. I propose an enable/disable function (plus 'start disabled' flag) added to env_fog_controller to allow triggering between each.
There does not seem to be a simple way to adjust internal unit scale and physics in the source code in a similar way to HL1 (hull.txt). Changing the values in vphysics_interface.h do not seem to have a visible effect in game. Without this models adjusted for 0.16 scale will not have accurate physics.
Having separate gravity controls for each player, independent of map gravity orientation and intensity(walk on walls).
Getting bitten by a black headcrab isn't dangerous even if you're not wearing a HEV suit. The damage is mysteriously healed anyway. I would like it if poison damage is only healed/non-lethal if the player is wearing a HEV suit.
Improved chapter unlock entity
Entity to trigger chapter unlock without re-locking later ones.
- This can be done using the
incrementvarcommand, as demonstrated here.- RodeoClown 05:01, 26 Apr 2006 (PDT)
Every entity should have an OnSpawn output
We could do away with many logic_auto's if all other objects had OnSpawn outputs. We could also remove Names from many objects because they could call functions on !self without having to refer to a name.
It is strange that there is no option to scale props, it is very easy to implement and would get rid of all the duplicate models that are just in a different scale (like for the 3d skybox). It would also allow props to be mirrored along an axis, something even more important than scaling in general.
An 'ammo' property for game_player_equip entity
Even now, game_player_equip entity gives to the player a weapon with only one ammo. A property to specify the amount would be useful.
P.S. I have found this issue while mapping for Day of Defeat: Source. I don't know, for the time being, if it occurs in other Source games too.
A slight different behavior for game_player_equip entity
Even now, game_player_equip entity get the player to drop the equipping weapon to the ground if he has yet a primary one or the same one. This causes an issue if a granade is dropped along the path of a moving brush: the brush stops itself. Due both to this and to the fact that dropping the weapon to the ground is useless, i think that, in this situation (player having yet a primary weapon or the equipping one), this entity should do one of two things:
- In case of non-primary weapon equipping, anything; in case of primary weapon equipping, gets the player to drop his one before equips him with the new one
- Anything in both cases
P.S. I have found this issue while mapping for Day of Defeat: Source. I don't know, for the time being, if anything like occurs in other Source games too.
A 'parent' property for weapon entities
It could be useful to make weapon entities parentable.
Merging some "map property" entities in the worldspawn one
Could some "map property" entities, like light_environment, shadow_control, env_sun, game_ragdoll_manager, game_weapon_manager, game_gib_manager and water_lod_control, be all merged in the worldspawn one?
Add the possibilty to make an associated at a moving parented ambient_generic sound to follow the entity's position while being played, because now the sound is played at the correct position but doesn't move itself.
In Day of Defeat: Source are implemented the mechanisms for defining, and associating to a sound, subtitles/closed captions; but it seems that is not implemented the mechanism that "triggers" a subtitle/closed caption in conjunction with the playing of the sound. It would be cute having it.
P.S. I have only tested Day of Defeat: Source
- Having a JUMP connection seems better than a mesh with the JUMP attribute. Connection types for dynamic events and mesh types for static events?
- Nav_mark_unnamed as a function in toggled paint mode.
- Nav_check_connectivity to mark said areas.
- Mark area number command.
More branch paths for path_track entities
or at the very least, some inputs to change the Next Stop Target and Branch Path keyvalues like how path_corner has SetNextPathCorner
Volumetric light brush entity
Color, alpha, pattern, fade distance, cast direction for shading, uniform / directional cast direction
tools/blocklight fade defined by brush dimensions
A flat brush would block light instantly, and a wider brush would fade the light farther.
A step entity
Using keys like step interval, random steps, and puts like OnStepUp/Down, GoToStep, OnStep*, DisableStep*,
- point_proximity_sensor sensitivity setting
- func_precipitation render distance option
- game_ui deactivate on death or OnDeath put
- OnBlocked func_rotating would allow AddOutput BaseVelocity vertical bump (elevators)
- A brush entity to control sound, so all sounds within a trigger_brush are only heard within linked brushes
See Hammer Feature Requests for tool enhancements.
Give us Steam VGUI
It'd be a great advancement in modding if the Steam vgui2 interface was made public as well as overriding the vgui2 dll.
Add the ability to use displacements on triangular faces.
- Bomb radius should have volume and density, for greater control. Optimally, it should be generated based on a "light sample" rendered from the brush origin, so walls block damage.
- Skin control for weapon_entities
- prop_dynamic_glow - DisableDraw would leave the glow, while Disable would also disable the glow effect.
- Fix vgui_movie_display in csgo and allow streaming
- Allow your own player shadow to be visible to you. At the moment you cannot see where the shadow is cast, however your enemy can in multiplayer games- big advantage in some cases.