List of projects
Here are brief descriptions of a few selected projects around the world that use Lua.
(Wikipedia contains a
longer list.)
If you know about an exciting project using Lua that is not listed here,
please let us know or post a description to the
mailing list.
SimCity 4
Maxis/Electronic Arts
SimCity 4 continues a long tradition of high-quality
city simulation games by Maxis.
The game uses Lua for configuring game constants and to
control various of its elements
including the user interface,
tutorials, advisors, and automata.
Third-party plugins for SimCity can access these features to define
the behavior of custom content.
World of Warcraft is a massively multiplayer role-playing game (MMORPG)
which uses Lua as an embedded scripting language for the UI subsystem.
This allows rapid prototyping of new features during development,
and has the benefit that customers are able to customize and improve
their own interface,
through mods and addons.
WoW is the world's most popular subscription-based MMORPG,
with more than 8 million subscribers.
Contact: WoW UI Forum
Adobe Lightroom is "the complete, elegant environment for
the art and craft of digital photography from raw capture to creative
output".
Over 40% of Adobe Lightroom is written in Lua.
Contact: Mark Hamburg
Warhammer Online is a new MMORP game from EA Mythic
(the creators of Dark Age of Camelot).
Mythic has been a prolific creator of multiplayer online games
since its formation in the mid 1990s.
In 2006 the company was bought by Eletronic Arts.
According to Lance Robertson, the Producer of Warhammer Online,
"we are aiming for the game interface to be very modifiable;
the actual method we have chosen for WAR is to have LUA addons."
These Lua mods follow the same popular fashion of World of Warcraft mods,
where authors can customize the default Warhammer Online interface
all the way to create full new interfaces and functionality.
CryENGINE2 is the successor of CryENGINE,
the game engine behind Far Cry.
Among others,
the engine is used by Crysis,
a first-person shooter game
developed by Crytek and published by Electronic Arts.
The use of Lua allows the setup and tweaking of weapons/game parameters,
playing of sounds and loading of graphics without touching the C++ code.
CryENGINE2 is also used in non-game applications like IMAGTP,
a 3-D virtual visualization program.
Contact:
Metaplace is a next-generation virtual-worlds platform designed to
work the way the Web does.
Instead of giant custom clients and huge downloads,
Metaplace lets you play the same game on any platform that
reads its open client standard.
It supplies a suite of tools so you can make worlds,
and it hosts servers for you so that anyone can connect and play.
And the client could be anywhere on the Web.
Metaplace committed to an open markup standard for its network protocol
- anyone can write a client for any platform they want.
It uses Web standards for everything it could,
which is why you can have a game world that is also a website,
or use Web data to populate your world.
The game logic is written in Lua,
so it is easy to make whatever kind of game or world you want.
FarCry
Crytek/UbiSoft
FarCry uses Lua extensively for scripting all game events and AI/game logic,
both for single and multiplayer game,
and for realtime game editing.
Contact: Marco Corbetta
Supreme Commander (SupCom) is a real-time strategy computer game
designed and developed by Gas Powered Games.
The game is considered to be the successor to Total Annihilation,
which was ranked by GameSpy as
the number one real-time strategy game of all time.
Lua is the language used by Supreme Commander
for most of the high-level game code.
Lua is also the language used to write SupCom mods.
Jive is a software platform designed to power the
development of remote control applications for
Squeezebox and Transporter.
The key highlights of the Jive platform are the Jive Browser,
a resolution and color-depth independent renderer
that allows us to power a wide range of display types, from
monochrome VFDs to full color LCD screens;
and the Jive UI, a new, Lua-based,
scalable user interface that can be completely customized
by anyone familiar with Lua,
a powerful, open-source scripting language.
Contact: Logitech's Streaming Media Systems group
Garry's Mod is a Half-Life 2 Modification.
It won "Mod of the Year" (2005) from ModDB,
"PC Mod of the Year" (2005) from GameSpy,
and "Best Mod 2005" from PCGamer US.
Lua opened a lot of doors to Gmod players,
allowing them to script new weapons, gamemodes, and other features.
There may never be any addition that was quite as great as Lua.
Contact: Garry Newman
LuaTeX is an extended version of pdfTeX
using Lua as an embedded scripting language.
The LuaTeX projects main objective is to provide
an open and configurable variant of TeX
while at the same time offering downward compatibility.
The criteria for choosing Lua was that it was
freely available,
portable,
easy to extend with pdfTeX-specific functionality,
small footprint,
and also fun to work with.
Contact: Hans Hagen
MySQL Proxy is a lightweight binary application standing between one or
more MySQL clients and a server.
The clients connect to the Proxy with the usual credentials,
instead of connecting to the server.
The Proxy acts as man-in-the-middle between client and server.
The Proxy ships with an embedded Lua interpreter.
Using Lua,
you can define what to do with a query or a result set
before the Proxy passes them along.
The power of the Proxy is all in its flexibility,
as allowed by the Lua engine.
You can intercept the query before it goes to the server,
and do everything conceivable with it,
like pass it along unchanged,
fix spelling mistakes, rewrite the query, etc.
Nmap
Insecure.org
Nmap ("Network Mapper") is a free open source utility for network
exploration or security auditing.
Nmap uses raw IP packets in novel ways
to determine what hosts are available on the network,
what services (application name and version) those hosts are offering,
what operating systems (and OS versions) they are running,
what type of packet filters/firewalls are in use,
and dozens of other characteristics.
It won Linux Journal's Editor's Choice Award for Best Security Tool,
LinuxQuestions.Org Security App of the Year award,
and Info World's Best Information Security Product award.
The Nmap scripting language is an embedded Lua interpreter
which was extended with libraries for interfacing with Nmap.
Lua was chosen because it exceeded in all criteria for Nmap:
it is small, distributed under the MIT license,
has coroutines which provide a sane method for parallel script execution,
was designed with embeddability in mind,
has excellent documentation,
and has a large and committed community.
pbLua is an implementation of Lua 5.1 for the LEGO Mindstorms NXT. It is based on the open-source code for the NXT brick provided by LEGO. The low level drivers were modified slightly and then integrated with the Lua sources.
pbLua is an alternative text-based programming environment for the NXT that supports coroutines, strings, tables, and limited floating point operations.
The NXT is based on the ARM7 micro with 256K of FLASH and 64K of RAM. pbLua looks like a serial port to a PC and connects via USB. It is completely self contained as it runs the parser right on the brick.
Eventually, we'll support the Mac and Linux platforms when we figure out how USB gets enumerated on those platforms.
Contact: Ralph Hempel
There
Makena Technologies
"There" is an online getaway where you can hang out with your friends
and meet new ones --
all in a lush 3D environment that's yours to explore and help build.
The game is written mostly in C++,
served mostly from a scalable Linux cluster,
with additional customization using ThereScript,
which is Lua plus added functions.
Lua Player helps programmer newbies to write their own games in Lua. It provides some game related functions, like image loading and blitting and is available for Sony's Playstation Portable and perhaps later for other platforms.
Contact: Frank Buss
Lua 4.0 was integrated into the system that is used to monitor gas concentration levels during Space Shuttle launch operations. Launch personnel use Lua to perform some of the more tedious tasks such as long duration leak testing and statistical data collection. Lua was integrated into the Windows application that provides remote control of leak detection equipment installed at the launch pad. The remote control application provides hooks into Lua that allow a Lua script to gain access to the data collected and to issue commands to the leak detection equipment.
Lua was chosen mainly because it is an easy language to understand (a benefit for the launch personnel) and it is very easy to integrate into a project.
Contact: Charles Curley
Psychonauts
Double Fine Productions
Psychonauts is an XBox Action/Adventure game from the mind of Tim Schafer.
All of Psychonauts Game logic is implemented via Lua. The Level
Designers use Maya to create the geometry for the levels, and then
place down markers for Lua controlled Script Entities. This includes
all non-player characters, platforms, puzzle pieces. Basically the game
engine boots up and places the main player into a static world. Lua
scripts then take over and control all interactive elements.
Lua is so light and fast! It is AWESOME!
Contact: Dave Dixon
Heroes of Might and Magic V (HoMM5) is the fifth installment of the
Heroes of Might and Magic computer game series.
Lua is used for custom logics programming.
The regular game process is programmed in C++,
but all the high level functions
(as hero movement, spell casting,
changing resources or creatures quantity, placing map objects,
creating text boxes, etc.)
are also accessible from Lua script.
Nival Interactive map and game designers use Lua for their
needs because the language is simple to study and easy to use by
non-programmers.
And the programmers like Lua,
because it can be easily bound to the existing C++ code
and it's powerfull enough for a wide variety of
applications.
S.T.A.L.K.E.R.: Shadow of Chernobyl is a game of the genre FPS -
"first person shooter".
It has sold over 1 million copies for PC worldwide.
The project has been developed for 6 years,
and included 20 programmers (7 script writers).
It uses Lua 5.0.2 with LuaJIT (thanks to Mike Pall).
Lua was chosen because of its simplicity, speed,
and the availability of an open-source binding library (luabind).
Lua is an open-source project with 10 years of history,
with a large community,
with few bugs, and that has been used in many other FPS games.
Contact: Dmitriy Iassenev
Barracuda provides Lua Server Pages (LSP) for web page authoring.
The Barracuda platform is an advanced Embedded Web Server designed
for controlling and monitoring embedded industrial applications in
real time. The Barracuda Web server has a very small footprint and
runs on almost any platform.
LSP provides support for most of the Barracuda APIs (cookies, sessions,
RPC, etc.) and has built-in Lua-SQL support. Barracuda LSP can be extended
with existing Lua libraries. LSP applications can be packaged as ZIP
files and/or embedded in the Barracuda web server executable.
Contact: David Burgess
Wireshark is the world's foremost network protocol analyzer,
and is the standard in many industries.
Wireshark is used by network professionals around the world for
troubleshooting, analysis, software and protocol development, and
education. It has all of the standard features you would expect in a
protocol analyzer, and several features not seen in any other product.
Lua been added to Wireshark as a language for prototyping and scripting.
Lua can be used to write dissectors, post-dissectors and taps
(a mechanism to fetch data from every frame).
Contact: Ethereal Developers
Hercule is the firmware development platform for Olivetti printers, used in ANY_WAY and MY_WAY series. Lua is used as a configuration script to take the decisions about print modalities, provided desired qualities. This allows the printer driver to behave identically at run time. Additionally, Lua scripts can be executed directly from memory cards, without any host computer, simplifying test and production tasks.
Contact: Patrick Rapin
Giggle
The Moving Picture Company
Giggle is a renderman procedural DSO developed for the production of visual effects created for the film 'Troy'. This project required the rendering of scenes comprising tens of thousands of battling soldiers,in addition to complex city layouts and particle effects for flames, smoke and dust. The generation of all this geometry was handled almost exclusively at rendertime by Giggle.
Giggle's core functionality comprises approximately 40,000 lines of C++, written by 2 MPC programmers over the course of 9 months. This provides many capabilities including :
- loading of geometry, shaders, particle caches and a proprietary cache format for agent simulations.
- skinning and other geometry modifiers
- procedural geometry generation
- kd tree classes for
space partitioning
- geometry evaluators to perform ray intersections and closest point queries
The functionality is bound into Lua, providing a flexible scripting interface which allows it to be easily adapted to specific tasks. MPC initially chose Lua for its reputation for speed and efficiency as well as for the great simplicity of its API. It has subsequently proved itself through heavy use by a team of 16 or so CG artists and across a renderfarm of over 500 machines.
Since adoption, Giggle's use has been extended to other MPC feature pipelines, and coupled with an interactive interpreter and OpenGL preview renderer to provide interactive script development and debugging.
Contact: John Haddon
Impossible Creatures is a PC RTS (real time strategy)
game released on January 7th 2003.
The project has 100's of thousands of lines of code and was written
by ~8 programmers.
Lua contributed about 50,000 lines of that code.
Lua was used extensively in all aspects of the game.
It was used to configure almost every system and subsystem in the game.
It defined and controlled the UI, managed the AI,
and specified the look of the effects and other graphical entities.
It was used in tuning the game in realtime, for editing unit attributes,
processing the game rules, automation of tasks, and on and on.
Lua was chosen because of its speed,
its simple syntax and its ease to understand for both programmers and designers.
It was also easy to debug, modify and itegrate into our C++ game/ tools.
Contact: Shelby Hubick
Digital Fusion is a fully integrated, non-linear
compositing and special effects post-production system for finishing,
design and effects creation, used extensively in many feature films,
HDTV productions, broadcast video, web-based/multimedia projects and
more.
Lua forms the basis of 'DFScript', an integrated scripting language
added in Digital Fusion v4. This allows the automation of repetitive
tasks within the program, as well as facilitating integration into other
aspects of a post production facility, such as clip management, 3D
renderer integration, EDL/conform integration etc.
Contact: Peter Loveday
ToME is a free roguelike game.
It is a very evolved and deep game that
started its life as a variant of Angband (of one of the variants
actually) and has now grown into a wildly new game.
ToME uses Lua to allow customization of the engine, new quests,
spells, powers, whatever.
A lot is customizable thanks to Lua,
and a lot more will be.
Lua was selected because of its portability,
smallness, clarity of syntax, tables and general neatness :)
Contact: DarkGod
Publique! is a web based content management system.
The information structure managed by Publique! can comprise
an entire HTML site or just part of it.
Publique! can also be used as an XML based web service or as an WML front end.
Publique! offers a workflow based on three user types or actors:
Authors, Editors and Readers.
There are currently more than 100 sites using Publique in Brazil,
Argentina, USA and Japan.
The current version (2.2) is available in Portuguese and English.
Japanese and Spanish versions are on the way.
Publique started in 1998
and has been developed by a team of 3 to 7 programmers during its lifetime.
The production team totals 30.
Publique uses a modified version of
CGILua
as its current web engine and consists in almost 50K lines of Lua
and 5K line of C (not including CGILua itself).
Lua has been chosen for its ease of prototyping,
speed of execution and extensibility.
It is used for almost every feature in the system other than the OS Platform,
DBMS and Web Server abstraction layers.
Contact: André Carregal
Tecgraf
Computer Graphics Technology Group, PUC-Rio
Tecgraf is the result of a partnership between
PUC-Rio, the Pontifical Catholic University of Rio de Janeiro,
and
PETROBRAS, the Brazilian Oil Company.
Tecgraf is Lua's birthplace, and the language has been used there since 1993.
Currently, more than thirty programmers in Tecgraf use Lua regularly,
who have written more than two hundred thousand lines of code,
distributed among dozens of final products.
Contact: Waldemar Celes
Multi Theft Auto (MTA) is a multi-player modification for Rockstar North's Grand Theft Auto game series. It is the world's first modification to incorporate multi-player into a single-player PC game.
Originally founded back in early 2003 as an experimental piece of software, Multi Theft Auto has since grown into an advanced multiplayer platform for gamers and third-party developers.
Starting with MTA for Grand Theft Auto: San Andreas, you can play Grand Theft Auto on-line with your friends, in your own custom created maps and gamemodes, powered by the Lua scripting language and currently (as of end 2006) 373 game specific Lua functions!
The use of Lua allows you to create virtually any gamemode or feature you like in the game. Examples and other cool Lua stuff can be found at our homepage.
Contact: Cecill Etheredge
Setup Factory 7.0 is a Windows software development
tool for creating compact software installers for deployment via web,
email, LAN, CD, DVD and floppy disk. Its compact single-file setup
creates little runtime overhead (~450KB including uninstall) making it
fast and easy to initialize and install. It uses Lua 5.0 as a scripting
language to control and customize the installation process.
Contact: Brett Kapilik
SciTE
Scintilla.org
SciTE is a SCIntilla based Text Editor.
Originally built to demonstrate Scintilla,
it has grown to be a generally useful editor with facilities
for building and running programs.
It is best used for jobs with simple configurations.
SciTE features a lot of modern editor features
(most provided by Scintilla)
like syntax highlighting of code,
call tips, autocompletion of code, folding, etc.
Since version 1.60,
Lua can be used to perform operations on the current buffer,
using the full API of the Scintilla component.
Contact: Neil Hodgson
AutoPlay Media Studio 5.0 is a unique software tool which allows you to quickly create your own custom Windows software, autoplay/autorun CD/DVD ROMs, and interactive multimedia presentations. Simply drag and drop rich media content such as photos, video, audio, Macromedia Flash content, text, HTML, and more directly into your project.
You can tie it all together with a powerful freeform scripting engine based on the popular Lua language. This easy-to-understand scripting language features everything from "for, repeat and while" loops, to "if/else" conditions, functions, variables and tables (associative arrays). We've included a library of 350+ powerful actions (high level functions) along with built-in mathematical and Boolean evaluation. The point-and-click "Action Wizard" and "Code Wizard" make is easy enough that even complete novices can add powerful interactivity to their projects. Advanced developers will appreciate the color syntax highlighting, code completion, function highlighting, as-you-type action prototypes and Ctrl+Space function listings.
Contact: Brett Kapilik
Homeworld 2
Relic Entertainment Inc
Homeworld2 is a space PC RTS game that uses Lua4 extensively in almost every aspect of the game, including the UI, AI, game rules, game flow, stats, game attributes, game tuning and automation.
Contact: Shelby Hubick
We use Lua for several parts of the project. We first
chose it to be the language for mission scripting (triggers and other
stuff), but currently we use Lua for mission scripting, sound scripting,
data definition language, general preprocess tools and other uses.
Contact: Dirk Ringe
GUPPY (Genetic Understanding Perspective Preview sYstem)
is a program for visualizing information
of sequence databases in molecular biology.
This program aims to accelerate computational tasks
for various studies in bioinformatics. Our current development involves
prototyping additional functions for some of active biological projects.
Lua language was embedded in this program in order to facilitate
data processing and scripting functions for layout of the
sequence map.
This program also features highly interactive operations for
smooth scrolling and zooming from the genomic landscape to discrete
nucleic acid sequences.
Contact: Yutaka Ueno
tomsrtbt is "The most Linux on one floppy disk" for:
rescue recovery panic & emergencies,
tools to keep in your shirt pockets,
whenever you can't use a hard drive.
Tomsrtbt includes a Lua interpreter with luasocket, md5, and regex libraries as well as vi and emacs editors, along with other tools. Utilities currently written in Lua include: wc unrpm-- undeb-- tee split login head grep dirname cut cmp basename dhcpcd--.
Contact: Tom Oehser
Soul Ride
Slingshot Game Technology
Soul Ride is a PC snowboarding game featuring expansive real-world terrain and physics-based gameplay and character animation.
We used stock Lua 3.2.2 in the engine as a configuration facility and console interface, and for scripting some game events. We dropped Lua into the engine late in development, and it proved to be simple, functional and headache-free.
Contact: Thatcher Ulrich
Crazy Ivan was the robot that won the RoboCup 2000 in Denmark. Crazy Ivan has a "brain" that uses Lua for scripting language. All AI and logic is done in Lua.
The brain is running on a Motorola Coldfire 5206e processor, and Lua is modified to use only int's as the Coldfire has no FPU.
Contact: Erik Hougaard
Last update:
Thu Apr 17 13:13:24 BRT 2008