Путь
Изучайте Lua
Бесплатный интерактивный онлайн-курс Lua. Вы пишете код на Lua в каждом уроке — синтаксис, таблицы, функции, metatables и основы, нужные для скриптинга в Roblox и работы с игровыми движками, — с подсказками ИИ, когда что-то выдаёт nil, и бесплатным сертификатом по окончании.
52,312+ codders записались
- Для начинающих
Помощь ИИ при написании кода
Практические интерактивные уроки
Аудио-озвучка к каждому уроку
Тесты для проверки знаний
Бесплатный сертификат о прохождении
Программа
Раздел 1
Fundamentals
Начать разделНачатьРазвернутьСвернутьThe first section in Lua for absolute beginners.Введение
3 уроков216- 01ЯзыкЗадача
- 02Hello World!ЗадачаКвизАудио
- 03КомментарииКвизАудио
Переменные и типы данных
8 уроков754- 01Что такое переменная?ЗадачаКвизАудио
- 02ЧислаЗадачаКвизАудио
- 03СтрокиЗадачаКвизАудио
- 04Булевы значенияЗадачаКвизАудио
- 05Значение 'nil'ЗадачаКвизАудио
- 06Функция type()ЗадачаКвизАудио
- 07Правила именованияКвизАудио
- 08Итоги — Профиль персонажаЗадача
Операторы 1: Арифметика и конкатенация
6 уроков636- 01Арифметические операторыЗадачаКвизАудио
- 02Оператор остатка от деленияЗадачаКвизАудио
- 03Оператор возведения в степеньЗадачаКвизАудио
- 04Конкатенация строкЗадачаКвизАудио
- 05Приоритет операторовЗадачаКвизАудио
- 06Повторение: Простые вычисленияЗадача
Операторы 2: Сравнение и логика
8 уроков651- 01Операторы равенстваЗадачаКвизАудио
- 02Операторы сравненияЗадачаКвизАудио
- 03Оператор 'and'ЗадачаКвизАудио
- 04Оператор 'or'ЗадачаКвизАудио
- 05Оператор 'not'ЗадачаКвизАудио
- 06Сокращенные вычисленияКвизАудио
- 07Значения Truthy и FalsyКвизАудио
- 08Итоги: Простая логикаЗадача
Базовый вывод
9 уроков954- 01Вывод литераловЗадачаКвизАудио
- 02Вывод переменныхЗадачаКвизАудио
- 03Вывод нескольких значенийЗадачаКвизАудио
- 04Объединение строк и переменныхЗадачаКвизАудио
- 05Функция tostring()ЗадачаКвизАудио
- 06ВводЗадачаКвизАудио
- 07Приведение типовЗадачаКвизАудио
- 08Повторение — Отчет о состоянииЗадача
- 09Повторение — До 120Задача
Проект: Вывод характеристик персонажа
Проект5 уроков1- 01Приветственное сообщениеЗадача
- 02Объявление характеристик персонажаПроект
- 03Вывод основных характеристикПроект
- 04Добавление логического флагаПроект
- 05Итоговое резюмеПроект
Основы условной логики
4 уроков423- 01Оператор if-thenЗадачаКвизАудио
- 02Оператор if-then-elseЗадачаКвизАудио
- 03Оператор elseifЗадачаКвизАудио
- 04Итоги — Сундук с сокровищамиЗадача
Основы работы со строками
6 уроков638- 01string.len()ЗадачаКвизАудио
- 02string.upper и string.lowerЗадачаКвизАудио
- 03string.sub()ЗадачаКвизАудио
- 04string.rep()ЗадачаКвизАудио
- 05string.find()ЗадачаКвизАудио
- 06Повторение — Форматирование имени пользователяЗадача
Основы функций
6 уроков636- 01Объявление функцииЗадачаКвизАудио
- 02Вызов функцииЗадачаКвизАудио
- 03Функции с параметрамиЗадачаКвизАудио
- 04Функции с несколькими параметрамиЗадачаКвизАудио
- 05Оператор 'return'ЗадачаКвизАудио
- 06Повторение — Калькулятор площадиЗадача
Таблицы, часть 1: Списки
8 уроков752- 01Что такое таблица?КвизАудио
- 02Создание таблицыЗадачаКвизАудио
- 03Доступ к элементам по индексуЗадачаКвизАудио
- 04Изменение элементов по индексуЗадачаКвизАудио
- 05Оператор длины '#'ЗадачаКвизАудио
- 06table.insert()ЗадачаКвизАудио
- 07table.remove()ЗадачаКвизАудио
- 08Итоги: управление участниками группыЗадача
Таблицы 2: Словарный стиль
7 уроков648- 01Пары ключ-значениеКвизАудио
- 02Создание таблиц-словарейЗадачаКвизАудио
- 03Доступ: квадратные скобкиЗадачаКвизАудио
- 04Доступ через точечную нотациюЗадачаКвизАудио
- 05Добавление и изменение парЗадачаКвизАудио
- 06Удаление пар с помощью nilЗадачаКвизАудио
- 07Итоги: свойства элементовЗадача
Основы циклов
6 уроков636- 01Цикл whileЗадачаКвизАудио
- 02Цикл repeat-untilЗадачаКвизАудио
- 03Числовой цикл forЗадачаКвизАудио
- 04Цикл for с шагомЗадачаКвизАудио
- 05Оператор 'break'ЗадачаКвизАудио
- 06Повторение — Обратный отсчётЗадача
Проект: Простой магазин зелий
Проект6 уроков1- 01Настройка проектаЗадача
- 02Добавление зельяПроект
- 03Отображение инвентаряПроект
- 04Расчет общей стоимости запасовПроект
- 05Поиск конкретного зельяПроект
- 06Продажа зельяПроект
Область видимости переменных
5 уроков330- 01Глобальные переменныеКвизАудио
- 02Локальные переменныеЗадачаКвизАудио
- 03Зачем использовать локальные переменные?КвизАудио
- 04Область видимости и блокиЗадачаКвизАудио
- 05Повторение — Головоломка на область видимостиЗадача
Финальные испытания
3 уроков3- 01Повторение — Ход игрокаЗадача
- 02Повторение — Простая база данныхЗадача
- 03Повторение — Сумма чётных чиселЗадача
Раздел 2
Logic & Flow
Начать разделНачатьРазвернутьСвернутьDevelop problem-solving skills and create dynamic, interactive programsПродвинутая итерация таблиц
4 уроков423- 01Итерация с помощью pairs()ЗадачаКвиз
- 02Итерация с помощью ipairs()ЗадачаКвиз
- 03pairs() против ipairs()ЗадачаКвиз
- 04Повторение — Лист персонажаЗадача
Дополнительные функции библиотеки table
5 уроков430- 01table.concat()ЗадачаКвиз
- 02Создание таблиц и unpack()ЗадачаКвиз
- 03table.sort()ЗадачаКвиз
- 04Пользовательская сортировка с помощью функцийКвиз
- 05Итоги — Таблица рекордовЗадача
Продвинутые концепции функций
6 уроков539- 01Возврат нескольких значенийКвиз
- 02Вариативные функции (...)ЗадачаКвиз
- 03Функции как объекты первого классаЗадачаКвиз
- 04Анонимные функцииЗадачаКвиз
- 05Что такое замыкание?ЗадачаКвиз
- 06Итоги — простой обработчик событийЗадача
Введение в метатаблицы
8 уроков757- 01Что такое метатаблица?Квиз
- 02setmetatable и getmetatableЗадачаКвиз
- 03Метаметод __indexЗадачаКвиз
- 04Метаметод __newindexЗадачаКвиз
- 05Метаметод __tostringЗадачаКвиз
- 06Арифметические метаметоды. Часть 1ЗадачаКвиз
- 07Арифметические метаметоды. Часть 2ЗадачаКвиз
- 08Итоги — Таблица только для чтенияЗадача
Проект: Движок текстового квеста
Проект8 уроков1- 01Настройка проекта: КомнатаЗадача
- 02Соединение комнатПроект
- 03Состояние игрокаПроект
- 04Игровой циклПроект
- 05Обработка пользовательского вводаПроект
- 06Перемещение игрокаПроект
- 07Обработка некорректных ходовПроект
- 08Отображение выходовПроект
Обработка ошибок
3 уроков216- 01Функция error()Квиз
- 02Защищенные вызовы с pcall()ЗадачаКвиз
- 03Повторение — безопасное делениеЗадача
Продвинутая работа со строками
6 уроков641- 01string.gsub() для подстановкиЗадачаКвиз
- 02Введение в строковые шаблоныЗадачаКвиз
- 03string.find()ЗадачаКвиз
- 04string.match()ЗадачаКвиз
- 05Итерация с помощью string.gmatch()ЗадачаКвиз
- 06Итоги — Парсер лог-файловЗадача
Проект: Список контактов
Проект7 уроков1- 01Настройка проектаЗадача
- 02Основной циклПроект
- 03Добавление контактаПроект
- 04Список всех контактовПроект
- 05Поиск контактаПроект
- 06Удаление контактаПроект
- 07Обработка некорректного вводаПроект
Корутины для начинающих
7 уроков638- 01Что такое корутина?Квиз
- 02coroutine create и resumeЗадачаКвиз
- 03Пауза с помощью coroutine.yield()ЗадачаКвиз
- 04resume и yieldЗадачаКвиз
- 05Проверка статуса корутиныЗадачаКвиз
- 06Итоги — Генератор чиселЗадача
- 07Итоги — Векторная математикаЗадача
Раздел 3
Object Oriented Programming
Начать разделНачатьРазвернутьСвернутьDiscover how to organize code with classes, objects, and reusable structuresКонцепция 'self'
5 уроков532- 01Таблицы с функциямиЗадачаКвиз
- 02Явный 'self'ЗадачаКвиз
- 03Синтаксис с двоеточиемЗадачаКвиз
- 04Точка против двоеточияЗадачаКвиз
- 05Итоги — Движущаяся точкаЗадача
Паттерн прототипа класса
6 уроков641- 01Концепция прототипаЗадачаКвиз
- 02Связывание через __indexЗадачаКвиз
- 03Конструктор :new()ЗадачаКвиз
- 04Инициализация атрибутовЗадачаКвиз
- 05Независимые экземплярыЗадачаКвиз
- 06Итоги — АвтозаводЗадача
Состояние и поведение объектов
7 уроков748- 01Переменные экземпляраЗадачаКвиз
- 02ГеттерыЗадачаКвиз
- 03СеттерыЗадачаКвиз
- 04Вычисляемые свойстваЗадачаКвиз
- 05Форматирование строкЗадачаКвиз
- 06Проверка на равенствоЗадачаКвиз
- 07Повторение — Оценка студентаЗадача
Проект: Цифровой банк
Проект7 уроков1- 01Настройка проектаЗадача
- 02Метод пополненияПроект
- 03Метод снятияПроект
- 04Получение балансаПроект
- 05Информация о счетеПроект
- 06Перевод средствПроект
- 07Финальное тестирование банкаПроект
Перегрузка операторов в ООП
5 уроков531- 01Сложение объектовЗадачаКвиз
- 02Вычитание объектовЗадачаКвиз
- 03Конкатенация объектовЗадачаКвиз
- 04Сравнение объектов (<, >)ЗадачаКвиз
- 05Повторение — Математика кошелькаЗадача
Основы наследования
6 уроков643- 01Настройка наследованияЗадачаКвиз
- 02Наследование методовЗадачаКвиз
- 03Расширение конструктораЗадачаКвиз
- 04Добавление дочерних методовЗадачаКвиз
- 05Общее и уникальноеЗадачаКвиз
- 06Итоги: Иерархия фигурЗадача
Полиморфизм и переопределение
6 уроков640- 01Переопределение методовЗадачаКвиз
- 02Вызов родительских методовЗадачаКвиз
- 03Утиная типизацияЗадачаКвиз
- 04Общий интерфейсЗадачаКвиз
- 05Проверка типаЗадачаКвиз
- 06Итоги — Роли сотрудниковЗадача
Инкапсуляция
6 уроков644- 01Соглашения об именованииЗадачаКвиз
- 02Замыкания для приватностиЗадачаКвиз
- 03Доступ через замыканияЗадачаКвиз
- 04Таблицы только для чтенияЗадачаКвиз
- 05Логика валидацииЗадачаКвиз
- 06Итоги — Защищенное хранилищеЗадача
Композиция и примеси
6 уроков642- 01Отношение "Has-A"ЗадачаКвиз
- 02ДелегированиеЗадачаКвиз
- 03Простые примесиЗадачаКвиз
- 04Применение нескольких примесейЗадачаКвиз
- 05Примеси против наследованияЗадачаКвиз
- 06Итоги — Сборка роботаЗадача
Проект: Менеджер фигур
Проект7 уроков1- 01Настройка проектаЗадача
- 02Класс RectangleПроект
- 03Класс CircleПроект
- 04Метод PerimeterПроект
- 05Коллекция фигурПроект
- 06Общая площадьПроект
- 07Фильтрация фигурПроект
Паттерны проектирования (Lite)
5 уроков532- 01Фабричные функцииЗадачаКвиз
- 02Таблица SingletonЗадачаКвиз
- 03Паттерн IteratorЗадачаКвиз
- 04Observer (Слушатель)ЗадачаКвиз
- 05Итоги — Logger FactoryЗадача
Финальные испытания
4 уроков4- 01Повторение: Система инвентаряЗадача
- 02Повторение: Менеджер пользователейЗадача
- 03Повторение: Трекер счетаЗадача
- 04Итоговая проверка ООПЗадача
Почему стоит изучать Lua на Coddy
- Запускайте настоящий код Lua прямо в браузере. Никакого интерпретатора Lua, никакой настройки toolchain. Каждый урок выполняет ваш Lua-скрипт на сервере и сразу показывает результат.
- Lua в реальном применении: переменные, управляющие конструкции, функции, таблицы (единственная настоящая структура данных в Lua), работа со строками, метатаблицы и паттерны OOP, обработка ошибок. Основы Lua, которые нужны для Roblox, Love2D или встраиваемого скриптинга.
- Подсказки ИИ помогают отлаживать Lua-скрипты и разбирать ошибки, не выдавая готового решения, — так типичные грабли вроде индексирования nil и массивов с единицы превращаются в полезные уроки.
- Бесплатный сертификат по Lua после завершения курса. Весомое дополнение к играм на Roblox, модам или встроенным скриптам, которые вы уже сделали.
Частые вопросы об изучении Lua
Для чего используется Lua?
Lua в основном используется как встраиваемый скриптовый язык внутри более крупных приложений, особенно в игровых движках. Скрипты для Roblox (Luau — это специфичный для Roblox диалект Lua), Love2D, аддоны для World of Warcraft, Defold и Garry's Mod — везде используется Lua. Помимо игр, Lua применяется для конфигурации, автоматизации и во встраиваемых системах.
Легко ли выучить Lua?
Lua — один из самых маленьких и простых языков программирования: весь справочник умещается в короткий PDF, а основная структура данных по сути одна (таблица). Большинство новичков пишут свою первую рабочую программу на Lua уже в первый час. Более сложные вещи (metatables, замыкания, корутины) появляются позже и вводятся постепенно.
Стоит ли учить Lua ради Roblox?
Да. Lua (а точнее, диалект Luau, который использует Roblox) — единственный язык скриптинга для игр на Roblox. Курс по Lua охватывает тот же базовый язык, на котором построен Luau (переменные, таблицы, функции, метатаблицы, OOP-паттерны), так что после его прохождения у вас будет реальный задел для скриптинга в Roblox.
Сколько времени нужно, чтобы выучить Lua?
Основы Lua — переменные, условия, циклы, функции, таблицы — занимают одну-две недели ежедневной практики. Чтобы освоиться с metatables, замыканиями и OOP-паттернами в Lua, обычно нужно ещё две-четыре недели. А дальше применение Lua внутри Roblox или другого игрового движка — это уже отдельная кривая обучения поверх самого языка.
Можно ли изучать Lua онлайн бесплатно?
Да. Интерактивный курс по Lua бесплатный — уроки, практические задания, тесты и сертификат. Lua выполняется на сервере, так что не нужно устанавливать Lua или игровой движок локально, чтобы начать писать код.
Будет ли сертификат после курса Lua?
Да. После прохождения курса Lua вы получаете бесплатный сертификат, который можно добавить в резюме или опубликовать в LinkedIn вместе с играми для Roblox, модами и скриптовыми проектами, которые вы успели сделать.