퍼즐 메카닉은 어드벤처, RPG, 플랫포머, FPS 등 다양한 게임 장르에 적용할 수 있습니다. 또는 매력적인 퍼즐로 구성된 독립적인 퍼즐 게임 경험을 만들 수도 있습니다. 각 퍼즐의 초기 조건이나 해답을 다르게 지정하면 같은 게임 내에서 하나의 퍼즐 세팅을 여러 번 재사용할 수도 있습니다.
이 퍼즐에서 플레이어는 버튼과 상호작용하여 적절한 조명 조합(이 경우 모두 켜기)을 찾아야 합니다. 각 버튼은 특정 조합의 조명을 켜고 끕니다. 퍼즐을 풀면 보상으로 아이템이 생성됩니다.

이 튜토리얼에서는 포트나이트 언리얼 에디터(UEFN) 에서 Verse 로 제작한 하나의 장치만을 사용해 조명의 시작 상태, 각 버튼이 켜고 끄는 조명의 조합, 그리고 퍼즐의 해답을 커스터마이징할 수 있는 퍼즐을 만드는 방법을 알아봅니다.
사용된 Verse 언어 기능
array: 생성할 장치는 배열을 두루 사용해 필요한 로직을 수행합니다. 버튼, 조명, 조명 상태, 이벤트 핸들러 등을 배열에 저장해 조명의 개수, 조명의 시작 상태, 해답 상태 등 퍼즐 환경설정을 변경할 수 있도록 만들고 코드 중복을 방지합니다.for:for표현식으로는 장치가 사용하는 배열을 반복작업할 수 있습니다.-
if:if를 사용해 퍼즐이 풀렸는지 확인하거나GetCreativeObjectsWithTag()로 찾은 장치를 필터링하고 조명 상태를 제어합니다. failure: 실패 컨텍스트를 사용해 배열에 액세스하고, 퍼즐이 풀린 시점을 탐지하고, 프로그램의 플로를 제어합니다.-
class:tagged_lights_puzzle포크리 장치 클래스에 더해 버튼InteractedWithEvent핸들러에 사용할 클래스를 생성해 이벤트별 프로퍼티를 활성화합니다.
사용된 Verse API
- 편집 가능 프로퍼티: Verse로 제작한 장치 프로퍼티 다수는 UEFN에 노출되므로 에디터에서 커스터마이징할 수 있습니다. 이 프로퍼티를 변경하여 새 퍼즐 환경설정을 생성할 수 있습니다.
GetCreativeObjectsWithTag():GetCreativeObjectsWithTag()API를 사용하면 에디터에서 레퍼런스를 노출하지 않고 런타임에 커스터마이징할 수 있는 게임플레이 태그가 달린 모든 장치를 찾을 수 있습니다. 이 경우 조명에는puzzle_light태그가 달려 있습니다.- 장치 이벤트: InteractedWithEvent 버튼은 게임 스테이트를 제어하는 데 사용됩니다.
단계
다음 단계를 따라 플레이어가 아이템을 생성하기 위해 올바른 조명 조합을 찾아야 하는 퍼즐을 만드는 방법을 학습할 수 있습니다. 참고할 수 있는 완성된 스크립트가 마지막 단계에 포함되어 있습니다.