
Водные столбы — игра с акулами и звёздами
Исследуйте водные столбы, собирайте морские звёзды, обходите акул и покупайте ускорение. Внутри — четыре Luau-скрипта, интерфейс, экономика, личные рекорды и таблица TOP-10.
В архиве находятся исходные файлы Luau и инструкции, не готовая игра .rbxl. Перед использованием ознакомьтесь с README.
Исходный код и схема установки
На данный момент доступны изображения реальных исходников и схема размещения файлов. Скриншоты запущенной игры будут добавлены после проверки в Roblox Studio.
Полное учебное руководство · 10 глав
Представьте необычный подводный маршрут: вокруг возвышаются водные столбы с подъёмными потоками, на пути встречаются морские звёзды и опасные акулы, а собранные награды помогают улучшать движение персонажа. «Водные столбы» — учебный игровой проект, на котором удобно разбирать сразу несколько систем Roblox Studio: генерацию мира, физику движения, взаимодействие с объектами, экономику, интерфейс и сохранение рекордов.
Что происходит в игре
Игрок исследует маршрут, пользуется зонами подъёмного течения, собирает звёзды и старается добраться до финиша. За накопленные звёзды можно приобрести ускорение в игровом магазине. На экране отображается информация о ходе игры, а серверные скрипты управляют покупками и прогрессом. Отдельная система фиксирует личное лучшее время и формирует таблицу быстрых прохождений.
Какие механики вы изучите
- Автоматическое создание уровня. Скрипт
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
- Создайте новый проект Baseplate. Не используйте одновременно скрипты предыдущих версий.
- В ServerScriptService создайте три обычных Script с именами
WorldBuilder,EconomyServerиGameProgress. Вставьте код из соответствующих файлов. - В StarterPlayer → StarterPlayerScripts создайте LocalScript
WaterHUDи вставьте клиентский код. - Нажмите Play. Проверьте создание мира, подъёмные потоки, сбор звёзд, магазин, HUD и финиш. Просмотрите окно Output.
- Для проверки сохранения опубликуйте отдельную тестовую игру и при необходимости включите доступ Studio к API Services в настройках безопасности. Проверьте повторный вход и режим Test → 2 Players.
Идеи для самостоятельной доработки
- Добавьте три уровня сложности с разной скоростью течений и числом акул.
- Создайте новые улучшения: ласты, защиту от опасностей, временный магнит для звёзд.
- Добавьте стартовую линию, чтобы таймер начинался именно с момента старта забега.
- Сделайте звуковые сигналы при сборе звёзд, покупке и достижении финиша.
- Продумайте отдельный экран результатов после прохождения.
Важно. Это учебная сборка Luau, а не готовый файл .rbxl. Авторская реализация ещё не проверена запуском в 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 и корректность управления на телефоне.

