특집기사

XML과 루아(Lua) 언어를 이용한 스크립트 제작방법 1편 (번역 kaki104)

/ 2

월드 오브 워크레프트 인터페이스 제작 팁 1

[원문 : Evan / 번역 : 카키104 / 와우메카 3차 기자단 / WOWMECA]

스크렙트 제작을 시작할 때 몇 가지 기본 단계가 있는데, 내가 시작할 때 도움을 받았던 몇 가지 팁을 소개한다. 나는 경험이 더 많은 수정자들에 도움이 되었으면 하는 바램이다.

일단 당신이 제작에 들어가기 앞서서 인터페이스 수정 가이드라인을 읽어보기를 권장한다.

그 가이드라인에는 당신이 버그를 피하는데 도움이 되지는 않으나 그것은 다른 사람이 작성한 스크립트를 이해하고 당신이 스크립트를 작성하는데는 많은 도움이 될 것이다.

시작하기

스크립트를 이해하는 가장 최선의 방법은 기존의 스크립트를 읽어보는 것이다. 그것은 UI 스크립트 엔진의 힘과 유연성을 보여주고 코드에서 어떤 함수를 사용해야 하는지를 찾는데 도움을 줄 것이다.

눈으로 한번 보거나 코드를 무엇을 할 수 있는 준비가 되면 다음을 본다.

처음으로 생각하는 것은 어떻게 스크립트와 프레임을 불러들이는지 알고 싶을 것이다.

거기에는 3가지 기본적인 파일형태가 필요하다. 두가지 파일은 .xml파일과 .lua파일이다.

.xml파일은 윈도우/패널/프레임/버튼의 구조를 정의하고 이벤트 핸들러를 지정하며, .lua 스크립트와의 연결을 설정한다.

.lua파일은 당신이 필요한 새로운 함수를 제공하는 스크립트/코드를 제공한다.

마지막으로 FrameXML.toc 파일이 필요한데 이 파일에는 인터페이스의 모든 목록이 포함되어 있고 게임이 시작될 때 불러들인다. 또한 bindings.xml파일도 불러들이는데 이 파일에는 특정 구조와 당신이 자신의 스크립트에서 사용할 수 있는 키 항목들이 들어있다.

UI엔진을 불러들일 때, 엔진은 InterfaceFrameXMLFrameXML.toc파일을 살펴보고, 리스트의 각 항목들을 불러온다. 리스트의 시작이 "#"일 경우에는 주석으로 처리하지 않는다.

UI를 불러들일 때, FrameXML.toc파일도 포함되고, 여러 지역에서 검색을 하는 코드가 보일 것이다. 우선은 와우가 설치되어 있는 폴더의 상대 경로를 찾아본다. 예를 들어 InterfaceFrameXML.toc를 찾는다고 했을 때 처음에는 내 컴퓨터의 드라이브:World of WarcraftInterfaceFrameXML을 검색한다. 이는 당신이 InterfaceFrameXML폴더를 만들고, 당신이 만든 파일을 그곳에 넣어야함을 말한다. 왜 검색 알고리즘을 알고 있어야 하는가는 당신이 원하는 인터페이스를 다운로드 받아서 실행하고자 할 때 FrameXML.toc파일과

bindings.xml파일을 덮어써야할지도 모르기 때문이다.

그래서 만약 당신이 새로운 UI패널을 만들길 원한다면, 새로운 .xml파일을 만들고 FrameXML.toc파일의 맨 끝에 추가해야한다. 비록 어디에 추가하는 지가 중요하지는 않지만 다른 사람들이 어떤 스크립트를 추가했는지, 어떤 것이 변경되었는지를 쉽게 파악하여 또 다른 사람의 스크립트와 합치는 작업 등 을 하기가 쉬워진다.

.lua파일을 로드하기 위해서는 .xml파일에 연결이 되어있어야 한다. 메인 윈도우에 버튼을 추가 할 때 〈Ui〉〈/Ui〉를 .xml파일에 추가한다.

〈Script file="myMod.lua"/〉

위와 같은 방법으로 당신의 파일을 불러 올 수 있다.

UI 구성요소의 구조

UI의 구성은 .xml파일에 되부름 구조로 정의되어 있다. 각 `main`은 다음과 같은 구조를 가진다.(어떤 구성요소는 선택사항이다)

〈Frame name="..." ...〉

〈Size〉...〈/Size〉

〈Anchors〉...〈/Anchors〉

〈Layers〉...〈/Layers〉

〈Frames〉...〈/Frames〉

〈Scripts〉...〈/Scripts〉

〈/Frame〉

크기(Size)는 프레임과 버튼의 크기를 지정한다.

앵커(Anchor:위치 고정 값)는 〈anchor〉란 항목에 있으며, 프레임에서의 상대적인 위치를 지정한다. 앵커는 2가지 값을 가지는데 하나는 당신이 정의한 프레임/버튼 위에서의 위치이고 다른 하나는 전체적인 프레임/버튼 위에서의 위치이다. 2가지 값은 두 위치가 어떻게 관련되는지와 UI엔진이 당신의 컨트롤를 어떤 위치에 배치할지를 나타낸다.

레이어(Layer)는 당신이 윈도우 앵글에 당신의 텍스처, 배경, 기타를 정의하는 곳이다. 그 것은 BACKGROUND, BORDER, 그리고 ARTWORK의 3종류로 구성된다. 각 각은 서로의 위에 표시된다. (역자 : BACKGROUND -> BORDER -> ARTWORK 순서로 표시)

프레임(Frames)

프레임은 되부름 구조를 가지고 있다. 이 노드는 모든 프레임이나 버튼의 자식이고, 서로는 동일한 구조를 가지고 있다. 슬프게도 이 구조의 XML파일은 텍스트 에디터로 읽을 수 있지만 보기가 어렵다.

스크립트(Scripts)

스크립트는 당신의 이벤트 핸들러를 입력하는 곳이다. 일반 적으로 핸들러는 OnClick, OnEnter, OnLeave, OnLoad, OnEvent와 OnUpdate이다.

처음 3개의 이벤트는 마우스관련 핸들러이다.

OnEvent는 어느 대나 게임의 이벤트를 발생 시킨다.(체팅 메세지를 받거나, 마나나 체력이 변경되거나..등등)

OnUpdate는 `idle`이벤트를 계속 호출하는데 아마도 프레임을 표시할 때 한번 발생 할 것 같다. 첫번째 인수는 이것이 얼마나 오래 되었는지를 말하며 두번째 인수는 언제 마지막으로 호출되었는지를 이야기한다.

이외에도 많은 이벤트가 있고, 셈플 스크립트파일을 읽어 보면 각 이벤트 핸들러는 자신이 사용될 때 번역되어 실행되며, 그래서 당신의 이벤트 핸들링이 매우 간단하여 LUA파일을 추가로 필요로 하지 않을 것이다.

한가지 중요한 것은 주석을 적을 때 적은 양의 주석은 "--"를 이용하고 많은 양의 주석은 "--[[ 주석 ]]"을 이용해야 한다는 것이다.

다른 곳으로 퍼가실 때 출처와 번역자를 적어 주시기 바랍니다.

*차후 계속 번역해서 올릴 예정입니다.

*이 제작 가이드는 사용자 인터페이스 연구를 위한 목적으로 번역합니다.

이 기사가 마음에 드셨다면 공유해 주세요
월드 오브 워크래프트 2004년 11월 23일
플랫폼
온라인
장르
MMORPG
제작사
블리자드
게임소개
'월드 오브 워크래프트'는 '워크래프트' 세계관을 토대로 개발된 온라인게임이다. '워크래프트 3: 프로즌 쓰론'의 4년이 지난 후를 배경으로 삼은 '월드 오브 워크래프트'에서 플레이어는 얼라이언스와 호드, 두 진... 자세히
게임잡지
2005년 3월호
2005년 2월호
2004년 12월호
2004년 11월호
2004년 10월호
게임일정
2025
11