ROBLOX STUDIO · Игра

Водные столбы — игра с акулами и звёздами

Исследуйте водные столбы, собирайте морские звёзды, обходите акул и покупайте ускорение. Внутри — четыре Luau-скрипта, интерфейс, экономика, личные рекорды и таблица TOP-10.

В архиве находятся исходные файлы Luau и инструкции, не готовая игра .rbxl. Перед использованием ознакомьтесь с README.

ПОДРОБНЫЙ ОБЗОР

Полное учебное руководство · 10 глав

Представьте необычный подводный маршрут: вокруг возвышаются водные столбы с подъёмными потоками, на пути встречаются морские звёзды и опасные акулы, а собранные награды помогают улучшать движение персонажа. «Водные столбы» — учебный игровой проект, на котором удобно разбирать сразу несколько систем Roblox Studio: генерацию мира, физику движения, взаимодействие с объектами, экономику, интерфейс и сохранение рекордов.

Что происходит в игре

Игрок исследует маршрут, пользуется зонами подъёмного течения, собирает звёзды и старается добраться до финиша. За накопленные звёзды можно приобрести ускорение в игровом магазине. На экране отображается информация о ходе игры, а серверные скрипты управляют покупками и прогрессом. Отдельная система фиксирует личное лучшее время и формирует таблицу быстрых прохождений.

ИсследованиеВодные столбы и маршрут с препятствиями
НаградыСбор звёзд и покупка ускорения
СоревнованиеТаймер, личный рекорд и TOP-10
ПрограммированиеКлиент, сервер, события и DataStore

Какие механики вы изучите

  • Автоматическое создание уровня. Скрипт WorldBuilder создаёт объекты игрового мира на новой Baseplate; не нужно вручную расставлять каждый элемент.
  • Подъёмные потоки. «Водные столбы» реализованы как игровые зоны движения, а не как физическая вода Terrain. Это позволяет изучать управление скоростью и взаимодействие с пространством.
  • Опасности и награды. Акулы создают препятствия, звёзды формируют систему сбора предметов.
  • Игровой магазин. EconomyServer отвечает за баланс, покупку ускорения и серверную обработку экономики.
  • Интерфейс игрока. WaterHUD показывает состояние игры и помогает понять, как связать серверные данные с экраном.
  • Рекорды. GameProgress работает с обычным и упорядоченным DataStore для сохранения лучших результатов.

Что входит в ZIP-архив v7.2

  • WorldBuilder.server.lua — построение мира и игровых объектов;
  • EconomyServer.server.lua — звёзды, баланс, покупка улучшения;
  • GameProgress.server.lua — прохождение, рекорды и таблица лидеров;
  • WaterHUD.client.lua — экранный интерфейс;
  • README.txt — установка, настройки и ограничения.

Как собрать проект в Roblox Studio

  1. Создайте новый проект Baseplate. Не используйте одновременно скрипты предыдущих версий.
  2. В ServerScriptService создайте три обычных Script с именами WorldBuilder, EconomyServer и GameProgress. Вставьте код из соответствующих файлов.
  3. В StarterPlayer → StarterPlayerScripts создайте LocalScript WaterHUD и вставьте клиентский код.
  4. Нажмите Play. Проверьте создание мира, подъёмные потоки, сбор звёзд, магазин, HUD и финиш. Просмотрите окно Output.
  5. Для проверки сохранения опубликуйте отдельную тестовую игру и при необходимости включите доступ Studio к API Services в настройках безопасности. Проверьте повторный вход и режим Test → 2 Players.

Идеи для самостоятельной доработки

  • Добавьте три уровня сложности с разной скоростью течений и числом акул.
  • Создайте новые улучшения: ласты, защиту от опасностей, временный магнит для звёзд.
  • Добавьте стартовую линию, чтобы таймер начинался именно с момента старта забега.
  • Сделайте звуковые сигналы при сборе звёзд, покупке и достижении финиша.
  • Продумайте отдельный экран результатов после прохождения.

Важно. Это учебная сборка Luau, а не готовый файл .rbxl. Авторская реализация ещё не проверена запуском в Roblox Studio. Сохранение и рейтинг требуют тестирования; система рекордов не является готовой античит-защитой. Не используйте её для игр с ценными покупками без доработки.

Что вы создадите и чему научитесь

Понять, как несколько систем превращаются в игру: карта задаёт маршрут, события касания меняют состояние, сервер начисляет награды, интерфейс сообщает результат, а сохранение фиксирует рекорд.

Для кого: После первых занятий с Part, Script, LocalScript, Explorer и событиями Touched. Подходит для командного проекта с распределением ролей «уровень», «экономика», «интерфейс», «тестирование».

Формат: исходные файлы Luau с README; это не готовая сцена .rbxl и не подтверждённый игровой билд.

Из чего состоит проект

Перед началом работы откройте архив и прочитайте README. Ниже — назначение файлов, которые действительно входят в поставку.

Файл Для чего нужен
WorldBuilder.server.lua Создаёт игровой мир и зоны взаимодействия. Изучаем создание объектов и пространственные координаты.
EconomyServer.server.lua Отвечает за звёзды, покупки и применение улучшений; позволяет обсудить проверку правил на сервере.
GameProgress.server.lua Отслеживает время прохождения, личные рекорды и TOP-10, использует DataStore и OrderedDataStore.
WaterHUD.client.lua Формирует интерфейс игрока; помогает отделить отображение от серверной логики.
README.txt Уточняет расположение скриптов, порядок запуска и ограничения учебной сборки.

Практическая лаборатория: пять занятий

Занятия выстроены от знакомства с системой к проверке её работы. Сохраняйте отдельную копию проекта перед каждым экспериментом, а в журнале записывайте, что меняли и какой получили результат.

Занятие 1. Размечаем карту перед программированием

Задача. Нарисуйте путь от старта до финиша. Отметьте места, где игрок принимает решение: безопасный столб, рискованный путь около акулы, сбор звезды и покупка улучшения. Сопоставьте каждое место с обработчиком в коде.

Проверка. Составьте таблицу из четырёх столбцов: объект, действие игрока, ответ сервера, сообщение HUD. После запуска проверьте, совпадает ли таблица с наблюдением.

Результат. Вы сможете объяснить, почему красивые детали сами по себе не образуют игру: нужны правила и обратная связь.

Занятие 2. Изменяем один параметр генератора

Задача. В WorldBuilder найдите создание одной безопасной детали. Запишите исходные Size, Position и Color. Измените только Color, запустите Play, затем верните цвет и измените размер.

Проверка. Сравните два запуска. Если объект исчез, откройте Output и проверьте имя, координаты и последовательность создания. Не меняйте одновременно много свойств.

Результат. Ученик связывает строку кода с конкретным объектом на карте и умеет возвращаться к рабочему варианту.

Занятие 3. Исследуем подъёмные потоки

Задача. Выберите один водный столб. Проверьте движение при входе и выходе, в том числе при прыжке и повторном касании. Затем немного измените параметр силы подъёма.

Проверка. Запишите приблизительное время подъёма для двух настроек, сравните результат. Для честного опыта оставьте прежними маршрут, аватар и стартовую точку.

Результат. Станет понятно, почему скорость и время удобно сравнивать при неизменных условиях.

Занятие 4. Проверяем покупку на честность

Задача. Сначала попытайтесь приобрести ускорение без нужного числа звёзд. Затем соберите достаточно наград, купите улучшение и быстро повторите действие.

Проверка. Отследите баланс до и после покупки. Запустите двух игроков и убедитесь, что покупка одного не влияет на другого. Ошибки записывайте с точными шагами воспроизведения.

Результат. Проверка достаточности валюты и защита от повторов работают на сервере, а не только в интерфейсе.

Занятие 5. Рекорд и таблица лучших

Задача. Опубликуйте отдельное тестовое место, если хотите проверять DataStore. Пройдите маршрут, перезайдите, повторите попытку с другим временем.

Проверка. Сравните личный рекорд и TOP-10. Учитывайте, что таймер учебной версии стартует при подключении к серверу; это ограничивает точность соревновательного результата.

Результат. Ученик различает текущую попытку, лучший результат и общий рейтинг, а также знает, что сохранение может завершиться ошибкой.

Если что-то не работает: таблица диагностики

Не переписывайте весь проект при первой ошибке. Откройте View → Output, найдите сообщение, воспроизведите проблему и проверьте сначала тип и расположение Script, затем имена объектов.

Симптом Вероятная причина Что проверить
Мир создаётся дважды Одновременно работают разные версии WorldBuilder Оставьте только один актуальный набор скриптов; отключите старые Script.
HUD не появляется WaterHUD добавлен как обычный Script или не в StarterPlayerScripts Проверьте тип LocalScript и правильную папку; откройте Output.
Звезда начисляется повторно Touched вызывается для нескольких частей аватара Проверьте серверную блокировку повторного начисления.
Рекорд не сохраняется Нет доступа к DataStore в тестовом Place либо ошибка сервиса Проверьте публикацию тестового места и сообщения Output; не включайте доступ к API без необходимости.
Скорость не возвращается Конфликт нескольких скриптов, меняющих параметры персонажа Отключите посторонние ускорители и повторите тест на чистом проекте.

Контрольные вопросы

Ответьте устно или письменно, прежде чем переходить к следующему проекту. Важно не просто назвать команду, а объяснить, зачем она используется.

  1. Чем отличается ServerScriptService от StarterPlayerScripts?
  2. Почему клиентский интерфейс не должен самостоятельно выдавать звёзды?
  3. Какие ситуации приводят к многократному Touched?
  4. Что произойдёт, если два игрока одновременно коснутся одной звезды?
  5. Почему следует менять по одному параметру за опыт?
  6. Чем DataStore отличается от OrderedDataStore в этом проекте?
  7. Как старт таймера при входе на сервер влияет на честность рекордов?
  8. Какие тесты нужны до публикации игры для других пользователей?

Чек-лист готовности

Поставьте отметку после самостоятельной проверки каждого пункта:

  • ☐ Карта строится без ошибок в Output.
  • ☐ Игрок достигает финиша без обязательного использования ошибок физики.
  • ☐ Награда за одну звезду не начисляется многократно.
  • ☐ Покупка не допускает отрицательного баланса.
  • ☐ Интерфейс читается на узком экране.
  • ☐ В режиме двух игроков состояние не смешивается.
  • ☐ При ошибке сохранения игра не прекращает работу.

Как развить проект дальше

Следующий шаг — отдельная стартовая линия для таймера, экран правил, ограничение попыток, уровни сложности и журнал тестирования. Не добавляйте монетизацию или публичный рейтинг без дополнительной серверной защиты.

Перед публикацией. Архивы не были проверены запуском в Roblox Studio в рамках этой сборки. Протестируйте проект на компьютере и телефоне, в одиночном и многопользовательском режимах; отдельно проверьте сохранение, обработку ошибок и поведение после перезахода.

Полное учебное руководство: 10 последовательных глав. Для каждой главы приведены объяснение, практические шаги, критерий проверки, самостоятельное задание и ограничения. Примеры относятся к файлам указанной версии архива.

Важное ограничение: файлы Luau не являются готовой игрой .rbxl; исходники пока не прошли полноценный запуск в Roblox Studio. Иллюстрации ниже — обложка и фрагменты исходного кода, не подтверждённые скриншоты игрового процесса.

ГЛАВА 01 / 10

Концепция игры и маршрут ученика

Разбираемся

Разберите цикл «исследование → награда → улучшение → новое прохождение». Водные столбы создают зоны движения, звёзды дают валюту, акулы мешают продвижению, а финиш и рекорды добавляют цель. Проект полезен не потому, что в нём много объектов, а потому, что системы взаимодействуют между собой.

Практика в Roblox Studio

На бумаге нарисуйте маршрут из стартовой зоны, двух столбов, звезды, опасного участка, магазина и финиша. Подпишите, какие события должны обрабатываться сервером, а какие — только отображаться игроку.

Как проверить результат

Объясните однокласснику, почему покупка ускорения должна проверяться сервером, а не только кнопкой интерфейса.

Самостоятельное задание

Придумайте два альтернативных маршрута: короткий рискованный и длинный безопасный.

На что обратить внимание. В исходниках v7.2 таймер стартует при входе игрока на сервер, а не при пересечении стартовой линии.

↑ К началу руководства

ГЛАВА 02 / 10

Подготовка Roblox Studio и дерево объектов

Разбираемся

Для проекта нужна чистая Baseplate. Архив содержит четыре скрипта: WorldBuilder, EconomyServer, GameProgress и WaterHUD. Три первых выполняются на сервере, четвёртый — на клиенте. Не подключайте старые версии одновременно: они могут создать повторные объекты и конфликтующие обработчики.

Практика в Roblox Studio

Создайте новый Place, откройте Explorer, Properties и Output. В ServerScriptService создайте три Script; в StarterPlayerScripts — один LocalScript. Сверьте имена и типы с README, перенесите содержимое соответствующих файлов.

Как проверить результат

Запустите Play и проверьте, что все четыре скрипта активны, а в Output нет ошибок синтаксиса и поиска объектов.

Самостоятельное задание

Составьте схему дерева Explorer и отметьте цветом серверную и клиентскую части.

На что обратить внимание. Содержимое ZIP — текстовые файлы Luau, а не готовая сцена .rbxl; объекты генерируются при запуске.

↑ К началу руководства

ГЛАВА 03 / 10

Генерация мира: WorldBuilder

Разбираемся

WorldBuilder строит игровой уровень из деталей и зон взаимодействия. Такой подход удобен для урока: изменение параметров в коде сразу меняет карту, а ученик видит связь между алгоритмом и пространством. Однако карта, созданная во время Play, не становится постоянной ручной сборкой в редакторе.

Практика в Roblox Studio

Откройте WorldBuilder.server.lua и найдите участки, где создаются Parts и задаются их свойства. Меняйте только один параметр за попытку: размер, цвет или положение безопасного объекта. После каждого изменения запускайте Play заново.

Как проверить результат

Сравните карту до и после изменения; убедитесь, что персонаж не появляется внутри препятствия и может достичь финиша.

Самостоятельное задание

Добавьте ориентиры: разные цвета для старта, магазина и финиша, не затрагивая серверные имена объектов.

На что обратить внимание. Не переименовывайте программно используемые объекты, пока не проверите все обращения к ним в остальных файлах.

↑ К началу руководства

ГЛАВА 04 / 10

Подъёмные потоки и физика движения

Разбираемся

Водные столбы в этой сборке — игровые зоны подъёма, а не физическая вода Terrain. Они воздействуют на движение персонажа и позволяют обсуждать скорость, направление и ограничения ускорения. Слишком резкий подъём может ухудшить управление, особенно на мобильных устройствах.

Практика в Roblox Studio

Найдите в WorldBuilder логику взаимодействия с подъёмной зоной. Сначала запишите исходные значения. Измените интенсивность подъёма на небольшой шаг и сравните, сколько времени нужно, чтобы добраться до верхней площадки.

Как проверить результат

Проверьте вход и выход из зоны, прыжок на границе и повторное касание. Убедитесь, что персонаж не получает бесконечное ускорение после выхода.

Самостоятельное задание

Сделайте три столба с разной силой потока и табличками «лёгкий», «средний», «сложный».

На что обратить внимание. Не меняйте одновременно вертикальную и горизонтальную скорость: иначе трудно понять причину результата.

↑ К началу руководства

ГЛАВА 05 / 10

Звёзды, акулы и события касания

Разбираемся

Награды и опасности основаны на столкновениях персонажа с игровыми объектами. Событие Touched может вызываться несколько раз из-за разных частей аватара, поэтому важно защищать обработчики от повторных срабатываний. Награда должна начисляться по правилам сервера.

Практика в Roblox Studio

Найдите в исходниках создание звёзд и акул, затем обработчики взаимодействий. Проверьте, что одна звезда не начисляет награду многократно за одно касание. Протестируйте поведение при быстром повторном входе в зону.

Как проверить результат

В режиме двух игроков посмотрите, кому засчитывается предмет, как реагирует опасность и не изменяется ли чужой баланс.

Самостоятельное задание

Добавьте разные звуковые сигналы для награды и опасности; перед публикацией проверьте доступность используемых звуков.

На что обратить внимание. В учебном проекте нет полноценной античит-защиты: нельзя доверять клиенту решение о выдаче валюты.

↑ К началу руководства

ГЛАВА 06 / 10

Экономика и покупка улучшений

Разбираемся

EconomyServer управляет балансом звёзд и покупкой ускорения. Важно разделять три действия: показать цену, запросить покупку и подтвердить её на сервере. Если кнопка только меняет скорость на клиенте, такое улучшение нельзя считать корректной игровой покупкой.

Практика в Roblox Studio

Откройте EconomyServer.server.lua. Найдите, где проверяется достаточность баланса, списывается цена и применяется эффект. Запишите исходные значения цены и длительности. Проверьте покупку при нулевом и достаточном балансе.

Как проверить результат

Убедитесь, что баланс не уходит в минус, повторное нажатие не приводит к двойному списанию, а интерфейс обновляется после подтверждения.

Самостоятельное задание

Предложите второй товар — временную защиту от акул. Сначала опишите серверные правила на бумаге, затем переходите к коду.

На что обратить внимание. При нескольких одновременных покупках понадобятся дополнительные проверки последовательности и состояния игрока.

↑ К началу руководства

ГЛАВА 07 / 10

Экран игрока: WaterHUD

Разбираемся

WaterHUD — LocalScript, который отображает сведения об игре: состояние валюты, прогресс, сообщения и элементы взаимодействия. Интерфейс не должен самостоятельно решать, сколько наград получил игрок. Его задача — показывать уже подтверждённые данные и отправлять запросы на действие.

Практика в Roblox Studio

Изучите WaterHUD.client.lua: найдите создание элементов ScreenGui и их обновление. Измените одну безопасную характеристику оформления — цвет, отступ или размер текста. Проверьте экран в нескольких разрешениях через Device Emulator.

Как проверить результат

Текст не должен выходить за границы кнопок; важные значения должны оставаться видимыми на телефоне и компьютере.

Самостоятельное задание

Нарисуйте макет HUD для младших школьников: крупные значки, минимальный текст, заметная обратная связь после покупки.

На что обратить внимание. Не переносите логику начисления валюты в LocalScript: клиентские значения могут быть изменены игроком.

↑ К началу руководства

ГЛАВА 08 / 10

Рекорды, DataStore и TOP-10

Разбираемся

GameProgress использует DataStore WaterColumnsBestV1 для личных рекордов и OrderedDataStore WaterColumnsFastestV1 для глобального рейтинга. Время хранится в миллисекундах: меньший результат лучше. Сохранение зависит от доступности сервисов Roblox и может временно не работать.

Практика в Roblox Studio

Опубликуйте отдельный тестовый Place. При необходимости разрешите Studio API Services только для него. Пройдите маршрут, выйдите и зайдите снова. Сравните личный рекорд и TOP-10. Затем отключите доступ к API и посмотрите, как игра сообщает о сбое.

Как проверить результат

Проверьте, что при ошибке сохранения игра остаётся играбельной и в Output есть диагностическая информация.

Самостоятельное задание

Предложите новый формат рейтинга: лучший результат за неделю. Обсудите, почему понадобится отдельный ключ или хранилище.

На что обратить внимание. Сохранение учебное: отсутствуют блокировка параллельных сессий и полноценная защита соревновательных результатов.

↑ К началу руководства

ГЛАВА 09 / 10

Тестирование двух игроков и поиск ошибок

Разбираемся

Одиночный Play не выявляет всех ошибок: две сессии могут одновременно собирать звёзды, покупать улучшения и финишировать. Тест на нескольких клиентах помогает увидеть, где данные одного игрока случайно смешиваются с данными другого.

Практика в Roblox Studio

Запустите Test с двумя игроками. На первом соберите награды, на втором ничего не делайте. Сравните интерфейсы, балансы и таймеры. Затем поменяйтесь ролями и одновременно взаимодействуйте с магазином. Запишите найденные несоответствия.

Как проверить результат

У каждого игрока должен быть свой баланс и личный результат. Ошибки Output нужно проверять на сервере и на обоих клиентах.

Самостоятельное задание

Составьте таблицу тестов: действие, ожидаемый результат, фактический результат, исправление. Повторите проверки после каждой правки.

На что обратить внимание. Не обещайте устойчивую работу с большим онлайном до реальных нагрузочных испытаний.

↑ К началу руководства

ГЛАВА 10 / 10

Финальный проект и самостоятельная защита

Разбираемся

Итог обучения — не только запустить чужие скрипты, но и объяснить архитектуру. Ученик должен показать, где создаётся мир, где учитывается валюта, как обновляется HUD и почему рекорды сохраняются отдельно. Затем он предлагает собственное улучшение и проверяет его.

Практика в Roblox Studio

Соберите демонстрацию из трёх минут: старт, подъём, сбор звезды, покупка, финиш. Подготовьте схему из четырёх файлов и один пример изменения параметра. Сохраните копию исходников до эксперимента.

Как проверить результат

Защитите проект по критериям: запуск без ошибок, понятный интерфейс, проверка двух игроков, объяснение серверной логики, честное описание ограничений.

Самостоятельное задание

Превратите маршрут в соревнование классов, но сначала добавьте стартовую линию и проверьте честность измерения времени.

На что обратить внимание. До публичного выпуска проверьте эксплойты, производительность, DataStore и корректность управления на телефоне.

↑ К началу руководства