Roblox — открытая система разработки игр и онлайн-гейминга, доступная в интернете. Она дает возможность не просто играть, но и программировать приложения для других пользователей. Можно не только получать удовольствие от захватывающего геймплея, но и заниматься творчеством.
В этой статье мы постараемся научить основам программирования на Roblox, с которыми уже можно браться за свой первый проект!
Roblox – чрезвычайно популярная платформа создания игр, особенно среди детей, изучающих программирование. Ежемесячно в Roblox разрабатывают свои игры или просто играют 100 миллионов пользователей со всего мира.
Платформу часто используют в преподавании основ программирования для детей: Roblox — прекрасный шанс заинтересовать ребенка кодингом. Существуют бесплатные видеоканалы на YouTube с уроками по изучению языка Lua в Roblox. Есть также тематические онлайн и офлайн курсы программирования для детей. И они становятся с каждым годом все более востребованными.
Если говорить о программировании пользовательских проектов, то в системе для этого используется специальный клиент – Roblox Studio. Пользователь скачивает его и при посредничестве этой вспомогательной платформы передает онлайн платформе код своего проекта. Разработка игр в Roblox ведется на объектно-ориентированном языке Lua. Система скриптов, которую вы создадите, генерирует игровой мир, те или иные действия и события в игре.
Примечание: существуют языки, поддерживающие и не поддерживающие объектно-ориентированное программирование. Если грубо, первые отличаются тем, что их синтаксис позволяет создавать классы – специальную конструкцию, описывающую объект реальной жизни.
Можно создать класс «Автомобиль» или «Муравей». В классе можно прописать свойства некоего предмета и его методы. Автомобиль может обладать свойством «размер» и функцию, в которой содержится код поведения автомобиля во время езды, то есть метод класса «Автомобиль». Класс – своеобразный чертеж предмета. На его основе можно на разных этапах реализации программы создавать объекты: практическую реализацию класса, скажем, в игре. Объекты могут иметь в основе один класс, но отличаться. Автомобиль может быть красным, может быть и зеленым.
При создании объекта (которых может быть множество), ему можно передать новые свойства. Так мы и получим красную и зеленую машины, едущие по шоссе рядом. Синтаксис создания объекта на Lua: Object object = createObject(Model model, float atX, float atY, float atZ). В модели передаются методы работы с объектом, а координаты далее являются его свойствами – описывают местоположения объекта.
Типы данных… С них начинаются книги по основам программирования для детей. Roblox Studio и Lua известны четыре главных типа данных. Как в других языках программирования, разработчик должен умело их комбинировать и осторожно применять.
Писать код таким образом, чтобы с ними не возникло путаницы, в результате которой в коде возникнет ошибка и красочный игровой мир погаснет.
Это часто случается, когда в метод объекта попадает переменная не того типа. Первый тип данных – строки, или текст. Строки представляют собой слова или фразы, записанные буквами, например «бла-бла-бла». В Lua их надо выделять с обеих сторон либо оператором двойные кавычки("), либо одинарными кавычками (‘).
Следующий тип числовой. К этому типу относятся целые, действительные числа, например, 1,2,3,4. В этот тип нельзя записать дроби и десятичные числа, иначе их называют «числа с плавающей точкой».
Логический тип или булевы значения. Это третий тип данных. Включает простейшие значения компьютерного языка. Логическое «да» и «нет». Например, утверждение в операторе if может быть истинно – тогда вернется true или ложно – в этом случае получаем false.
Есть еще четвертый главный тип в Roblox – ссылка на объект, или ObjectValue (объект, единственное смысл которого ссылаться на другой объект). Пример: game.Workspace.Part.
Примечание: дело в том, что Lua является объектно-ориентированным языком частично. Многие классы и объекты встроены в Roblox и вы создаете их в своей игре путям генерации ссылки.
В программировании переменная представляет собой область памяти, в которой можно хранить данные различных типов.
Мы уже поговорили о типах данных в Lua. Есть языки, в которых в переменную можно положить только тот тип данных, который был положен и заявлен при ее создании.
В Lua и Roblox переменные не типизированы. По мере использования вы можете записать в них разные данные. Будьте внимательны! В Roblox переменную надо вводить с помощью функции local. Например, так можно создать переменную и положить в нее строку.
Класс — это план объекта, а объект — реализация. В методе объекта вы можете использовать функцию print(). В оффлайн и онлайн айти-школах для детей на этой теме долго не задерживаются. Это одна из самых основных и простых в программировании на платформе Roblox функций. С ее помощью можно вывести какое-либо сообщение.
Пользователь пишет “print”, затем в скобках указывает “Hello World” в кавычках. Далее, запустив код, в окне результата работы программы Roblox Studio начинающий программист увидит “Hello World”.
Вы можете выводить таким способом строки, результаты математических вычислений, содержимое переменных. Если вы создаете переменную, например так: local message = “Hello World”, то потом просто пишете print(message).
Это экономит время. Так вам не требуется писать всю строку в кавычках внутри. Print помогает не только выводить результаты работы, но и проверяет скрипт на ошибки. Вы можете «принтовать» на разных этапах программу. Выводите переменную на любом из промежуточных этапов выполнения вашего кода и смотрите, содержится ли в ней именно то, что вы ожидаете.
Объекты в Roblox представляют собой любого рода атрибуты, которые вы создаете в своей программе. Например, это может быть подложка на карте игры, перемещающиеся элементы, так называемые «несобственные персонажи», то есть боты, управляемые не игроком.
Даже в айти-школах для детей бывает сложно объяснить эту сложную тему, но мы попробуем. В Roblox Studio существует так называемый Экземпляр (Instance). Это такой главный класс, работающий поверх более частных классов, его правила распространяются на все объекты проекта. Можно использовать специальную функцию Instance.new. С ее помощью вы и можете создавать отдельные объекты.
Помните, мы говорили, что все создание игр ведется путем формирования ссылок на объекты? Функция в аргументе принимает имя класса как параметр и возвращает созданный объект, с которым вы уже можете что-либо делать.
Например, Instance.new(“Part”, game.Workspace). Функция “Instance.new” «говорит» программе создать новый экземпляр. “Part” указывает его тип, а после запятой прописываем место назначения нового экземпляра – Workspace.
Можно положить новый объект в переменную, чтобы затем новые детали типа Part было проще создавать. Их можно не записывать в свойства объекта по обычному пути, а генерировать прямо в скрипте, без дополнительных манипуляций. Это особенность часто используется при программировании деталей вертолета, когда появление винтокрылой машины нужно в игре. Вам по логике требуется обращаться к мотору или маховику, чтобы запустить винт.
Простейшая и наиболее популярная среди игроков тип игры в Roblox – полоса препятствий. На местном сленге «обби». В игровой индустрии их чаще именуют платформерами, потому что персонаж зачастую должен проходить игру, перепрыгивая с платформы на платформу, избегая препятствий и врагов.
Такие игры для детей могут быть крайне простыми в Roblox. Например, программируем несколько движущихся платформ и персонаж прыгает, пытаясь не промахнуться. Но такого рода геймплеем подобные игры не исчерпываются. Платформер может быть очень сложным и интересным. Вспомнить хотя бы легенды этого жанра Super Mario Bros, Crash Bandicoot, Metroid, Donkey Kong Country and Hollow Knight.
Одна из ключевых задач при создании таких игр – убрать первоначальную подложку игрового поля, чтобы персонаж мог упасть с платформы и погибнуть, если он проиграл. Это задача, которая часто затрудняет новичков и может заставить попотеть даже над самым простым образчиков платформера.
В книге «Я учусь программировать: основы программирования для детей» Р. Кабирова точно подмечено, что кроме четырех главных типов данных, которые мы уже описали, в Lua есть функции.
Их в случае Roblox можно было бы назвать пятым типом, хотя в других языках это обычно не так. Функции позволяют лаконично вызывать в любом месте скрипта и сколько угодно раз заранее подготовленные отрывки кода.
Свой мини-скрипт для какой-нибудь повторяющейся операции вы пишете 1 раз, после чего просто вызываете функцию по имени в нужный момент. Функция, разумеется, должна менять свое поведение в соответствии с контекстом, в котором она используется. Поэтому в lua – как и в других языках – она может принимать при вызове исходные данные и возвращать результат их обработки в вашем коде.
В Lua функция может делать те или иные вещи в зависимости от того, каков тип данных, которые функция получает на вход.
Мы уже называли некоторые часто использующиеся функции, например Print и local, но существует много других, включающих слово “end”. Они предназначены для того, чтобы скомандовать в коде остановку с теми или иными особенностями. Тут мы это затронули вскользь, подробнее об этом рассказывают на любых курсах программирования Roblox для детей.
Parts (Детали) — одна из ключевых структур и типов объектов в вашей игре. Персонаж будет по ним ходить, с них падать, передвигаться по ним различными способами.
Чтобы добавить деталь, перейдите на главную страницу (home tab) и выберете пункт Part. Элемент должен появиться в центре области отображения изменений. Переместите деталь, меняя область отображения. Вы можете наконец использовать инструмент Движение Move, чтобы стрелочками, указывающими направление, менять расположение.
Гейм-дизайнеры используют тексты, цвет и звук, чтобы создать атмосферу своей игры. Настройки тем отвечают за цветовые решения и совместимость внешнего вида элементов вашей игры.
Если свой платформер вы создаете в тематическом оформлении, свойственном джунглям, то все детали должны иметь соответствующие форму и оттенок.
Могут потребоваться экзотические растения и животные. Когда вы определились с тем, в каком общем стиле должны быть выполнены детали вашей карты, можно использовать инструмент Модель (Model) для изменения цвета детали под общую тему.
Использование Material tool дополняет первый инструмент. Меняйте с его помощью текстуры деталей, внешний вид поверхностей. Именно с помощью Material tool можно сделать так, что компоненты детали будут из дерева или из металла.
Инструмент Collisions в разделе Home позволяет лучше контролировать то, как двигаются созданные вами в игре детали. Коллизии можно включить или выключить.
Если они включены, то созданные вами платформы и препятствия не проходят друг сквозь друга и отталкиваются при столкновении. При отключенных коллизиях предметы ведут себя так, будто они не знают о существовании других объектов в игре. Когда вы двигаете детали, при их соприкосновении появляется белая обводка, сигнализирующая: коллизия случилась.
Снэппинг – это количество места, которое деталь будет занимать, стоя на месте, двигаясь, меняя размер или вращаясь. Оно измеряется в Roblox Studio в единице измерения stud, что равно примерно 28 сантиметрам в реальном мире.
Если в игре вы наблюдаете передвижение объекта со скоростью больше одной stud за единицу времени, то перед вами результат снэппинга. Можно включить или отключить его, отметив или потушив чекбокс во вкладках «Rotate» или «Move».
Небольшое каскадное меню позволяет установить количество stud, отведенных элементу на определенное действие. Снэппинг пригодится при размещении элемента в определенном месте или под определенным углом. Например, при размещении стены, постройки.
Умение передвигать камеру в Roblox Studio — это один из базовых важнейших навыков. Для этого используйте «горячие клавиши» Q – поднимет камеру, E – опустит, зажатая Shift позволит передвигать ее медленнее. F – сфокусирует камеру на определенном объекте.
Если удерживать правую кнопку мыши, то это поможет камеру вращать, а колесо скроллинга играет роль зума. Такие задачи школьники, осваивающие Roblox, схватывают на лету.
В языке программирования Lua ваш код хранится и запускается в разделе Explorer. Туда в контейнеры помещаются скрипты. Можно присвоить скрипт и отдельной детали, но в этом случае он заработает, когда деталь будет загружена в игру.
Наведите мышь на Part в разделе Explorer. Нажмите кнопку + на клавиатуре. Выберете Script в меню. Это добавит к вашей игре новый скрипт. Вы можете использовать скрипты, чтобы привести в движение платформу, если надо заставить ее исчезнуть. Открываются бесконечные возможности проектирования!
Не забывайте давать логичные и систематические имена скриптам и деталям. Во вкладке без правильного именования или без именования вообще легко запутаться.
Roblox дает богатый и интересный опыт. Практика работы с платформой может увлечь и ребенка, и взрослого. Есть даже курсы, на которых с помощью платформы, о которой идет речь, детям бесплатно объясняют основы программирования.
По сравнению со Scratch, она позволяет делать более масштабные и сложные проекты, но требует больше времени на изучение. Коммьюнити Roblox очень велико, поэтому на специальных, многочисленных площадках обсуждений и изучения системы легко получить помощь. Поддерживается много учебных сервисов и сайтов. Если вы думаете, как развить вашего ребенка, рассмотрите возможность отдать его на курс по Roblox. Это отличный вариант дополнительного образования для детей.
Сообщения не найдены
Написать отзыв