Embedding Lua in the Source Engine

From Valve Developer Community
Revision as of 16:47, 18 February 2010 by Andrewmcwatters (talk | contribs) (Created page with '{{wip}}<div style="margin:auto;text-align:center;"> '''Andrew C. P. McWatters''' ([mailto:mcwattersandrew@gmail.com mcwattersandrew@gmail.com]), 2010 <b…')

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Andrew C. P. McWatters (mcwattersandrew@gmail.com), 2010
Software Development Engineer


What is Lua?

Lua is a powerful, fast, lightweight, embeddable scripting language.

Lua combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. Lua is dynamically typed, runs by interpreting bytecode for a register-based virtual machine, and has automatic memory management with incremental garbage collection, making it ideal for configuration, scripting, and rapid prototyping.

You can find out more about Lua on their website, here.


Lua is currently the leading scripting language in games, and for Steam users, is synonymous with Garry's Mod. Unfortunately, Garry's Mod isn't open source, and as a result, we cannot use Team Garry's implementation of Lua for our and others' benefit. However, my project, <Half-Life 2> Half-Life 2: Sandbox is currently the leading open source project dedicated to bringing the developer community a method for embedding Lua into their mod nearly seamlessly, and in this article I'll explain how.

Half-Life 2: Sandbox uses a pure variant of Lua, different than Garry's implementation of the language, which has restrictions on many libraries, and modified syntax for C++ styled comments. Half-Life 2: Sandbox's goal is to provide a neutral, clean, standardized and well documented code base for interfacing with Lua, unlike articles seen within the Valve Developer Community such as the LuaBind oriented Lua tutorial or Adding Lua article.