Roblox
Если вы создавали игры в Roblox, есть несколько ключевых отличий, которые вам нужно знать, чтобы начать работу в All Out!
Если вы приходите из Roblox Studio + Lua, эта страница поможет вам перевести вашу ментальную модель на All Out + CSL (язык скриптинга All Out).
Ключевые отличия (в двух словах)
Сущности + компоненты (а не Instances + Services): миры строятся из сущностей в Иерархия, а поведение задаётся добавлением компонентов (встроенных или скриптовых).
Мультиплеер «встроен»: CSL спроектирован так, чтобы большую часть игрового кода можно было писать как для одиночной игры, пока движок синхронизирует нужное состояние.
CSL — статически типизированный: он будет ощущаться ближе к Go/Odin, чем к Lua. (См. Начало работы с CSL.)
Шпаргалка Roblox → All Out
Place / Experience
Проект All Out Game
Папка вашего локального проекта включает каталог scripts для файлов .csl .
Explorer / Workspace
Иерархия
Иерархия показывает все сущности в текущем мире/сцене.
Instance / Model / Part
Сущность
Организация «как папки» делается через вложение сущностей (см. «Папки» в Иерархия).
Окно свойств
Инспектор
Здесь вы редактируете поля сущности/компонента и добавляете компоненты.
Атрибуты
Сериализованные поля компонента
Открывайте поля для редактора с помощью @ao_serialize (пример ниже).
Переиспользование моделей
Префабы
Префабы находятся на ранней стадии и пока не поддерживают пользовательские поля для отдельных экземпляров, кроме позиции (см. Префабы).
ProximityPrompt / ClickDetector
Компонент Interactable
Добавьте Interactable-производный компонент и реализуйте can_use/on_interact (см. Интерактивные объекты).
Touched / Region3 / GetPartsInPart
Запросы по радиусу (пока)
Колбэки входа/выхода при столкновении пока не доступны; используйте Scene.get_all_components_in_range (см. Navmesh и столкновения).
Инструменты / способности / мобильные кнопки
Способности
Встроенный UI кнопок, удобный для мобильных и ПК, + шаблоны кулдауна (см. Способности).
Ваш первый час (рекомендуемый путь)
Пройдите пошаговое руководство по «сбору яблок» в Создание базовой игры.
Быстро ознакомьтесь с основами CSL в Начало работы с CSL (особенно
ao_start,ao_update, и созданием компонентов).Научитесь привязывать ваши новые компоненты к объектам мира через Инспектор.
Ментальная модель скриптинга (Lua → CSL)
В Roblox вы часто пишете Script/LocalScript который находит объекты (Workspace.Foo.Bar) и подключает события. В All Out обычно вы:
Пишете классы компонентов на CSL (поведение).
Привязываете их к сущностям в редакторе (или создаёте сущности и добавляете компоненты во время выполнения).
Храните настраиваемые значения в компоненте с помощью
@ao_serialize(чтобы можно было настраивать их для каждой сущности в инспекторе).
Вот небольшой пример, который ощущается как «Script, вложенный под объект», но выражен как компонент CSL:
Если вы хотите «игровой скрипт», который запускается один раз на сервер/сессию, обычно его помещают в основные процедуры жизненного цикла (ao_start, ao_update, и т. д.). См. шаблон в Начало работы с CSL.
Взаимодействия, которые вы узнаете (и как они переводятся)
ProximityPrompt → Interactable
Если вы использовали ProximityPrompt.Triggered в Roblox, ближайший аналог — компонент на основе Interactable. Начните отсюда:
Подбираемые объекты / зоны триггера по касанию
Roblox BasePart.Touched — очень распространённый паттерн для подбираемых предметов, зон урона и чекпойнтов. В All Out колбэки входа/выхода при столкновении ещё не реализованы в CSL, поэтому стандартный подход такой:
Запрашивать игроков/компоненты поблизости
Выполнять простой проверочный расчёт расстояния
Отслеживать, кто был «внутри» на прошлом кадре, если вам нужны события входа/выхода
См. «Псевдоповедение столкновений» в:
Действия игрока (инструменты / привязки клавиш / мобильное управление)
Если вы привыкли к скриптам Roblox для инструментов или к ручным системам ввода + кулдауна, используйте Способности вместо них. Они рассчитаны на удобную работу и на мобильных устройствах, и на ПК с единым UI.
Сохранение данных (DataStoreService → система Save)
Для постоянного хранения (валюта, разблокировки, прогресс, косметика) начните с:
UI (ScreenGui → UI All Out)
UI в Roblox часто начинается с ScreenGui и иерархий Frame/TextButton. В All Out начните отсюда:
Типичные подводные камни при переносе с Roblox для разработчиков
Нет дерева «workspace services»: не ищите
ReplicatedStorage/ServerScriptServiceаналогов — используйте иерархию редактора +scriptsпапку вашего проекта.Не ждите событий Touched: используйте запросы по радиусу, пока колбэки столкновений не будут доступны в CSL (ссылка выше).
Экземпляры префабов пока не полностью параметризуются: если вам нужно много копий с разными значениями, возможно, придётся «отвязывать» их или создавать уникальные сущности (см. Префабы).
Думайте «компоненты», а не «теги»: там, где вы бы использовали теги CollectionService, вы часто будете добавлять вместо этого маркерный/поведенческий компонент.
Куда двигаться дальше
Создайте свою первую игру: Создание базовой игры
Изучите основы редактора: Введение/вид сцены
Изучите основы скриптинга: Начало работы с CSL
Изучите основные строительные блоки геймплея: Интерактивные объекты, Inventory, Способности
Последнее обновление