Что чаще всего тормозит
- Слишком много деталей в кадре — особенно мелких и прозрачных
- Частицы и источники света без ограничений
- Циклы, которые работают каждый кадр и трогают весь Workspace
- Тяжёлые модели из Toolbox, вставленные без разбора
- Интерфейс из сотен элементов, которые не скрываются
Простые приёмы, которые работают
- Объединяй статичную геометрию и включай StreamingEnabled для больших карт
- Ставь деталям Anchored, если они не должны падать: физике меньше работы
- Убирай CanCollide и CanQuery у декораций — меньше проверок столкновений
- Не создавай объекты в цикле без удаления: утечка памяти убивает сессию через полчаса
- Считай тяжёлое на сервере редко, а не на клиенте часто
Измеряй, а не угадывай
В Studio есть Micro Profiler, окно статистики и Performance Stats в самой игре. Они показывают, на что уходит кадр, — и почти всегда это не то, на что думал автор.
Порядок такой: воспроизвести просадку, посмотреть профиль, поправить одно место, измерить снова. Оптимизация «на всякий случай» только усложняет код.
Правильный цикл
local RunService = game:GetService("RunService")local elapsed = 0RunService.Heartbeat:Connect(function(delta)elapsed += deltaif elapsed < 0.5 thenreturnendelapsed = 0-- сюда редкую проверку: раз в полсекунды, а не 60 раз в секундуend)