A scripting language is a subset of programming languages. It is somewhat difficult to say exactly where the dividing line is between the two. A scripting language can be as simple as a text configuration file, or as complicated as any Programming Language. It all depends on how much control the game developer wants to give the player. Usually, people do not call simple configuration files scripting languages; the term is typically reserved for something that actually looks like a programming language. The major difference between a programming language and a scripting language is probably in their practical application. Bona fide programming language are generally used to create standalone applications like a spreadsheet program or a Video Game, and in this case the source code is typically compiled long before it is executed (you usually only get the compiled form). To the contrary, scripting languages are used to control applications and their output, or "glue" them together, and are either compiled at runtime as needed, or directly interpreted. Note that the matter of translation time has little bearing on whether the language is considered scripting or programming, because there were standalone applications written in interpretive languages such as Basic, and a lot of scripting languages are now compiled, even if to an intermediate, "bytecode" form. There are two extremes in scripting languages (or sometimes different implementations of the same language):
- standalone (Python, Lisp) — these allow to write fully functional applications and have extensive libraries for this purpose, or
- embedded (Lua, Scheme, Squirrel) — these extensively use compilied functions of whatever application embeds them, thus have an Application Programming Interface built for speed and tend to be simplified (the entire Scheme standard is shorter than the index to "Common Lisp: the Language, 2nd Edition") themselves.
Popular Gaming Scripting LanguagesThese languages are frequently used for gaming, though they can be used in other ways.
- ECMAScript in various flavors:
- ActionScript — a compiled form used in Adobe Flash games.
- Python — also popular as an application language.
- Ruby Gaming Scripting System — A Ruby derived script, notably used in RPG Maker since XP.
- Many developers also have their own in-house scripting languages, e.g.:
- Unreal Script and Kismet — for Unreal Engine games. The two are a good example of the fuzzy grey area between programming and scripting. Unreal Script looks a lot like C++ and can affect a great deal of engine but is still beholden to the nitty gritty underlying code. Kismet is a visual language and can also do a great deal of engine work but more limited in scope and can thought of merely a visual representation of the underlying Unreal Script.
Popular Non-Gaming Scripting LanguagesSome of these could be used for gaming purposes, but rarely if ever are.
- Common Lisp/Emacs Lisp — used for many GNU applications.
- Scheme — a distinct small and streamlined dialect of Lisp, also widely used in GNU/GPL applications, including GIMP and some multimedia editors; has one Linux window manager and an Office suite build upon it.
- GOAL (Game Oriented Assembly Lisp) is a compiled variant used for the Jak and Daxter series.
- Korn/Bourne — shell scripts on Unix-like operating systems.
- Perl — known for having several uses; one use is interactive web pages.
- PHP — also used for interactive Web pages such as Wikipedia and TV Tropes.
- Windows and MS-DOS batch files — basically DOS and Windows's answer to shell scripts.