Npc blob

It's an experimental, unused entity that would have been a swarm of entities that surrounds and consumes its prey. Its behavior is functional, with a few bugs. Visuals and sounds are not finished at all, however.
In the Half-Life 2 20th Anniversary Documentary, it was revealed that this NPC was originally meant to be used for Half-Life 2: Episode 3. It has a similar appearance to the paint from Portal 2.
== Games ==
# 
==Appearance & Composition==
An npc_blob emits and controls a large group of entities called blob_elements. Without an npc_blob, these blob elements will disband and drift in their last direction of travel, which is dictated by npc_blob.
The NPC computes what is called a centroid by averaging the origins of every blob_element it controls. This calculation is used for:
*Computing how far away enemies are.
*Identifying when a blob_element is stuck.
*Determining the direction blob_elements wobble in while idle. 
It's probable that blobs would have been rendered as metaballs, similar to gel blobs in Portal 2. What blobs render as currently is a model from a list (see npc_blob_use_model below).
==Abilities==
# When an enemy is found, the blob will move to it and surround it. It will even climb onto enemies, and slowly consume them.
# Blobs prefer the ground, but will travel on walls to get somewhere, or even the player and NPCs.
# Blobs do 5 damage every 0.025 (or 200 damage per second).
==Notes==
# Enemies can't hurt blobs and even if they could it has over 2000000000 Health Points.
# Blob elements don't try to stick to where they all have LOS to the centroid. This means that a wall can end up going straight through them.
# Typically, blobs only move when they find an enemy. They do not understand assaults.
# npc_blob appears as a combine soldier in hammer.
# Combine soldiers will sometimes go into their "on fire" animation when being attacked by blobs.
# It seems to copy the player regarding AI relationships, except for when antlions become allies.
# There is some kind of crash that happens sometimes, right as an enemy is killed.
# Blob elements have been observed going airborne on rare occasions to reach flying enemies or when going over walls.
# Blobs seem to be invincible, but they can still be hurt by explosives. They also ignore trigger_hurts.
# Igniting the npc_blob reveals that the NPC itself is an invisible headcrab model. 
# Igniting also reveals that the npc_blob never moves, only the blob_elements.
==History==
Npc blob was first shown off at Valve Hardware Day 2006 in an interactive tech demo. Where it's blob elements appeared as a swarm of Snarks, enemies from the original Half-Life. During the tech demo, you can see npc_blob climbing over obstacles; both stationary brushes and physics objects, avoiding hazards (fires in this case), and attacking a combine soldier. This is all that we see of npc_blob in this tech demo.
In the game files for Counter Strike Global Offensive and Alien Swarm, the files for the info_node entities have context options that reference npc_blob. Looking at the data, the blob seems to have been planned to be able to "shake", "spit" and "regenerate" among other functions. These options have the prefix Ep3; suggesting that npc_blob may have been intended to appear in Half-Life 2, Episode 3 should it have been released.
==Dedicated ConVars==
blob_mindist <120.0> (hammer units)
:
blob_element_speed <187> (hammer units per second)
:How fast blob_elements move. Higher speeds seem to cause blob elements to go airborne more frequently.
npc_blob_idle_speed_factor <0.5> (arbitrary number)
:Multiplies blob_element_speed for when blobs aren't doing anything.
blob_numelements <20> (arbitrary number)
:How many blob_elements a single npc_blob manages.
blob_batchpercent <100> (percentage?)
:
blob_radius <160> (hammer units)
:How far blob elements like to spread out from each other. Can affect their ability to move and attack. 
npc_blob_use_threading <1> (boolean)
:Whether blobs are multithreaded or not.
npc_blob_sin_amplitude <60.0f> (arbitrary number?)
:Amplifies how much blob_elements wobble around. 
npc_blob_show_centroid <0> (boolean)
:Shows a green 3D cross indicating where the centroid mentioned above is located.
npc_blob_straggler_dist <240> (hammer units)
:Defines the maximum distance a blob element would be allowed to get away from the centroid when traveling. The code for putting this ConVar to use is incomplete and commented out.
npc_blob_use_orientation <1> (boolean)
:Enables blob elements rotating to face their direction of travel.
npc_blob_use_model <2> (arbitrary number)
:Chooses which model to show blob_elements as. 
::0. gibs/agibs.mdl (skull)
::1. props_junk/watermelon01.mdl (watermelon)
::2. w_squeak.mdl (snark (not in final game, shows error model))
::3. baby_headcrab.mdl (baby headcrab (not in final game, shows error model))
npc_blob_think_interval <0.025> (seconds)
:How often the NPC thinks.
==Keyvalues==
==Flags==
==Inputs==
==Outputs==
==See also==
*Render blobs