Verse는 UEFN에서 작동하는 프로그래밍 언어입니다. 이 페이지에서는 프로젝트에 Verse를 빠르게 추가하는 방법에 대한 기초를 다루며, 이 언어로 무엇을 할 수 있는지 감을 잡을 수 있도록 초보와 숙련된 프로그래머 모두를 위한 토대를 제공합니다.
이 튜토리얼에서 앞서 만든 타깃 장치는 한 번의 명중으로는 쓰러지지 않습니다. 따라서, Verse를 사용하여 이를 정확히 구현하는 방법을 알아보겠습니다.
새 Verse 장치 생성
Verse 장치를 생성하여 섬에 배치해 보겠습니다.
Verse 장치는 사용자의 지침에 따라 다른 장치가 무엇을 해야 하는지 알려주는 장치라고 할 수 있습니다. 이를 위한 또 다른 방법으로 UEFN의 기존 장치를 다시 프로그래밍하는 Verse 프로그램을 만들어 보겠습니다.
메뉴 바에서 Verse > Verse 익스플로러(Verse Explorer)를 선택합니다.
Verse 익스플로러에서 프로젝트를 우클릭하고 프로젝트에 새로운 Verse 파일 추가(Add new Verse file to project)를 선택합니다.
그러면 Verse 스크립트 생성(Create Verse Script) 창이 열립니다.
Verse 스크립트 생성 창에서 Verse 장치(Verse Device) 템플릿을 선택합니다.
창의 하단에서 장치의 이름을 shooting_range_manager_device로 변경한 후 생성(Create)을 클릭합니다.
콘텐츠 브라우저(Content Browser)의 프로젝트 이름 아래에서 shooting_range_manager_device를 찾거나, 검색창을 사용하여 장치를 찾습니다.
메뉴 바에서 Verse > Verse 코드 빌드(Build Verse Code)를 선택합니다.
Verse 장치를 위한 코드 작업 시 장치를 빌드(컴파일이라고도 함)해야 사용할 수 있습니다. 즉, Verse에서 게임 또는 게임의 일부로 실행할 수 있는 형식으로 장치를 만들 수 있습니다. Verse 장치는 빌드가 완료될 때까지 콘텐츠 브라우저나 아웃라이너에 표시되지 않습니다.
콘텐츠 브라우저의 프로젝트 이름 아래에서 shooting_range_manager_device를 찾거나, 검색창을 사용하여 장치를 찾습니다.
장치를 뷰포트로 드래그합니다.
디테일(Details) 패널의 사용자 옵션(User Options)에서 게임 내 표시(Visible in Game)를 선택 해제하여 게임을 실행하는 동안 이 장치를 숨깁니다.
좋은 타깃 구성
3. 사격 갤러리 제작 에서 좋은 타깃을 만든 바 있습니다.
좋은 타깃이 한 번의 명중으로 쓰러지도록 Verse 장치를 사용하여 타깃을 구성해 보겠습니다.
Verse 익스플로러에서
shooting_range_manager_device.verse를 더블클릭하여 Verse 파일을 엽니다.파일 내의 모든 코드를 삭제한 후 아래의 코드를 복사하여 이전 코드가 있었던 자리에 붙여 넣습니다.
Verseusing { /Fortnite.com/Devices } using { /Verse.org/Simulation } # A device that manages shooting range gameplay. shooting_range_manager_device := class(creative_device): @editable GoodTarget1:shooting_range_target_track_device = shooting_range_target_track_device{} @editableVerse에서 변수(variable)는 프로그램 실행 중 바뀔 수 있는 프로그램 내 정보입니다.
편집 가능(editable)한 변수인 경우, 코드가 UEFN에 노출되며, 이는 결국 Verse 코드를 매번 리빌드할 필요 없이 UEFN 내에서 변경할 수 있음을 뜻합니다.
방금 Verse 장치에 추가한 코드는
shooting_range_track_device타입의 변수 세 개(GoodTarget1, GoodTarget2, GoodTarget3)를 만듭니다. 이는 플레이어가 맞추면 점수를 획득하는 타깃을 나타냅니다. 이러한 변수를@editable로 만들면 이제 Verse 코드를 계속 변경하지 않고도 디테일 패널에서 해당 값을 원하는 대로 설정할 수 있습니다. 이 코드를 처음으로 추가하는 것이기 때문에 코드를 컴파일해야 합니다.shooting_range_manager_device의 디테일 패널이 열린 상태에서 뷰포트의 shooting_range_manager_device를 선택합니다.
코드를 컴파일합니다.
디테일 패널에서 각 좋은 타깃의 값을 서로 다른 사격 연습용 표적 트랙 장치로 설정합니다.
아래 코드 블록의
<# --- New Code Start --- #>부터 시작되는 코드 청크를 복사하여 Verse 파일에 붙여 넣습니다.붙여 넣은 후 코드를 컴파일합니다.
다음 코드를 추가하여 명중 시 좋은 타깃이 쓰러지도록 만듭니다.
이벤트 구독은 타깃의 HitEvent와 해당 타깃에 정의된 콜백을 연결합니다.
Verseusing { /Fortnite.com/Devices } using { /Verse.org/Simulation } # A device that manages shooting range gameplay. shooting_range_manager_device := class(creative_device): @editable GoodTarget1:shooting_range_target_track_device = shooting_range_target_track_device{} @editable
# 또는 <# and ends with #>로 시작되는 코드 블록의 줄을 코드 코멘트(code comments)라고 합니다.
코드 코멘트는 프로그램의 일부가 아닙니다. 이는 프로그래머가 다른 프로그래머에게 정보를 제공하기 위해 또는 어떤 작업을 어떤 방식으로 왜 했는지를 기억하기 위해 작성된 코멘트입니다.
코드 코멘트에 대한 자세한 내용은 Verse 언어 퀵 레퍼런스의 코드 코멘트 섹션을 참고하세요.
나쁜 타깃 구성
나쁜 타깃은 테디 베어(Teddy Bears)로 커스터마이징된 사격 연습용 표적(Target Dummy) 장치입니다. 이번에는 한 번의 명중으로 타깃이 쓰러지지만, 명중할 때마다 플레이어가 점수를 얻는 대신 잃도록 Verse 장치에 타깃을 추가합니다.
다음 코드를 추가하여 세 개의
shooting_range_target_device변수를 생성하고 나쁜 타깃에 대한 레퍼런스를 저장합니다.Verseusing { /Fortnite.com/Devices } using { /Verse.org/Simulation } # A device that manages shooting range gameplay. shooting_range_manager_device := class(creative_device): @editable GoodTarget1:shooting_range_target_track_device = shooting_range_target_track_device{} @editable코드를 컴파일합니다.
뷰포트에서 shooting_range_manager_device를 선택합니다.
디테일 패널에서 각 나쁜 타깃의 값을 서로 다른 사격 연습용 표적 장치로 설정합니다.
다음 코드를 추가하여 명중 시 나쁜 타깃이 쓰러지도록 만듭니다.
Verseusing { /Fortnite.com/Devices } using { /Verse.org/Simulation } # A device that manages shooting range gameplay. shooting_range_manager_device := class(creative_device): @editable GoodTarget1:shooting_range_target_track_device = shooting_range_target_track_device{} @editable
득점 구성
Verse를 사용하여 장치를 커스터마이징하려면 먼저 커스터마이징하려는 장치를 추가해야 합니다.
포트나이트 장치만 사용하여 득점을 구성할 수 있지만, Verse에서 이 작업을 보다 손쉽게 할 수 있으며 더 적은 장치로 가능합니다.
득점 장치 추가
두 가지 타입의 득점(점수 더하기 및 빼기)을 구성한다 하더라도 Verse를 사용하면 이 두 타입을 위해 하나의 득점 장치만 있으면 됩니다.
콘텐츠 브라우저에서 검색창에 점수 관리 장치(Score Manager)를 입력하여 점수 관리 장치를 찾습니다.
점수 관리 장치를 뷰포트로 드래그합니다. 점수 관리 장치 사용자 옵션이 디테일 패널에 열려야 합니다.
디테일 패널에서 다음과 같은 옵션을 수정합니다.
옵션 및 값 사용 단계(Enabled During Phase) = 게임플레이만(Gameplay Only)
HUD에 점수 업데이트 표시(Display Score Update on HUD) = 선택
Verse로 득점 장치 커스터마이징
이제 Verse 장치에 점수 관리 장치를 추가하고 명중된 타깃에 따라 플레이어의 점수를 조정할 수 있습니다.
다음 코드를 추가하여 점수 관리 장치 및 득점 값에 대한 레퍼런스를 저장하기 위한 변수를 생성합니다. 할당된 값을 변경하여 기본 득점 값을 변경하거나 디테일 패널에서 값을 변경하여 기본값을 오버라이드할 수 있습니다.
Verseusing { /Fortnite.com/Devices } using { /Verse.org/Simulation } # A device that manages shooting range gameplay. shooting_range_manager_device := class(creative_device): <# --- New Code Start --- #> @editable ScoreManager:score_manager_device = score_manager_device{}코드를 컴파일합니다.
뷰포트에서 shooting_range_manager_device를 선택합니다.
shooting_range_manager_device의 디테일 패널에서 ScoreManager를 점수 관리 장치로 설정합니다.
다음 코드를 추가하여 좋은 타깃과 나쁜 타깃 명중 시 플레이어의 점수를 업데이트합니다.
Verseusing { /Fortnite.com/Devices } using { /Verse.org/Simulation } # A device that manages shooting range gameplay. shooting_range_manager_device := class(creative_device): @editable ScoreManager:score_manager_device = score_manager_device{} @editable코드를 컴파일합니다.
메뉴 바에서 Verse > Verse 코드 빌드를 선택합니다.
포트나이트 세션을 계속 열어 둔 경우, Verse로 적용한 업데이트 사항을 수신할 수 있도록 라이브 편집으로 '변경사항 푸시'를 클릭합니다. 변경사항이 제대로 적용되는 것을 보려면 게임을 종료한 후 재시작해야 할 수 있습니다.
포트나이트 세션에서 변경사항을 플레이테스트하여 다음 사항을 확인합니다.
좋은 타깃 명중 시 점수가 증가하는지 (플레이 중에 M을 눌러 점수판을 엽니다.)
나쁜 타깃 명중 시 점수가 감소하는지
한 번의 명중으로 타깃을 쓰러뜨릴 수 있는지