QuakeC
QuakeC — интерпретируемый язык программирования, разработанный в 1996 году Джоном Кармаком (id Software) для написания части компьютерной игры Quake. Используя QuakeC, программист имеет возможность модифицировать игру: добавить оружие, изменить игровую логику и физику, написать сложный сценарий. Язык может использоваться для контроля за многими аспектами игры, такими как искусственный интеллект (противников), триггеры, изменения на карте.
Исходный код QuakeC был опубликован в 1996 году, и использовался как основа для написания модов (таких как «Захват флага») к игре Quake. Программы на QuakeC компилируются в байт-код с помощью утилиты под названием qcc. Это позволило программистам опубликовывать свои моды без открытия исходного кода.
QuakeC использовался в Quake 1, в Quake 2 и более поздних играх Id Software он был заменен на подгружаемые динамические библиотеки операционной системы (.dll в Windows и .so в Unix) с нативным кодом, исполняемым процессором, вместо байткода. Это увеличило гибкость в создании модификаций Quake, например, стало возможно писать в любые файлы в файловой системе, но уменьшило безопасность (QuakeC выполнял код в безопасной «песочнице»). Но это не так страшно — код, содержащийся в библиотеке модификации, выполняется на Quake-сервере, а не на клиенте, подключающемуся к нему, так что просто подключившись к Quake-серверу, нельзя, например, заразиться трояном (не считая случаев с уязвимостями в клиенте типа переполнения буфера).
Причиной создания QuakeC, возможно, послужило то, что в системе MS-DOS, под которую была изначально выпущена игра Quake, отсутствовали «родные» системы подгрузки библиотек.