Roblox
Если вы создавали игры на Roblox, вам нужно знать несколько ключевых отличий, чтобы начать работу в All Out!
Если вы пришли из Roblox Studio + Lua, эта страница поможет вам перевести вашу ментальную модель на All Out + CSL (язык скриптов All Out).
Главные различия (с первого взгляда)
Сущности + компоненты (а не экземпляры + сервисы): миры строятся из сущностей в Иерархия, а поведение возникает при добавлении компонентов (встроенных или скриптовых).
Многопользовательский режим «встроен»: CSL спроектирован так, чтобы большую часть игрового кода можно было писать как для одиночной игры, а движок синхронизировал нужное состояние.
CSL — статически типизированный: он будет ощущаться ближе к Go/Odin, чем к Lua. (См. Начало работы с CSL.)
Преобразования игрового процесса — 2D: позиция и масштаб используют
v2, поворот — один угол в градусах, а слои спрайтов управляют порядком отрисовки.
Шпаргалка Roblox → All Out
Плейс / опыт
Проект игры All Out
В вашей локальной папке проекта есть scripts каталог для .csl файлов.
Обозреватель / Рабочее пространство
Иерархия
Иерархия показывает все сущности в текущем мире/сцене.
Экземпляр / Модель / Деталь
Сущность
Организация в стиле «папок» выполняется путем вложения сущностей (см. «Папки» в Иерархия).
Окно свойств
Инспектор
Где вы редактируете поля сущности/компонента и добавляете компоненты.
Атрибуты
Сериализованные поля компонента
Открывайте поля для редактора с помощью @ao_serialize (пример ниже).
CFrame / Vector3
2D-преобразование сущности
Положение и масштаб — это v2; поворот — один угол в градусах.
Clone()
Scene.instantiate
Загрузите Prefab_Asset, затем создайте его экземпляр в сцене.
Повторное использование моделей
Префабы
Связанные экземпляры сохраняют свойства корня, но поля компонентов не являются независимыми переопределениями (см. Префабы).
ProximityPrompt / ClickDetector
Компонент Interactable
Добавьте Interactable-производный компонент и реализуйте can_use/on_interact (см. Интерактивные объекты).
Touched / Region3 / GetPartsInPart
Триггеры / запросы по диапазону
Используйте обратные вызовы триггеров для поведения входа/выхода и Scene.get_all_components_in_range для широкого обнаружения (см. Навмеш и коллизии).
Инструменты / способности / мобильные кнопки
Способности
Встроенный 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 выполняются в каждой симуляции сцены; они не только серверные. См. Жизненный цикл игры/кадра.
Взаимодействия, которые вы узнаете (и как они переводятся)
ProximityPrompt → Interactable
Если вы использовали ProximityPrompt.Triggered в Roblox, ближайший аналог — это Interactable-производный компонент. Начните здесь:
Подбор предметов / зоны триггера
Roblox’овский BasePart.Touched — очень распространённый шаблон для подбора предметов, зон урона и контрольных точек. В All Out добавьте включённый коллайдер, установите is_trigger, и назначьте on_trigger_start, on_trigger_stay, или on_trigger_end. Другой коллайдер передаётся в обратный вызов. Объект Movement_Agent не требуется.
Используйте Scene.get_all_components_in_range когда вам нужно широкое обнаружение или проверка расстояния. Сплошная коллизия не предоставляет общего обратного вызова в стиле Roblox, Touched обратного вызова.
См. Навмеш и коллизии.
Действия игрока (инструменты / привязки клавиш / мобильное управление)
Если вы привыкли к Roblox-скриптам «tool» или самописным системам ввода + кулдауна, используйте Способности вместо этого. Они спроектированы так, чтобы хорошо работать и на мобильных устройствах, и на ПК с единым интерфейсом.
Сохранение данных (DataStoreService → система сохранения)
Для постоянных данных (валюты, разблокировки, прогресс, косметика) начните с:
UI (ScreenGui → UI-система All Out)
Roblox UI часто начинается с ScreenGui и Frame/TextButton иерархий. В All Out начните здесь:
Рисуйте UI игрока в ao_late_update внутри is_local_or_server().
Типичные подводные камни при переносе для Roblox-разработчиков
Нет дерева «workspace services»: не ищите
ReplicatedStorage/ServerScriptServiceаналогов — используйте иерархию редактора +scriptsпапку вашего проекта.Не ограждайте игровой процесс с помощью
Game.is_server(): обычный игровой процесс выполняется на предсказывающем клиенте и авторитетном сервере.Поля компонентов Prefab не являются независимыми переопределениями: отвяжите экземпляр или создайте другой префаб, если копиям нужны разные значения компонентов.
Думайте «компоненты», а не «теги»: там, где вы бы использовали теги CollectionService, вы часто добавляете вместо этого маркерный/поведенческий компонент.
Помните, что сцена 2D: используйте слои рендерера вместо Z-трансформации.
Куда двигаться дальше
Соберите свою первую игру: Создание базовой игры
Изучите основы редактора: Введение/Окно сцены
Изучите основы скриптинга: Начало работы с CSL
Изучите основные строительные блоки игрового процесса: Интерактивные объекты, Инвентарь, Способности
Последнее обновление