Роблокс Lua Learning (0)
Приветствую на моём посте
Сегодня я расскажу и покажу, что такое язык Lua и как он работает
Научиться этому языку довольно просто, сегодня я расскажу про пару функций этого языка.
Для начала нам нужно открыть Roblox Studio.
После того, как вы открыли Studio вам нужно выбрать New, после чего выбрать Baseplate
Попробуем сделать что-нибудь простое, например платформу, которая будет летать с 1 края на другой
Для начала делаем детали, которые нам нужны
В детали, которая будет платформой создаём BodyPosition, после чего создаём там скрипт
На языке Lua, как я уже говорил ранее, всё просто.
Попробуем продумать, что именно нам нужно.
Нужно, чтобы позиция платформы поменялась на позицию 1 края, после, например через 2 секунды на позицию 2 края, после подождать 2 секунды и повторить опять.
Теперь я переведу это на язык Lua
Скрипт.Родитель.Позиция переделать на Игра.Угол1.Позиция
Скрипт.Родитель.Позиция переделать на Игра.Угол2.Позиция
Это и есть наш скрипт
Как вы наверное поняли, предложения соответствуют скрипту, поэтому вам лишь нужно придумать, как сказать то, что вы хотите сделать, после чего написать скрипт.
(Это был лишь пробный выпуск Lua Learning, в дальнейшем я планирую сделать 2 часть, где я подробно объясню, что значат какие-либо команды)
Создание игр для Roblox
Ученики научатся создавать игровой мир и 3D‑модели для своих игр, а потом оживлять этот мир с помощью программирования на Lua.
Чему научатся дети
На практическом курсе по созданию игр на Roblox дети научатся
План обучения и проекты
Трехмерное моделирование, работа с трехмерными объектами
1. Интерфейс Роблокс-студио, изучение процесса создания игры.
2. Дизайн игрового пространства
3. Создание сложных объектов
4. Работа с объектами из тулбокса и знакомство со скриптом
Проработка окружающего мира, основы программирования на Lua
1. Блочное моделирование
2. Особенности создания пути игрока
3. Разработка игровой локации
4. Доработка игровой локации
Программирование на Lua
1. Работа с памятью компьютера, переменные в Lua
2. Циклы: бесконечный цикл, цикл с условием выхода в Lua
3. Создание космической станции, часть 1
4. Создание космической станции, часть 2
Разработка игры “Tower of hell”, часть 1
2. Функции и события в Lua, скрипт KillScript
3. Лестницы, как способ углубления геймплея
Разработка игры “Tower of hell”, часть 2
1. Углубленное изучение TweenService
2. Изменение параметров анимации TweenService
3. Объединение скриптов TweenService и KillScript
4. Завершение работы над игрой
Разработка игры-кликера, Часть 1
1. Создание игры-кликера
2. Введение в графический интерфейс
3. Создание блоков взаимодействия
4. Интро, как элемент GUI
Разработка игры-кликера, Часть 2
1. Мультиплеер в Roblox, управление игроками
2. Мультиплеер: дизайн и скриптинг игрового Лобби
3. Доработка игры, дебаг и тестирование
4. Введение в игровой маркетинг
Свой проект
1. Разработка игрового мира
2. Скриптинг основного геймплея
3. Скриптинг GUI, доработка деталей
4. Презентация игры
Работы учеников
Мы уверены, что учитьcя на практике эффективнее. Поэтому у нас нет скучных лекций, и на занятиях дети создают реальные игры и программы.
Flappy Bird — мой первый игровой проект на PyGame! Нажимайте «пробел» и прыгайте!
Собрала 17 фактов о животных на сайте. Нажимайте Пуск и читайте 🙂
Игра где вы сможете побыть рыбаком на причале или на лодке. На причале есть 5 видов рыб
Привет! ты попал в Minecraft 2D
Преподаватели
Александр Хархота
Сибирский государственный университет телекоммуникаций и информатики
Создание 3D-игр: основы языка Lua
И снова рады приветствовать в онлайн школе программирования «Пиксель». Мы находимся на втором уроке, и сегодня нашей главной темой станет — roblox lua. Поехали. Мы разбираем основные этапы по созданию игры в roblox с помощью lua. И в конце вас ждет приятный сюрприз, мы сделаем шутер!
Заходим в интерфейс
В интерфейсе роблокс луа выбираем карту flat terrain. Ждем загрузки. Будем делать место появления нашего персонажа «spawn». Переходим во вкладку «model». Камеру перемещаем так, чтобы видно было нужное место. И жмем «spawn». Если хотите отредактировать, изменить место, то помогут режимы «select» и «move». Они расположены сверху в левом углу экрана. Проверяем работу. Кликаем на вкладку home. И жмем «play», чтобы запустить игру. Вот, так потихоньку осваиваем роблокс и язык программирования lua. Нажали, и видим, что персонаж стоит на месте появления «spawn». Но в одиночку неинтересно бегать по карте.
Превращаем игру в шутер!
Давайте уменьшим урон от его пулей. Нажимаем левой кнопкой мыши на скрипт «control». Появился код. И как вы догадались, это lua язык программирования. Находим 89 строчку (номера строк указаны). Меняем в коде значение 67,5 на 2,5. Таким образом мы уменьшили урон от его пистолета. Но один враг — это не интересно. Давайте сделаем несколько копий. Закрываем скрипт.
Множим врагов
Переходим к основам
Этот код предназначен для не профессиональных пользователей. Внимание уделяется простате дизайна и легкости обучения. Поэтому он идеально подходит для обучения на начальном этапе. Смотрите наши уроки роблокс или записывайтесь в онлайн школу Пиксель.
Создаем первый скрипт: набор инструкций для компьютера
Смотрим главное меню с шаблонами, выбираем Baseplate. Нажимаем на плюсик возле Workspace и выбираем скрипт. Открылся первый скрипт, и в нем строчка — print («hello world»). Print — это команда с помощью которой мы печатаем в окне Output. Чтобы его увидеть, мы нажимаем на кнопку vew. Далее, кликаем command bar, и окно появится.
Roblox = «Привет, маленькие кодеры!». Говорим компьютеру, чтобы он нам это напечатал: print (roblox). Кстати, чтобы запустить программу можно нажать на кнопку f5. Теперь в командной строке мы видим наше приветствие. Что мы сделали? Задали символы, написав наш текст. И потом с помощью команды print вывели его на экран. Так, можно создавать реальные объекты на игровой сцене при запуске игры. Используем специальную команду Instance.new
A = Instance.new. В кавычках указываем название объекта, который создаем. У нас это блок: a = Instance.new («part»). Укажем, где его создаем: a = Instance.new («part», Workspace). Будем изменять свойство создаваемых объектов. Давайте начнем с изменения размера объекта. Не забываем, что после имени переменной ставится точка, и прописывается название свойства. Вернемся к размеру: a. size. Так как размер — это трехмерная величина, создадим обращение: a. size= vector 3.new (это обязательное условие для изменения всех трехмерных свойств: размера, местоположения и. т. д).
Запишем новые параметры кубика: a. size= vector 3.new (50, 50, 50). Это размеры по трем осям (x, y, z).
Поменяем положение объекта в пространстве: a.position = vector 3.new (0, 100, 0). То есть по оси x и по оси z координаты равны нулю, а по оси y значение 100.
Чтобы сделать рандомный цвет, задаем: a.brickcolor=brickcolor. random
Вы поняли, как создавать обычный кубик. Мы еще можем задать другие предметы. Например, сообщение, которое выводится на игровой экран: X= Instance.new («message»). Укажем, где мы будем это выводить: x= Instance.new («message», Workspace). Печатаем текст: x.text = «Привет, мы изучаем программирование!»
Запускаем
Жмем «play». Видим появилась надпись! И она будет все время висеть на экране. Тут же примостился парящий в воздухе блок с измененными размерами и высотой. Сделаем так, чтобы надпись пропадала через 10 секунд. Жмем «stop», переходим в скрипт. Впишем команду wait (10). Компьютер подождет 10 секунд и удалит надпись. Как? X: remove (10)
Онлайн школа «Пиксель»
Итак, сегодня мы познакомились с roblox lua и создали собственный шутер. Если понравилось, записывайтесь в школу для детей «Пиксель». У нас просто, интересно и полезно.
Смотрите видео «Создание 3D-игр: основы языка Lua»
Roblox Lua Style Guide¶
This style guide aims to unify as much Lua code at Roblox as possible under the same style and conventions.
This guide is designed after Google’s C++ Style Guide. Although Lua is a significantly different language, the guide’s principles still hold.
Guiding Principles¶
File Structure¶
Files should consist of these things (if present) in order:
Requires¶
Use relative paths when importing modules from the same package.
Use absolute paths when importing modules from a different package.
Metatables¶
Metatables are an incredibly powerful Lua feature that can be used to overload operators, implement prototypical inheritance, and tinker with limited object lifecycle.
At Roblox, we limit use of metatables to a couple cases:
Prototype-based classes¶
The most popular pattern for classes in Lua is sometimes referred to as the One True Pattern. It defines class members, instance members, and metamethods in the same table and highlights Lua’s strengths well.
First up, we create a regular, empty table:
Next, we assign the __index member on the class back to itself. This is a handy trick that lets us use the class’s table as the metatable for instances as well.
When we construct an instance, we’ll tell Lua to use our __index value to find values that are missing in our instances. It’s sort of like prototype in JavaScript, if you’re familiar.
We can also define methods that operate on instances. These are just methods that expect their first argument to be an instance. By convention, we define them using a colon ( : ):
At this point, our class is ready to use!
We can construct instances and start tinkering with it:
Further additions you can make to your class as needed:
Add a method to check type given an instance, like:
Guarding against typos¶
Indexing into a table in Lua gives you nil if the key isn’t present, which can cause errors that are difficult to trace!
Our other major use case for metatables is to prevent certain forms of this problem. For types that act like enums, we can carefully apply an __index metamethod that throws:
Since __index is only called when a key is missing in the table, MyEnum.A and MyEnum.B will still give you back the expected values, but MyEnum.FROB will throw, hopefully helping engineers track down bugs more easily.
General Punctuation¶
General Whitespace¶
No vertical alignment!
Use a single empty line to express groups when useful. Do not start blocks with a blank line. Excess empty lines harm whole-file readability.
Use one statement per line. Put function bodies on new lines.
This is especially true for functions that return multiple values. Compare these two statements:
It’s much easier to spot the mistake (and much harder to make in the first place) if the function isn’t on one line.
This is also true for if blocks, even if their body is just a return statement.
Most of the time this pattern is used, it’s because we’re performing validation of an input or condition. It’s much easier to add logging, or expand the conditional, when the statement is broken across multiple lines. It will also diff better in code review.
Put a space before and after operators, except when clarifying precedence.
Put a space after each commas in tables and function calls.
When creating blocks, inline any opening syntax elements.
Avoid putting curly braces for tables on their own line. Doing so harms readability, since it forces the reader to move to another line in an awkward spot in the statement.
Newlines in Long Expressions¶
First, try and break up the expression so that no one part is long enough to need newlines. This isn’t always the right answer, as keeping an expression together is sometimes more readable than trying to parse how several small expressions relate, but it’s worth pausing to consider which case you’re in.
It is often worth breaking up tables and arrays with more than two or three keys, or with nested sub-tables, even if it doesn’t exceed the line length limit. Shorter, simpler tables can stay on one line though.
Prefer adding the extra trailing comma to the elements within a multiline table or array. This makes it easier to add new items or rearrange existing items.
Break dictionary-like tables with more than a couple keys onto multiple lines.
Break list-like tables onto multiple lines however it makes sense.
For long argument lists or longer, nested tables, prefer to expand all the subtables. This makes for the cleanest diffs as further changes are made.
In some situations where we only ever expect table literals, the following is acceptable, though there’s a chance automated tooling could change this later. In particular, this comes up a lot in Roact code ( doSomething being Roact.createElement ).
However, this case is less acceptable if there are any non-tables added to the mix. In this case, you should use the style above.
For long expressions try and add newlines between logical subunits. If you’re adding up lots of terms, place each term on its own line. If you have parenthesized subexpressions, put each subexpression on a newline.
For long conditions in if statements, put the condition in its own indented section and place the then on its own line to separate the condition from the body of the if block. Break up the condition as any other long expression.
Blocks¶
Use do blocks if limiting the scope of a variable is useful.
Literals¶
Use double quotes when declaring string literals.
Tables¶
Add trailing commas in multi-line tables.
Functions¶
Always use parentheses when calling a function. Lua allows you to skip them in many cases, but the results are typically much harder to parse.
Declare named functions using function-prefix syntax. Non-member functions should always be local.
Comments¶
Use single line comments for inline notes:
Use block comments for documenting items:
Comments should focus on why code is written a certain way instead of what the code is doing.
No section comments.
Some examples of ways of breaking up files:
If you can’t break the file up, and still feel like you need section headings, consider these alternatives.
If you want to put a section header on a group of functions, put that information in a block comment attached to the first function in that section. You should still make sure the comment is about the function its attached to, but it can also include information about the section as a whole. Try and write the comment in a way that makes it clear what’s included in the section.
The same can be done for a group of variables in some cases. All the same caveats apply though, and you have to consider whether one block comment or a normal comment on each variable (or even using just whitespace to separate groups) would be more readable.
Naming¶
Yielding¶
Pros:
Cons:
Unintended yielding can cause hard-to-track data races. Simple code involving callbacks can cause confusing bugs if the input callback yields.
Error Handling¶
Do not throw errors except when validating correct usage of a function.
Pros:
Cons:
Exceptions:
Создание 3D-игр: основы языка Lua
И снова рады приветствовать в онлайн школе программирования «Пиксель». Мы находимся на втором уроке, и сегодня нашей главной темой станет — roblox lua. Поехали. Мы разбираем основные этапы по созданию игры в roblox с помощью lua. И в конце вас ждет приятный сюрприз, мы сделаем шутер!
Заходим в интерфейс
В интерфейсе роблокс луа выбираем карту flat terrain. Ждем загрузки. Будем делать место появления нашего персонажа «spawn». Переходим во вкладку «model». Камеру перемещаем так, чтобы видно было нужное место. И жмем «spawn». Если хотите отредактировать, изменить место, то помогут режимы «select» и «move». Они расположены сверху в левом углу экрана. Проверяем работу. Кликаем на вкладку home. И жмем «play», чтобы запустить игру. Вот, так потихоньку осваиваем роблокс и язык программирования lua. Нажали, и видим, что персонаж стоит на месте появления «spawn». Но в одиночку неинтересно бегать по карте.
Превращаем игру в шутер!
Давайте уменьшим урон от его пулей. Нажимаем левой кнопкой мыши на скрипт «control». Появился код. И как вы догадались, это lua язык программирования. Находим 89 строчку (номера строк указаны). Меняем в коде значение 67,5 на 2,5. Таким образом мы уменьшили урон от его пистолета. Но один враг — это не интересно. Давайте сделаем несколько копий. Закрываем скрипт.
Множим врагов
Переходим к основам
Этот код предназначен для не профессиональных пользователей. Внимание уделяется простате дизайна и легкости обучения. Поэтому он идеально подходит для обучения на начальном этапе. Смотрите наши уроки роблокс или записывайтесь в онлайн школу Пиксель.
Создаем первый скрипт: набор инструкций для компьютера
Смотрим главное меню с шаблонами, выбираем Baseplate. Нажимаем на плюсик возле Workspace и выбираем скрипт. Открылся первый скрипт, и в нем строчка — print («hello world»). Print — это команда с помощью которой мы печатаем в окне Output. Чтобы его увидеть, мы нажимаем на кнопку vew. Далее, кликаем command bar, и окно появится.
Roblox = «Привет, маленькие кодеры!». Говорим компьютеру, чтобы он нам это напечатал: print (roblox). Кстати, чтобы запустить программу можно нажать на кнопку f5. Теперь в командной строке мы видим наше приветствие. Что мы сделали? Задали символы, написав наш текст. И потом с помощью команды print вывели его на экран. Так, можно создавать реальные объекты на игровой сцене при запуске игры. Используем специальную команду Instance.new
A = Instance.new. В кавычках указываем название объекта, который создаем. У нас это блок: a = Instance.new («part»). Укажем, где его создаем: a = Instance.new («part», Workspace). Будем изменять свойство создаваемых объектов. Давайте начнем с изменения размера объекта. Не забываем, что после имени переменной ставится точка, и прописывается название свойства. Вернемся к размеру: a. size. Так как размер — это трехмерная величина, создадим обращение: a. size= vector 3.new (это обязательное условие для изменения всех трехмерных свойств: размера, местоположения и. т. д).
Запишем новые параметры кубика: a. size= vector 3.new (50, 50, 50). Это размеры по трем осям (x, y, z).
Поменяем положение объекта в пространстве: a.position = vector 3.new (0, 100, 0). То есть по оси x и по оси z координаты равны нулю, а по оси y значение 100.
Чтобы сделать рандомный цвет, задаем: a.brickcolor=brickcolor. random
Вы поняли, как создавать обычный кубик. Мы еще можем задать другие предметы. Например, сообщение, которое выводится на игровой экран: X= Instance.new («message»). Укажем, где мы будем это выводить: x= Instance.new («message», Workspace). Печатаем текст: x.text = «Привет, мы изучаем программирование!»
Запускаем
Жмем «play». Видим появилась надпись! И она будет все время висеть на экране. Тут же примостился парящий в воздухе блок с измененными размерами и высотой. Сделаем так, чтобы надпись пропадала через 10 секунд. Жмем «stop», переходим в скрипт. Впишем команду wait (10). Компьютер подождет 10 секунд и удалит надпись. Как? X: remove (10)
Онлайн школа «Пиксель»
Итак, сегодня мы познакомились с roblox lua и создали собственный шутер. Если понравилось, записывайтесь в школу для детей «Пиксель». У нас просто, интересно и полезно.




















