# VFXPreset 성능 최적화

## 개요

VFX Preset을 보다 효율적으로 활용하기 위해 **Importance**(중요도)와 **Infinite Loop** 설정을 조합하여 다양한 퍼포먼스 타입을 자동으로 결정합니다. 이를 통해 크리에이터는 각 이펙트의 특성에 맞추어 최적화를 진행할 수 있습니다.

또한 정해진 버짓을 기준으로 VFX Preset을 관리할 수 있으므로, 리소스를 절감하는 것뿐만 아니라 이펙트 타입별로 **균형 잡힌 품질과 성능을 유지**할 수 있습니다. 이러한 방식을 통해 크리에이터가 작업 과정에서 더욱 간편하고 효율적으로 VFX Preset을 다룰 수 있도록 합니다.

## VFX Preset 버짓팅

VFX Preset은 기기의 성능을 많이 소모하는 요소입니다. 많이 사용할수록 퀄리티는 향상되지만 성능 저하로 인해 플레이 경험은 오히려 나빠질 수 있습니다. 성능을 보장하려면 VFX 사용을 최소화해야 하지만, 그 경우 게임의 시각적 재미가 감소합니다.

이를 조정하기 위해 오버데어 스튜디오에서는 Importance(중요도)와 Infinite Loop 설정을 기반으로 Performance Type을 자동 분류하고 각 타입별 리소스를 할당하여, 크리에이터가 쉽게 VFX를 사용하면서도 성능을 보장할 수 있는 기능을 제공합니다.\\

### 제약 사항

<table><thead><tr><th width="218.166748046875" valign="middle">구분</th><th>제약사항</th></tr></thead><tbody><tr><td valign="middle"><strong>버짓 업데이트 주기</strong></td><td><ul><li>Spawn: 월드에 배치되거나 Enabled 되는 시점에 버짓 업데이트</li><li>Tick: 일정 주기마다 우선순위를 계산하여 버짓 업데이트</li></ul></td></tr><tr><td valign="middle"><strong>버짓 내 우선순위 결정 방식</strong></td><td><ul><li>Distance: 카메라와의 거리에 따라 가까운 것을 우선적으로 표시</li><li>Age: 인스턴스가 최근 Spawn된 순서대로 우선적으로 표시</li></ul></td></tr><tr><td valign="middle"><strong>버짓 초과 시 처리 방식</strong></td><td><ul><li>Kill: 렌더링 비활성화 (재할당 불가)</li><li>Asleep: 일시적 비활성화, 여유가 생기면 재할당 가능</li></ul></td></tr><tr><td valign="middle"><strong>표현 최대 거리</strong></td><td>카메라 기준 최대 거리 초과 시 버짓에서 제외</td></tr><tr><td valign="middle"><strong>최대 인스턴스 수</strong></td><td>Performance Type별 최대 허용 인스턴스 수</td></tr><tr><td valign="middle"><strong>동일 이펙트 최대 갯수</strong></td><td>같은 Performance Type 내에서 동일한 모양의 이펙트의 최대 갯수</td></tr></tbody></table>

### Importance와 Performance Type 매핑

VFXPreset의 **Importance**(중요도)와 **Infinite Loop** 설정의 조합에 따라 내부적으로 아래와 같이 Performance Type이 자동 결정됩니다.

<table data-full-width="true"><thead><tr><th width="200">Importance</th><th width="180">Infinite Loop</th><th width="280">Performance Type</th><th>설명</th><th>사용 예시</th></tr></thead><tbody><tr><td><strong>Default</strong></td><td>False</td><td>Default Burst</td><td>성능 고려 없이 반드시 재생되어야 하는 단발성 VFX</td><td>필수적인 연출 효과</td></tr><tr><td><strong>Default</strong></td><td>True</td><td>Default Looping</td><td>성능 고려 없이 반드시 재생되어야 하는 반복 VFX</td><td>필수적인 반복 연출 효과</td></tr><tr><td><strong>Background</strong></td><td>False</td><td>Background Burst</td><td>배경에서 특정 시점에 재생되는 VFX</td><td>스파크, 연기 효과</td></tr><tr><td><strong>Background</strong></td><td>True</td><td>Background Looping</td><td>배경에서 지속적으로 재생되는 VFX</td><td>횃불, 비 효과</td></tr><tr><td><strong>Gameplay</strong></td><td>False</td><td>Gameplay Burst</td><td>특정 시점에 잠깐 재생되는 게임 플레이 VFX</td><td>피격 효과, 레벨업·아이템 획득 효과</td></tr><tr><td><strong>Gameplay</strong></td><td>True</td><td>Gameplay Looping</td><td>지속적으로 재생되는 게임 플레이 VFX</td><td>보호막, 버프 오라 효과</td></tr><tr><td><strong>Critical</strong></td><td>-</td><td>Critical</td><td>게임 플레이적으로 반드시 표현되어야 하는 VFX</td><td>득점 효과, 시작·종료 조건 이펙트</td></tr></tbody></table>

## Performance Type 별 리소스 제한

### 일반사양 옵션에서 리소스 제한

<table data-full-width="true"><thead><tr><th width="239.8333740234375">Limitation</th><th align="center">Background Looping</th><th align="center">Background Burst</th><th align="center">Gameplay Looping</th><th align="center">Gameplay Burst</th><th align="center">Critical</th><th align="center">Default</th></tr></thead><tbody><tr><td><strong>업데이트 주기</strong></td><td align="center">Tick (Medium)</td><td align="center">Spawn</td><td align="center">Tick (High)</td><td align="center">Spawn</td><td align="center">Spawn</td><td align="center">Spawn / Tick (Low)</td></tr><tr><td><strong>우선순위 결정 기준</strong></td><td align="center">Distance</td><td align="center">Distance</td><td align="center">Distance</td><td align="center">Age</td><td align="center">Age</td><td align="center">Distance</td></tr><tr><td><strong>버짓 초과 시 처리 방식</strong></td><td align="center">Asleep</td><td align="center">Kill</td><td align="center">Asleep</td><td align="center">Kill</td><td align="center">Kill</td><td align="center">Kill / Asleep</td></tr><tr><td><strong>표현 가능한 최대 거리</strong></td><td align="center">10000</td><td align="center">5000</td><td align="center">10000</td><td align="center">12500</td><td align="center">제한 없음</td><td align="center">제한 없음</td></tr><tr><td><strong>해당 버짓의 최대 인스턴스 수</strong></td><td align="center">8</td><td align="center">8</td><td align="center">40</td><td align="center">60</td><td align="center">20</td><td align="center">88 / 48</td></tr><tr><td><strong>동일한 이펙트의 갯수 제한</strong></td><td align="center">4</td><td align="center">4</td><td align="center">10</td><td align="center">30</td><td align="center">20</td><td align="center">88 / 48</td></tr></tbody></table>

### 저사양 옵션에서 리소스 제한

<table data-full-width="true"><thead><tr><th width="239.833251953125">Limitation</th><th align="center">Background Looping</th><th align="center">Background Burst</th><th align="center">Gameplay Looping</th><th align="center">Gameplay Burst</th><th align="center">Critical</th><th align="center">Default</th></tr></thead><tbody><tr><td><strong>업데이트 주기</strong></td><td align="center">Tick (Medium)</td><td align="center">Spawn</td><td align="center">Tick (High)</td><td align="center">Spawn</td><td align="center">Spawn</td><td align="center">Spawn / Tick (Low)</td></tr><tr><td><strong>우선순위 결정 기준</strong></td><td align="center">Distance</td><td align="center">Distance</td><td align="center">Distance</td><td align="center">Age</td><td align="center">Age</td><td align="center">Distance</td></tr><tr><td><strong>버짓 초과 시 처리</strong> <strong>방식</strong></td><td align="center">Asleep</td><td align="center">Kill</td><td align="center">Asleep</td><td align="center">Kill</td><td align="center">Kill</td><td align="center">Kill / Asleep</td></tr><tr><td><strong>표현 가능한 최대 거리</strong></td><td align="center">1250</td><td align="center">450</td><td align="center">2500</td><td align="center">1000</td><td align="center">제한 없음</td><td align="center">제한 없음</td></tr><tr><td><strong>해당 버짓의 최대 인스턴스 수</strong></td><td align="center">6</td><td align="center">6</td><td align="center">6</td><td align="center">25</td><td align="center">4</td><td align="center">32 / 12</td></tr><tr><td><strong>동일한 이펙트의 갯수 제한</strong></td><td align="center">3</td><td align="center">4</td><td align="center">4</td><td align="center">4</td><td align="center">2</td><td align="center">32 / 12</td></tr></tbody></table>

## 사용 방법

### VFX Preset 생성

레벨 브라우저에서 VFX Preset을 생성하고 원하는 효과와 색상 크기 등을 조정합니다.

<figure><img src="/files/SHV8P4UmDcYSZOqbHXeA" alt=""><figcaption></figcaption></figure>

자세히 알아보기

{% content-ref url="/pages/xSyoRShlKPjBIwbLoQMO" %}
[VFX](/korean/manual/studio-manual/object/vfx.md)
{% endcontent-ref %}

### Importance 지정

해당 이펙트의 중요도(Importance)를 설정합니다. 자신이 사용하려는 이펙트의 용도와 중요도를 판단하여 결정하도록 합니다. Importance와 Infinite Loop 설정의 조합에 따라 내부 Performance Type이 자동으로 결정됩니다.

<figure><img src="/files/NjbAyj7yVCCoWFdG7Srr" alt=""><figcaption></figcaption></figure>

### 월드 배치

만든 이펙트가 나올 위치나 지역에 VFX Preset를 배치합니다. 만일 미리 월드에 배치해야 하는 경우가 아니라 게임 중간에 동적으로 배치되어야 하는 경우, ReplicatedStorage 또는 Serverstoorage에 저장해 두었다가 Clone이나 Parent 지정을 통해 월드에 배치 할 수 있습니다.

```lua
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local VFXPreset = ReplicatedStorage:WaitForChild("VFXPreset")

local Workspace = game:GetService("Workspace")
local Part = Workspace:WaitForChild("Part")

local NewVFX = VFXPreset:Clone()
VFXPreset.Parent = Part
```

## 주의사항

VFX Preset의 Importance는 런타임에는 변경이 불가능 합니다. VFX Preset을 런타임 중에 새로 생성하여 배치 할 때에는 ReplicatedStorage 또는 ServerStorage에 미리 생성 해 두고 Clone 등을 통하여 동적으로 배치하여야 합니다.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.overdare.com/korean/manual/studio-manual/asset-and-resource-creation/vfxpreset-budget.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
