Перейти к содержимому

Space Engineers: Простые скрипты с разбором и объяснениями. Стрим №1. (гайд, туториал, мануал)

Renesco Rocketman

0:00 / 0:00

Space Engineers: Простые скрипты с разбором и объяснениями. Стрим №1. (гайд, туториал, мануал)

52 659 просмотров · Трансляция закончилась 8 лет назад
Renesco Rocketman
22,6 тыс. подписчиков
52 659 просмотров · Трансляция закончилась 8 лет назад
Сегодня первый стрим из запланированного цикла по простым скриптам с пояснениями и вопрос-ответами. Надеюсь, эти стримы будут полезны тем, кто только собирается написать свой первый скрипт для игры Space Engineers. ТАЙМКОДЫ: =====ОБЩАЯ ИНФА ПО СКРИПТАМ В ИНЖЕНЕРАХ============ 7:15 Из чего состоит скрипт: переменные и методы 8:10 Стандартные типы переменных: int, string, float, double, bool 9:55 Переменные, хранящие ссылки на блоки (гироскопы, двигатели и т.п.) 13:00 Основные методы скрипта: Main(), Program(), Save() 13:20 void Main() - это то, что исполняется при запуске программного блока 13:30 Program() - конструктор скрипта 17:45 Save() - выполняется при сохранении. В этом метод можно выполнить сохранение важных переменных в текстовую панель или еще куда-то, чтобы при следующем запуске игры скрипт подгрузил эти значения. 19:13 Наши собственные функции и процедуры. Пример пользовательской функции. 27:30 Объект GridTerminalSystem - то, с чего начинается работа с любыми блоками. 30:20 Поиск блока по имени: GridTerminalSystem.GetBlockWith Name() ======ПЕРЕХОДИМ К ПРАКТИКЕ: ПЕРВЫЕ ПРИМЕРЫ СКРИПТОВ======== ГИРОСКОП: 31:30 Немного об интерфейсах. Находим гироскоп и устанавливаем ему усилие по оси рыскания. 38:45 Тест первого скрипта в игре ПРОЖЕКТОР (или любая другая лампочка): 48:30 Прожектор: включаем блок из скрипта 52:30 Аргументы метода Main(). Много действий по кнопкам из одного программного блока. Включаем и выключаем прожектор скриптом с аргументами. 58:00 Назначаем вызов прог. блока с разными аргументами на кнопки. 1:10:45 Небольшой пример по интерфейсам: включать и выключать прожектор можно и как IMyTerminalBlock, и как IMyReflectorLight. Да здравствует Полиморфизьм! 1:12:15 А теперь попробуем управлять RGB палитрой прожектора - теперь уже придется делать это только через интерфейс IMyReflectorLight. ЛИФТ: 1:31:10 Постановка задачи: нужен лифт на колбасе из пистонов для 3х и более этажей. Раньше мы находили конкретные блоки по имени. Теперь попробуем найти блоки определенного типа и принадлежащие к назначенной в терминале группе. Также нам потребуется не один запуск скрипта, а зацикленное исполнение с реакцией на изменяющуюся ситуацию. 1:41:25 !!!ВАЖНАЯ ЧАСТЬ: Зацикливание скрипта тремя способами. 1:42:20 *1.Самый простой и старый способ зациклить скрипт: таймер триггерит программный блок и стартует самого себя. Частота исполнения до 1 раза/сек 1:43:08 Пишем из программного блока на текстовую панель. Интерфейс IMyTextPanel и метод WritePublicText() 1:58:20 Можно по старой схеме добиться и 60 исполнений в секунду, если не стартовать, а триггерить таймер. 2:05:30 Делитель частоты: возможность снизить частоту исполнения главной части скрипта с 60 до любого количества раз в сек. 2:18:20 *2.Более продвинутый способ зацикливания: таймер триггерится программным блоком и вызывает программный блок. Такой подход позволяет запустить или остановить исполнение скрипта вызовом прог. блока с аргументом. 2:31:30 *3. Самый новый способ: Зацикливание через Runtime.UpdateFrequancy. Программный блок не нуждается в таймере, весь контроль над частотой исполнения (или его остановкой) - из программного блока. 2:41:25 Возвращаемся к лифту. 2:45:00 Начинаем писать скрипт лифта. Новый тип переменных: список List. В список будем подгружать пистоны из назначенной нами группы "ElevatorPistons" 2:47:20 Метод GetBlockGroupWithName() объекта GridTerminalSystem - находим пользовательскую группу блоков. 2:48:50 Метод GetBlocksOfType() - достаем в список блоки определенного типа. Этот метод может быть вызван из группы блоков - тогда достанем пистоны только принадлежащие к заданной группе. Его же можно вызвать из GridTerminalSystem - тогда получим список всех пистонов на гриде. 2:51:40 Конвертим строковый аргумент в float. Получаем высоту этажа в виде аргумента. 2:53:30 Цикл foreach - обрабатываем все элементы списка. Тесты скрипта, отладка, лов багов. 3:03:20 Назначаем аргументы кнопкам лифта. Пробуем, отлаживаем. 3:06:00 Пример использования нашей собственной функции: ограничиваем максимальную скорость лифта. Тесты лифта. 3:16:20 Теперь осталось только выключать скрипт, когда лифт уже приехал на нужную высоту. Экономим системные ресурсы. 3:19:55 Последние тесты лифта - теперь он работает как надо. 3:21:50 Вопросы, ответы, немного общения и планов. ЗЫ: ПИШИТЕ В КОММЕНТАХ ТЕМЫ, КОТОРЫЕ ХОТЕЛИ БЫ ВИДЕТЬ В РАЗБОРАХ ПРОСТЫХ СКРИПТОВ. Писать скрипты для инженеров удобнее всего в Visual Studio, видео о том, как установить и настроить его под Space Engineers тут:    • Space Engineers: Как установить и настроит...