Первая программа на Lua
Play ITЗагрузка интерактивного демо…
Первая программа на Lua
Где применяют Lua
Lua — лёгкий встраиваемый скриптовый язык (игры, nginx, Redis). Luau — типизированный диалект в Roblox. Мало ключевых слов, таблицы вместо массивов и словарей.
Первая программа — print("Hello") в lua или скрипт в Roblox Studio.
Теперь, когда вы познакомились с историей, философией и экосистемой Lua, пришло время сделать первый шаг — написать и запустить простейшую программу. Мы рассмотрим несколько сценариев, чтобы показать разнообразие использования языка:
Запуск классического скрипта на чистом Lua через интерпретатор.
- Работа с Roblox Studio — где используется диалект Luau.
- Добавление типов в Luau (статическая проверка).
- Запуск вне IDE — через командную строку.
Сценарий 1. Простая локальная программа
Шаг 1. Установите Lua
Для установки нам понадобится терминал:
- Windows:
winget install DEVCOM.Lua
- Linux (на примере Ubuntu):
sudo apt install lua5.4
- macOS:
brew install lua
Также можете самостоятельно скачать исходники с https://www.lua.org и установить. Ещё один удобный вариант - использовать установщик Lua for Windows.
Для проверки установки можно написать в терминале "lua -v" и увидеть версию.
Шаг 2. Создайте файл hello.lua
Откройте любой текстовый редактор (VS Code, Notepad++, Sublime Text) и создайте файл с расширением .lua, со следующим содержимым:
print("Hello, World!")
Сохраните его, например, в папке lua_projects/hello.lua.
Обратите внимание — никаких точек с запятой, фигурных скобок, классов или функций main. Это — вся программа.
Шаг 3. Запустите программу
В каталоге с hello.lua:
lua hello.lua
Вы увидите "Hello, World!" - и всё. Так выводится текст - поздравляю, первая программа готова - интерпретатор прочитал файл, скомпилировал его в байт-код, выполнил инструкцию print() - встроенную функцию для вывода текста и завершил работу. Всё просто. Никаких сборок, артефактов, JAR-файлов.
Так работают скриптовые и интерпретируемые языки.
Теперь попробуем запустить скрипт с переменными и функциями. Создадим новый файл greet.lua и добавим туда следующий код:
-- Функция с параметром
local function greet(name)
return "Hello, " .. name .. "!"
end
-- Вызов и вывод
local result = greet("Timur")
print(result)
Запуск второго примера:
lua greet.lua
Сценарий 2 — Roblox Studio
Теперь давайте перейдём к более реальной практике — особенно если вы будете обучать людей разработке игр. Roblox — один из самых массовых способов знакомства с программированием, и там используется Luau, диалект Lua.
Шаг 1 — Установите Roblox Studio
Перейдите на https://www.roblox.com/create.
Скачайте и установите Roblox Studio - это бесплатно.
Зарегистрируйтесь и авторизуйтесь.
После установки запустите программу, откроется окно создания проекта.
Шаг 2 — Туториал
При первом запуске Roblox Studio заботливо предложит вам пройти ознакомительное занятие - это довольно легко. Суть следующая:
- Перед вами откроется сцена с картой фэнтезийного стиля.
- Вам предложат сначала научиться управлять камерой и ориентироваться в пространстве (если вы играли хотя бы в одну игру на ПК, вы легко освоитесь, там обычное WASD управление).
- Затем вам покажут панель с ассетами - внутриигровыми материалами (это готовые модели и объекты для создания игр). Наберите в поиске ball, и в центре карты увидите шар.
- Нажав Play, вы сразу можете погрузиться в игру прямо в окне. Stop - вернуться в режим создания. Если вы подойдёте к шару, нажмите E и сядете в шар (как хомяк).
- Затем вам предложат познакомиться с добавлением новых объектов - вам предложат добавить треугольный объект, и расширить его, превратив в трамплин.
- Потом нужно будет настроить скорость шара в его свойствах - так вас познакомят с окном настройки свойств.
- После настройки можно будет нажать Play, сесть в шар, разогнаться и с помощью трамплина попасть шаром в одну из мишеней.
Вот и всё, на этом ознакомительный курс будет завершён, а вам предложат поизучать карту и объекты на ней.

Но вам лучше попробовать создать новую карту. Создайте новый проект, выберите шаблон, например Baseplate (пустая карта с платформой) или Empty (совсем чистый проект). Назовите проект, например, HelloWorldGame, и нажмите Create.
Затем добавьте скрипт - в дереве объектов слева найдите Workspace или ServerScriptService, правой кнопкой мыши кликните и нажмите Insert Object - Script. Автоматически будет создан файл с именем Script и откроется встроенный редактор кода.

Там уже будет код:
print("Hello world!")
Сохраните скрипт (Ctrl + S). Назовите его, например, HelloScript.
Предварительно перейдите на вкладку "Script" и включите Output:

И тогда, после нажатия на Play (запуска игры), вы увидите в самом низу вывод консоли с тем самым текстом из команды print():

Roblox Studio содержит встроенную VM на основе Lua (с модификациями Luau).
Скрипты в ServerScriptService выполняются на сервере. print() выводит сообщение в консоль разработчика. При нажатии Play запускается симуляция — как настоящая игра.
Можете немного усложнить работу. Luau позволяет добавлять аннотации типов. Это помогает избежать ошибок при масштабировании. Измените код скрипта:
local message: string = "Hello with types!"
print(message)
Тогда вы увидите подсветку типов, и даже ошибку, если попробуете присвоить число строке. Потому что вы указали "string" - прямо закрепив тип данных переменной message.
Усложним? Давайте сделаем что-то более полезное, но простое - при появлении игрока в мире будет выводиться приветствие. Для этого измените скрипт:
-- Получаем сервис игроков
local Players = game:GetService("Players")
-- Обработчик входа игрока
local function onPlayerAdded(player)
print(player.Name .. " joined the game!")
end
-- Подписываемся на событие
Players.PlayerAdded:Connect(onPlayerAdded)
Теперь при запуске вы увидите "<Ваш ник> joined the game!" в консоли. Это уже настоящая игровая логика: реакция на события, работа с API Roblox.
Частые ошибки
| Симптом | Причина |
|---|---|
lua: command not found | Интерпретатор не в PATH |
attempt to index nil | Объект не найден в Roblox — проверьте game:GetService |
| Скрипт не в Studio | Файл .lua нужно запускать через lua, в Roblox — в Explorer |
Что попробовать
- Таблица
notes = {}иtable.insert— мини-список в консоли. pairs/ipairs— обход таблицы.- Luau: аннотация
--!strictи типы в Roblox.
Частые ошибки
| Симптом | Причина |
|---|---|
lua: command not found | Интерпретатор не в PATH |
attempt to index nil | Объект не найден в Roblox — проверьте game:GetService |
| Скрипт не в Studio | Файл .lua нужно запускать через lua, в Roblox — в Explorer |
Что попробовать
- Таблица
notes = {}иtable.insert— мини-список в консоли. pairs/ipairs— обход таблицы.- Luau: аннотация
--!strictи типы в Roblox.
В подборках
Статья входит в тематические подборки и блок "С чего начать?" на главной. Соседние шаги того же маршрута:
Первые шаги (маршрут подборки) — Первая программа на Swift, Первая программа на Smalltalk, Первая программа на Rust, Первая программа на Groovy, Первая программа на Ruby, Первая программа на Haskell.