Решил написать еще одну статью, в которой будет рассказано про некоторые неочевидные фишки редактора (и движка), например скрипты и моторы (что-то вы видели в Finalized. Те же, кто застал True End, могут рассказать про огромные скриптовые конструкции, из-за которых игра почти зависала, лол). Статья не будет рассказывать про то, как этим самым редактором пользоваться, он крайне прост в освоении.
В статье будет использоваться так называемая версия "1.3", выклянченная у разработчика на нужды мода. Но для начала КРАЙНЕ РЕКОМЕНДУЮ использовать версию 1.2, которая была выложена открыто и УКАЗЫВАЕТ НА ЯВНЫЕ ОШИБКИ В УРОВНЯХ.
Игра версии 1.2 http://sosjava.gb7.ru/forum/index.php?act=file&id=120 (тексты внутри уровней, будучи впихнутыми в игру, все равно не распознаются, используйте Загружаемые уровни -> -download- -> file://%MyFile%) (если ссылка не работает используйте копипаст)
-----
Скрипты
Обнаружение положения.
Идея заключается в том, что в невидимой полости в стене есть маленький монстрик, который следует за Гишем. Ну а в дальнем конце есть кнопочка И по идее, когда Гиш попадает в зеленый прямоугольник, тогда же и откроется в дверь. На самом деле это не совсем так. Максимальная (и даже крейсерская) скорость Гиша намного больше скорости монстриков, поэтому, если движение будет без остановки, то монстрик ткнет на кнопку к тому моменту, когда Гиш очутится в оранжевом прямоугольнике.
Следует отметить, что ВСЕ платформы и мобы обрабатываются только (И ТОЛЬКО) тогда, когда они находятся в области экрана (для платформ достаточно, чтобы хоть какая-то часть пути платформы попадала в экран). Поэтому все подобные конструкции желательно размещать в непосредственной близости от коридоров.
Комбинируя несколько подобных конструкций можно создать скриптовую комнату. Сначала монстрик 1 откроет путь монстрику №2 (нужно, чтобы ожидаемое событие не произошло слишком рано), одновременно закрывая "настоящий" выход из комнаты. Игрок идет назад. и перед его носом закрывается дверь на выход (монстрик 2!). Но, пройдя к дальней двери снова, он, пощупав пол и стены, обнаружит открывшийся "тайный" выход. Платформа 3 предназначена для того, чтобы случайно не запереть второго монстрика опять.
"Одноразовые" кнопки. Таймеры.
Допустим, мы хотим, чтобы какую-то платформу можно было запустить только один раз. Редактор нам такой возможности не предоставляет, но ее можно спокойно устроить. Объяснять тут, по сути, нечего, вся конструкция проста и наглядна. Игрок нажмет кнопку, дверь откроется, но дальнейшие нажатия не принесут никакого эффекта, так как ящик с кнопки уже не сдвинется.
Передвижения ящика отнимает некоторое время. Обычно оно незначительно, но его можно увеличить. Для этого просто достаточно уменьшить скорость скрытой платформы, либо удлинить путь. В последнем случае на кнопку можно "повесить" сразу несколько платформ, причем в разное время. Так, на скрине за игроком сначала закроется дверь, и уже затем откроется дверь на выход.
Нельзя делать кнопку соседней с ящиком. Из-за особенностей движка такая кнопка будет нажата сразу же. Но в таком случае, если требуется большая задержка, может пройти достаточно большое время.
Чтобы этого избежать, достаточно лишь увеличить количество "таймеров" и назначить разную скорость платформам. И да, проверено, два таких таймера в таком положении срабатывают. Третий уже в большинстве случаев не влезает.
Таймер можно сделать вертикальным, так иногда бывает удобнее, например здесь. Но в таком случае желательно конечную точку платформы отдалять хотя бы на один блок от кнопки. Бывали случаи, когда кнопка не срабатывала, или срабатывала несколько раз. Особенности движка, кек.
Логическое И.
Если с элементами ИЛИ и НЕ особых проблем не возникает, то И уже несколько сложнее. Для тех, кто не понял: мы хотим от игрока потребовать нажать несколько кнопок одновременно. И только после одновременного нажатия ВСЕХ ТРЕБУЕМЫХ кнопок запустить какую-то платформу, или скрипт. Можно, конечно, просто поставить несколько дверей, ну а если наша цель не дверь?
В этом нам поможет эта небольшая конструкция. Отмечу, что тут ОБЯЗАТЕЛЬНО ставить тип служебных платформ "удерживание, одно движение" (в других это было не сильно принципиально), стены делать скользкими (вы же не хотите, чтобы ящик сползал полчаса? Хотя, никто не мешает добавить один блок в ширину), ну и не забыть ящик, в конце концов.
Некоторые махинации можно провернуть с теоретической возможность уничтожать ящики (а при грамотной расстановке и респаунить). Так однажды я сделал дверь, которую можно было открыть четырехзначным "паролем". Причем двумя "паролями", лол.
Все большие скриптовые конструкции представляют из себя комбинацию этих, но не переусердствуйте, ибо иногда (с вероятностью в 0,1%) эти механизмы могут не сработать как надо. Чем их больше - тем больше шанс ошибки. Да и производительность игры в особо загруженных участках может хромать.
Извращенный вариант событийного вертикального таймера.
Да, иногда нужно и такое. Например внезапное событие во время подъема на лифте. Внезапное вытряхивание врагов и прочего хлама на игрока выглядит эффектно :В.
(Сама конструкция в прямоугольнике). Именно такое устройство обусловлено следующим: Гера - единственный неубиваемый объект в игре; кнопки, висящие в воздухе, кликабельны (и пропускаются редактором) только если поставлены на уголки; платформа под Герой должна захватывать и стену, иначе она просто выползет, лол.
Елдотень на скрине в последний момент откроет дверь сверху, без необходимости сложных вычислений расстояния. Да и как уже говорилось, дальность действия всех скриптов с платформами конечна и не очень большая. (А еще я забыл поставить закрыващую дверь, иначе для чего я делал сдвоенный таймер?)
Генератор нажатий.
Несмотря на то, что в движке есть бесконечно двигающиеся платформы, иногда бывает необходимым генерировать нажатия с определенным интервалом. Тут нам и поможет эта конструкция. Но ей надо пользоваться очень аккуратно: если в какой-то момент времени будет активна ТОЛЬКО ОДНА платформа, то скрипт сломается. Поэтому надо стараться делать так, чтобы игрок в первый момент времени подходил сверху. Или снизу.
Неправильно!
Правильно.
Физика.
Моторы.
Относительно недавняя находка, базируется на баге движка, из-за которого все объекты, примыкающие к обратной стороне колючек, с силой выталкиваются. Конструкция достаточно наглядна. Вращения, правда, временами дерганные, при больших нагрузках может измениться направление вращения. Но если прилепить к чему-то большому и оно успеет набрать достаточно большой импульс, то становится неубиваемым и неостановимым. Скорость можно регулировать размером: чем он больше, тем ниже скорость. И, что важно, нахождение в пределах экрана не требуется для работы. Но ставить слишком далеко не советую.
Жесткие пути движения объектов.
Появилось синхроно с предыдущим, идея та же. Но есть несколько принципиальных моментов: - Чем тяжелее конструкция, тем больше Глазиков нужно для нормального функционирования, особенно, если на пути есть подъемы; - Перещение достаточно быстрое, и скорость отрегулировать невозможно; - Снизу должно быть ДВА блока, иначе велик шанс застревания Глазиков в стене (особенно при большой нагрузке); - Вода желательна для прямой и необходима для подъемов; - Устроить старт конструкции НЕ сразу практически нереально.
Односторонние пути.
Наиболее нестабильная хренотень из всех, но весьма вкусная. При приближении к левому краю игрока засасывает и выталкивает справа. В 95% (98% у верхнего) - невредимого. Но наиболее оптимальный результат получается, если игрок находится в скользком состоянии (в липком верхний вариант вообще не дает непрерывное движение). Не работает в вертикальных направлениях, вниз не нужно, вверх - изгаляйтесь с платформами.
Какой из вариантов использовать - решать вам. Субъективно, верхний реже дает сбои, но нижний работает несколько эффективнее... и очевиднее что ли.