gamepadRoblox

Если вы создавали игры в Roblox, есть несколько ключевых отличий, которые вам нужно знать, чтобы начать работу в All Out!

Если вы приходите из Roblox Studio + Lua, эта страница поможет вам перевести вашу ментальную модель на All Out + CSL (язык скриптинга All Out).

Ключевые отличия (в двух словах)

  • Сущности + компоненты (а не Instances + Services): миры строятся из сущностей в Иерархия, а поведение задаётся добавлением компонентов (встроенных или скриптовых).

  • Мультиплеер «встроен»: CSL спроектирован так, чтобы большую часть игрового кода можно было писать как для одиночной игры, пока движок синхронизирует нужное состояние.

  • Рабочий процесс в редакторе ближе к «редактированию сцены»: вы размещаете сущности, настраиваете их компоненты в Инспектор, и переиспользуете группы через Префабы.

  • CSL — статически типизированный: он будет ощущаться ближе к Go/Odin, чем к Lua. (См. Начало работы с CSL.)


Шпаргалка Roblox → All Out

Концепт Roblox
Концепт All Out / CSL
Примечания

Roblox Studio

All Out Editor

Вы запускаете его из Creator Portal (см. Запуск редактора).

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 кнопок, удобный для мобильных и ПК, + шаблоны кулдауна (см. Способности).

DataStoreService

Система сохранения + JSON + экономика

ScreenGui / GuiObjects

Система UI All Out


Ваш первый час (рекомендуемый путь)

  1. Пройдите пошаговое руководство по «сбору яблок» в Создание базовой игры.

  2. Быстро ознакомьтесь с основами CSL в Начало работы с CSL (особенно ao_start, ao_update, и созданием компонентов).

  3. Научитесь привязывать ваши новые компоненты к объектам мира через Инспектор.


Ментальная модель скриптинга (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, вы часто будете добавлять вместо этого маркерный/поведенческий компонент.


Куда двигаться дальше

Последнее обновление