How does a shipped game (Valve: Left 4 Dead, Portal, Dota) decide which contextual NPC line to play, in terms a newcomer can reproduce?
The Valve designer-programmer who built the system describes it in his own GDC 2012 slides: when a character wants to speak, the game builds a flat dictionary of facts (the query), every rule in a writer-editable database is tested (a rule is a list of criteria that must all be true), the matching rules are scored by how many criteria they contain, and one of the top-scoring rules is chosen at random. General rules act as fall-backs for specific ones. The deck is a first-person talk, not a measured study; the Source SDK 2013 code confirms the same select-best-then-random-tie pattern in an earlier (Half-Life 2 lineage) version.
The Valve designer-programmer who built the system describes it in his own GDC 2012 slides: when a character wants to speak, the game builds a flat dictionary of facts (the query), every rule in a writer-editable database is tested (a rule is a list of criteria that must all be true), the matching rules are scored by how many criteria they contain, and one of the top-scoring rules is chosen at random. General rules act as fall-backs for specific ones. The deck is a first-person talk, not a measured study; the Source SDK 2013 code confirms the same select-best-then-random-tie pattern in an earlier (Half-Life 2 lineage) version.
Curator qualifications: Excerpted evidence located (two excerpt-less rows); slides' criteria-count scoring vs SDK weighted sum (equivalent only with default weights) kept. Rights: Valve SDK licence scope per C3R-0275/FB43 (reimplement the idea; do not copy SDK code outside its scope).
Evidence status: statements located in the cited sources by a correlated desk review (Claude); not executed; not independently reviewed.
Structured fields
{
"citations": [
{
"url": "https://cdn.akamai.steamstatic.com/apps/valve/2012/GDC2012_Ruskin_Elan_DynamicDialog.pdf",
"note": "candidate evidence excerpts"
},
{
"url": "https://github.com/ValveSoftware/source-sdk-2013/blob/be57e3d01ac7d7aa6a2cacbfef187c0b46616db0/src/game/server/AI_ResponseSystem.cpp",
"note": "candidate evidence excerpts"
},
{
"url": "https://web.archive.org/web/20141108091121id_/http://www.gdcvault.com/play/1015528/AI-driven-Dynamic-Dialog-through",
"note": "candidate evidence excerpts"
},
{
"url": "https://emshort.blog/2012/03/16/gdc-2012-talk-on-dynamic-dialogue/",
"note": "candidate evidence excerpts"
},
{
"url": "https://web.archive.org/web/20140110062400id_/http://assemblyrequired.crashworks.org/2012/03/13/ai-driven-dynamic-dialog-at-gdc-2012/",
"note": "candidate evidence excerpts"
}
]
}Evidence claims
- [sourced_fact] The Valve designer-programmer who built the system describes it in his own GDC 2012 slides: when a character wants to speak, the game builds a flat dictionary of facts (the query), every rule in a writer-editable database is tested (a rule is a list of criteria that must all be true), the matching rules are scored by how many criteria they contain, and one of the top-scoring rules is chosen at random. General rules act as fall-backs for specific ones. The deck is a first-person talk, not a measured study; the Source SDK 2013 code confirms the same select-best-then-random-tie pattern in an earlier (Half-Life 2 lineage) version. · locator: candidate evidence excerpts source
Rights
| component | license | hosting | redistribution | modification | training | Evidence and notes |
|---|---|---|---|---|---|---|
| documentation | unknown | permitted | permitted | unknown | unknown | Applies to this original summary only, not to the cited sources. |
Linked records
- cites → https://cdn.akamai.steamstatic.com/apps/valve/2012/GDC2012_Ruskin_Elan_DynamicDialog.pdf
- cites → https://emshort.blog/2012/03/16/gdc-2012-talk-on-dynamic-dialogue
- cites → https://github.com/ValveSoftware/source-sdk-2013/blob/be57e3d01ac7d7aa6a2cacbfef187c0b46616db0/src/game/server/AI_ResponseSystem.cpp
- cites → https://web.archive.org/web/20140110062400id_/http:/assemblyrequired.crashworks.org/2012/03/13/ai-driven-dynamic-dialog-at-gdc-2012
- cites → https://web.archive.org/web/20141108091121id_/http:/www.gdcvault.com/play/1015528/AI-driven-Dynamic-Dialog-through