Studio

Рельеф и свет в Roblox Studio: карта, которую хочется разглядывать

Как слепить холмы, реку и пещеру редактором рельефа, чем Voxel отличается от Future и почему одна правильная настройка света меняет карту сильнее, чем сто новых деталей.

Средне 22 минуты проверен 1 час назад

Что понадобится

Roblox Studio и умение двигать деталь в сцене. Хватит гайда «Первая игра в Roblox Studio».

Текст гайда «Рельеф и свет в Roblox Studio: карта, которую хочется разглядывать»

Содержание

Две карты из одинаковых блоков выглядят по-разному, и дело почти никогда не в количестве деталей. Дело в двух вещах: под ногами лежит настоящий рельеф вместо плоской платформы, и свет настроен под задумку, а не оставлен как есть. Обе вещи делаются в Studio без единой строчки кода, и обе занимают вечер, а не месяц.

Рельеф — это не детали#

Terrain в Roblox — отдельная сущность. Это не набор кубиков, а объём, который заполнен материалом: землёй, камнем, песком, водой. Именно поэтому холм из рельефа мягкий, у него нет граней, а пещера внутри него — настоящая дыра, а не декорация. Живёт всё это в одном объекте Terrain внутри Workspace, и удалять его не надо: он там с самого начала.

Инструменты лежат на вкладке Terrain вверху окна Studio. Их удобно разделить на три группы.

Что делают инструменты рельефа
ГруппаИнструментыЗачем
Создать сразуGenerate, ImportНасыпать целый остров или горы одним нажатием — как черновик
ОбластьSelect, Move, Resize, Copy, DeleteРаботать с куском карты целиком: подвинуть, скопировать, стереть
Лепить рукамиAdd, Subtract, Grow, Erode, Smooth, FlattenДобавлять и убирать объём кистью, сглаживать и выравнивать
МатериалыPaint, Replace, Sea LevelКрасить поверхность, менять один материал на другой, заливать воду

Начинай с Generate, а не с чистого листа

Ручная лепка с нуля — самый долгий путь. Нажми Generate, получи черновой ландшафт с горами и водой, а потом убери лишнее инструментом Subtract и выровняй площадки под постройки через Flatten. Так карта появляется за час, а не за неделю.

У каждой кисти есть три настройки, которые решают всё: размер (Base Size), сила и форма — шар, куб или цилиндр. Большая кисть лепит общий силуэт, маленькая — тропинку и вход в пещеру. Не пытайся делать мелкую деталь большой кистью: получится каша, и разгребать её придётся дольше, чем лепить заново.

Вода и пещеры#

Вода в рельефе — такой же материал, как земля. Её можно нарисовать кистью с материалом Water или залить всю карту до нужной высоты через Sea Level. Персонаж в такой воде плавает сам, писать для этого ничего не нужно.

Пещера делается наоборот: сначала насыпается гора, потом внутри неё инструментом Subtract выедается ход. Проверь результат до того, как ставить внутрь свет: узкий проход, в который персонаж не пролезает, — самая частая беда самодельных пещер. Ширина хода должна быть заметно больше персонажа, иначе камера упрётся в стену и играть будет невозможно.

Рельеф стоит производительности

Огромная карта из рельефа с водой и пещерами грузит слабые телефоны сильнее, чем ровная поляна с домиками. Если игра рассчитана на мобильных, не делай мир размером с континент: лучше небольшая, но проработанная карта. Проверить, что получилось, можно эмулятором устройства прямо в Studio.

Свет: одна служба, четыре режима#

За свет отвечает служба Lighting в дереве объектов. Главное её свойство — Technology: оно решает, как вообще считаются тени. Режимов несколько, и разница между ними видна сразу.

Режимы освещения
РежимКак выглядитКому подходит
VoxelМягкий свет крупными кубами, теней от мелочей нетПростые карты, ставка на слабые устройства
ShadowMapЧёткие тени от солнца, лампы светят прощеЗолотая середина, самый частый выбор
FutureТени от каждой лампы, честные бликиАтмосферные игры, где картинка важнее максимального FPS

Дальше идут свойства, которые настраивают саму сцену. Их немного, и каждое стоит попробовать вживую — эффект виден мгновенно.

  • ClockTime — время суток от 0 до 24: положение солнца и цвет неба
  • Brightness — общая сила солнечного света
  • Ambient и OutdoorAmbient — подсветка теней в помещении и на улице; полностью чёрные тени почти всегда выглядят грязно
  • GlobalShadows — тени вообще; выключишь — мир станет плоским
  • ExposureCompensation — экспозиция: осветляет или притемняет всю картинку целиком
  • FogEnd — расстояние, на котором всё тонет в тумане; удобно, чтобы спрятать край карты

Атмосфера, небо и эффекты#

Внутрь Lighting добавляются дочерние объекты — именно они дают ту самую «атмосферность», ради которой всё и затевалось. Добавляются они кнопкой «плюс» рядом с Lighting.

Что можно положить в Lighting
ОбъектЧто делает
AtmosphereВоздух с плотностью и дымкой: даль тает, объём чувствуется
SkyСвоё небо, размер солнца и луны, количество звёзд
BloomEffectСвечение вокруг ярких мест
ColorCorrectionEffectЦветокоррекция: контраст, насыщенность, оттенок всей картинки
SunRaysEffectЛучи от солнца
DepthOfFieldEffectРазмытие дальнего плана
BlurEffectРазмытие всего экрана — обычно включают из кода на паузе

Эффекты — приправа, а не блюдо

Свечение на максимуме и кислотная цветокоррекция превращают карту в мыло. Хорошее правило: выставил значение, которое нравится, — уменьши его вдвое и посмотри снова. В девяти случаях из десяти второй вариант окажется лучше.

Лампы: три вида и одна опасность#

Кроме солнца свет дают источники внутри деталей. Их три: PointLight светит во все стороны, как лампочка; SpotLight — конусом, как фонарь; SurfaceLight — от плоскости детали, как потолочная панель. Все три кладутся внутрь Part или Attachment.

У каждого есть Brightness, Range, Color и галочка Shadows. Опасность одна: свет — самая дорогая вещь на карте. Полсотни ламп с тенями в режиме Future уронят FPS на телефоне гораздо надёжнее, чем тысяча кубиков. Ставь лампы там, где игрок действительно бывает, и не включай тени у декоративных гирлянд.

Плавная смена дня и ночи · Luau
-- Script в ServerScriptService.
-- Полный цикл суток за десять минут игрового времени.

local Lighting = game:GetService("Lighting")
local RunService = game:GetService("RunService")

local CYCLE_SECONDS = 600 -- сколько длится сутки
local HOURS_PER_SECOND = 24 / CYCLE_SECONDS

RunService.Heartbeat:Connect(function(delta)
    -- ClockTime идёт от 0 до 24 и сбрасывается через остаток от деления.
    Lighting.ClockTime = (Lighting.ClockTime + delta * HOURS_PER_SECOND) % 24
end)

Смену суток считает сервер: тогда время одинаковое у всех игроков. Если написать то же самое в LocalScript, у каждого будет свой полдень — и договориться, «встречаемся на закате», станет невозможно.

Порядок работы, который экономит вечер#

  1. Сначала силуэт: крупные формы рельефа и главные постройки. Никакого света и эффектов
  2. Потом проходимость: пробеги карту персонажем, поправь слишком крутые склоны и узкие места
  3. Дальше материалы: покрасить землю, камень, песок — карта сразу перестаёт быть однотонной
  4. Только теперь свет: время суток, яркость, тени. Смотри на карту с уровня глаз игрока, а не сверху
  5. В конце эффекты и лампы — по одному, каждый со сдержанным значением
  6. Финальная проверка на телефоне через эмулятор устройства: то, что красиво на компьютере, там может стать кашей

Когда карта готова, её пора наполнить звуком и проверить в бою: об этом — «Звук и музыка в игре» и «Как тестировать свою игру». Весь курс по Studio собран в разделе Studio.

Обсуждение

Пиши по делу и без личных данных. Ссылки на сторонние сайты, обмен и «бесплатные робуксы» мы скрываем — почему.

Комментарии пишут те, кто вошёл — так спокойнее всем.

Войти

Пока никто ничего не написал. Будь первым.