Roblox
Если вы создавали игры в Roblox, есть несколько ключевых отличий, которые вам нужно знать, чтобы начать работу в All Out!
Если вы приходите из Roblox Studio + Lua, эта страница поможет вам перенести вашу мысленную модель в All Out + CSL (скриптовый язык All Out).
Крупные различия (кратко)
Сущности + компоненты (вместо Экземпляров + Сервисов): миры строятся из сущностей в Иерархия, а поведение получается добавлением компонентов (встроенных или скриптовых).
Мультиплеер «встроен»: CSL спроектирован так, чтобы большую часть игрового кода можно было писать как для одиночной игры, в то время как движок синхронизирует релевантное состояние.
CSL статически типизирован: он будет ближе к Go/Odin, чем к Lua. (См. Начало работы с CSL.)
Шпаргалка Roblox → All Out
Место / Опыт
Проект All Out Game
В вашей локальной папке проекта есть скрипты каталог для .csl файлов.
Explorer / Workspace
Иерархия
Иерархия показывает все сущности в текущем мире/сцене.
Экземпляр / Модель / Часть
Сущность
Организация «как папки» осуществляется через родительские связи сущностей (см. «Папки» в Иерархия).
Окно свойств
Инспектор
Где вы редактируете поля сущности/компонента и добавляете компоненты.
Атрибуты
Сериализованные поля компонента
Откройте поля для редактора с помощью @ao_serialize (пример ниже).
Повторное использование модели
Префабы
Префабы ещё на ранней стадии и пока не поддерживают настраиваемые поля для отдельных экземпляров, кроме позиции (см. Префабы).
ProximityPrompt / ClickDetector
Компонент Interactable
Добавьте Interactable-производный компонент и реализуйте can_use/on_interact (см. Интерактивные объекты).
Touched / Region3 / GetPartsInPart
Запросы по диапазону (пока)
Обработчики входа/выхода столкновений ещё не доступны; используйте Scene.get_all_components_in_range (см. Навмеш и коллизии).
Инструменты / способности / кнопки на мобильных
Способности
Встроенный удобный для мобильных/ПК интерфейс кнопок + шаблоны перезарядки (см. Способности).
DataStoreService
Сохранение + JSON + экономические системы
Ваш первый час (рекомендуемый путь)
Следуйте пошаговому руководству «коллекция яблок» в Создание базовой игры.
Быстро ознакомьтесь с основами 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 или самописным системам ввода + перезарядки, используйте Способности вместо этого. Они разработаны так, чтобы хорошо работать и на мобильных, и на ПК с единообразным интерфейсом.
Сохранение данных (DataStoreService → Система сохранения)
Для персистентности (валюты, разблокировки, прогресс, косметика) начните с:
UI (ScreenGui → UI All Out)
Roblox UI часто начинается с ScreenGui и иерархий Frame/TextButton . В All Out начните здесь:
Распространённые подводные камни при портировании для разработчиков Roblox
Нет дерева «сервисов рабочего пространства»: не ищите эквиваленты
ReplicatedStorage/ServerScriptService— используйте иерархию редактора + вашу проектнуюскриптыпапку.Не ждите событий Touched: используйте запросы по диапазону, пока обработчики столкновений не станут доступны в CSL (ссылка выше).
Экземпляры префабов ещё не полностью параметризованы: если вам нужно много копий с разными значениями, возможно, потребуется «отвязать» или создать уникальные сущности (см. Префабы).
Думайте «компоненты», а не «теги»: там, где вы бы использовали теги CollectionService, вы часто будете добавлять маркер/поведенческий компонент вместо них.
Куда идти дальше
Создайте свою первую игру: Создание базовой игры
Изучите основы редактора: Введение/Просмотр сцены
Изучите основы скриптинга: Начало работы с CSL
Изучите основные строительные блоки игрового процесса: Интерактивные объекты, Инвентарь, Способности
Последнее обновление