2. Autodesk에서 제공하는 UI Solution
플래시(Flash)를 만들고자 하는 응용 어플
리케이션에서 재생 및 상호작용 가능하게
해주는 미들웨어
http://www.autodesk.com/products/scalefo
rm/overview
3. 플래시를 이용한 UI 구현, 특히 게임 UI를
제작할 때 디자이너 친화적인 환경 제공
벡터 그래픽
애니메이션 표현의 자유도 높음
ActionScript(AS)를 통한 제어 자유도 높음
쉽게 말해 플래시에서 표현 가능한 모든 것
들이 일반 응용 어플리케이션에서 표현 가
능함.
8. 현재 사용하고 있는 엔진의 버전에 맞게
Integration 코드를 다운로드 받아야 한다.
현재 우리가 사용하고 있는 엔진 버전은
4.9.2이고 그에 맞는 sf_4.4_ue4_4.9.2.zip
를 다운로드 받는다.
Scaleform SDK 역시 사용하고 있는 비주
얼 스튜디오 버전에 맞게 다운로드 받아주
자.
9. Scaleform SDK
Scaleform UE4 Integration
2개를 받으면 된다. (하나도 아니고 두 개임)
10.
11. 설치를 끝내면 브라우저를 실행할 수 있다.
여기에서 대부분의 정보를 얻을 수 있다.
12. 앞서 엔진 버전에 맞는 통합 코드를 받아야
한다고 했다. 이것은 설치형 파일이 아니라
zip파일을 풀고 수동으로 통합을 해주어야
한다.
13.
14. Engine폴더에 있는 모든 소스 코드를 현재
사용하고 있는 엔진 코드에 Merge해야 한
다. 문서에는 overwriting이라는 적혀 있는
데 그냥 덮어 썼다간 엔진을 수정한 프로젝
트일 경우 소스를 날려 먹을 수 있다. 즉, 덮
어쓰지 않고 Merge해야 한다.
Engine 폴더의 내용을 모두 합친 후에
GenerateProjectFiles.bat를 실행해서 솔루
션 파일을 만들면 통합 끝!
15. 평가판을 사용할 경우 오토데스크로부터
라이선스 키를 부여 받는데 이 키를 소스
코드에 등록해 주어야 제대로 사용이 가능
하다. 라이선스 키 확인은 게임웨어 사이트
에서 어카운트 정보를 보면 된다.
16.
17. 라이선스 키를 적용하려면
ScaleformEngine.cpp파일을 찾은 후
Insert Scaleform License Key here라는 항
목을 검색해서 등록해주면 된다.
18. AS2(ActionScript2)는 더 이상 지원하지 않는 경우도 있으므로 앞으
로 프로젝트를 진행하려면 AS3를 적극 사용할 것을 권한다.
AS2를 사용하지 않는다면 다음과 같은 코드를 찾아서 주석 처리 하
자. 그러면 쓸모 없는 코드 사용을 하지 않게 된다.
Ptr<GFx::ASSupport> pAS2Support = *SF_NEW GFx::AS2Support();
mLoader.SetAS2Support(pAS2Support);
만일 팀의 규모가 클 경우에 모든 개발자에게 스케일폼 SDK를 설치
하라고 하는 것은 좋지 못하다 그러므로 Prebuilt 형태로 제공하려면
다음과 같은 파일들을 모두 엔진에 복사해서 넣어주자.
GFx SDK 4.3.283rdParty to UE4-
QAEngineSourceThirdPartyScaleformGFx3rdParty
GFx SDK 4.3.28include to UE4-
QAEngineSourceThirdPartyScaleformGFxinclude
GFx SDK 4.3.28libs to UE4-
QAEngineSourceThirdPartyScaleformGFxlibs
GFx SDK 4.3.28Src to UE4-
QAEngineSourceThirdPartyScaleformGFxSrc
19. 핵심 에셋 타입으로는 SwfMovie,
GFxMoviePlayer가 있다. 이때 이 둘의 관
계는 다음과 같다.
SwfMovie는 swf파일 내부에 있는 정보(텍
스쳐, 문자열 등)를 가지고 있고
MoviePlayer가 이것을사용한다. 이때 런타
임 정보들은 모두 GFxMoviePlayer가 가지
고 있는다. (예를 들어 AS의 상태)
GFxMoviePlayer SwfMovie
20. MoviePlayer마다 사용자로부터 입력을 받는
다거나 받지 않는 것들이 존재한다. HUD의
경우 보통 사용자 입력을 받지 않는다. UE4에
서 이 두 에셋을 더블 클릭해서 보면 키보드
입력값을 처리하는지 여부, 마우스 처리를 하
는지 여부와 같은 설정 값들이 존재한다.
보통 플레이어 HP의 경우 HUD로 Movie를 재
생해 사용자 입력을 배제하고 캐릭터 인벤토
리와 같은 위젯은 MoviePlayerBP를 사용하여
사용자 입력을 모두 처리하도록 한다.
21. 블루 프린트로 간단하게 플래시 파일을 화면에
등록해서 재생 가능하다. 레벨 블루 프린트를 연
후 다음과 같이 블루 프린트를 작성한다.
22. F7키를 누르면 Open Movie를 사용해서
Window라는 플래시를 화면에 표시한다. 이때
Movie Player를 MoviePlayerBP를 사용했는
데 이는 사용자로부터 입력을 받아들일 수 있
는 플래시이기 때문이다. 만일 HUD와 같이
사용자 입력은 받지 않고 화면에 표시만 하는
역할이라면 MoviePlayerHUD를 사용하면 된
다. 추가로 Open Movie 이후에 SetViewport
를 사용해서 플래시 컨탠츠의 사이즈를 조절
하는 것을 볼 수 있다.
23. C++에서 플래시 애니메이션을 재생하고 이것
을 컨트롤 하기 위해서 함수를 호출하거나 변
수 값을 변경할 수 있다. 가령 화면에 UI를 띄
우고 이 안의 내용을 변경할 때 (C++에서 원
하는 값을 화면에 표시할 때) 사용된다.
이것은 MoviePlayer-
>Function( MovieClipName, Parameters );와
같이 호출할 수 있다.
만일 플래시 내부 정보를 변경하려고 하면 함
수를 호출해 변수 값을 전달할 수 있다.
27. screen_message에 textField가 있다. 이 textField
의 값을 ASValue로 변환해서 넣어주는데 현재는
문자열로 설정하기 위해서 ASString으로 전달했다.
이제 실행을 해보면 dsdfasdf라는 문자열이 바뀐
것을 확인할 수 있다.
29. C++에서 AS함수를 호출하는 것의 반대 역
시 가능하다. AS에서 ExternalInterface를
사용하면 된다. 다음과 같이 버튼이 존재하
고 AS를 작성할 때 다음과 같이 원하는
C++함수를 호출해주면 된다
30. MoviePlayer를 생성하고 연결된
ExternalInterface 클래스에 다음과 같이
UFunction으로 등록해두면 AS에서 함수를 호
출 할 수 있다.
31.
32. MoviePlayer의 Close를 호출하면 메모리
가 해제되며 인수로 false를 넘기면 화면에
서만 사라지고 메모리에서 점유 되는 것을
볼 수 있다.
33. 언리얼 커맨드에서 stat Scaleform을 실행
하면 다음과 같이 스탯 정보를 볼 수 있다.
주어진 플래시 영상을 화면에 표시하고
Close를 했을 때 메모리가 소멸되는 것을
확인할 수 있다.
34. 스케일폼에서 제공하는 모든 PDF문서들을 읽어 볼 것
UE4의 업데이트 버전보다 항상 스케일폼이 느릴 수 밖에
없기 때문에 진행중인 프로젝트에서 엔진을 업데이트 할
때는 스케일폼에서 통합 코드를 제공하고 있는지 아닌지
의 여부에 따라 엔진 업데이트 시기 조절이 필요하다.