UDK 언리얼 엔진 배우기(17)-언리얼 스크립트 와 Visual Studio 연동 (2011 최신 nFringe)

2011. 7. 19. 10:26Unreal

기존 문서들이 너무 중구난방이네요. 처음 시작하는 분들이 보고 바로 알수 있을 정도로 자세하고 쉬운 강좌가 없어 이렇게 만듭니다. 좋은 참고가 되었으면 좋겠네요.

언리얼 스크립트 와 Visual Studio 연동


1. nFringe 란
UDK 프리 버전에는 소스가 존재하지 않습니다. 따라서 개발을 하려면 Unreal Script를 이용해 개발해야 합니다.
하지만 기본적인 Editor 는 제공하지 않고 있죠. 대부분 Visual Studio 를 많이 사용합니다.
nFringe그 그 해답니다.

nFringe 는 Visual Studio 플러그인 으로 이 에디터에서 언리얼 스크립트를 작성할 수 있게 해줍니다.

* nFringe
  다운로드 : http://wiki.pixelminegames.com/index.php?title=Tools:nFringe

* MSVC 2005,2008,2010 을 지원하는군요. 2008을 추천합니다. 이전버전은 이것저것 까는게 있습니다.

* .NET Framework 3.5 가 필요합니다.
  다운로드 : http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=22



2. UDK 폴더 설명

  • Binaries ; 다양한 유틸리티가 들어 있습니다.
    • ActorX ; 다양한 3D 모델링 프로그램용 ActorX 플러그인.
    • FaceFXPlugins ; 다양한 3D 모델링 프로그램을 위한 FaceFX 플러그인.
    • InstallData ; UDK 설치 도중 사용된 파일.
    • SpeedTreeModeler ; SpeedTree 툴.
    • Win32 ; UDK 실행파일 및 다양한 필수 라이브러리가 들어 있습니다.
    • Win64 ; MS 윈도우 64비트 버전에서 사용할 수 있는 64비트 버전 UDK 실행파일을 찾아볼 수 있습니다.
    • Windows ; UDK에서 요구되는 다양한 런타임 라이브러리를 설치하기 위한 설치 파일이 들어 있습니다. 이 라이브러리는 구성 과정 도중 이미 시스템에 설치됩니다.
  • Development ; 개발 디렉토리.
    • Src ; UnrealScript 소스를 포함한 모든 소스 파일에 사용되는 디렉토리로, 이미 UDK 에 포함된 UnrealScript 소스 코드가 들어 있습니다. 여러분의 소스도 이 디렉토리에 추가됩니다.
  • Engine ; UnrealEngine의 기본 파일에 사용되는 디렉토리입니다. 이 안의 콘텐츠를 변경해서는 안되며, 그게 바로 UDKGame 디렉토리의 존재 이유입니다. 상용 UDK 어플리케이션을 제작하는 경우일지라도, 이 디렉토리에 있는 것은 무엇이든 여러분의 어플리케이션 제작에 사용할 수 있습니다.
    • Config ; 기본 환경설정 파일이 들어 있으며, 대개 UDKGame 디렉토리에 있는 환경설정 파일에서 상속된 것들입니다.
    • Content ; 콘텐츠 패키지입니다.
    • EditorResources ; 에디터에 의해 사용되는 리소스 파일입니다.
    • Localization ; 현지화 파일입니다. 각 언어에 대한 하위 디렉토리에 해당 언어로 된 현지화 파일이 포함됩니다.
    • Shaders ; 셰이더 소스 파일입니다.
    • Stats ; 다양한 개발 통계에 대한 보고서 작성에 사용되는 템플릿 파일입니다.
  • UDKGame ; 새로운 콘텐츠가 추가될 디렉토리입니다.
    • Build
    • Config ; 이 디렉토리에는 2 가지 유형의 환경설정 파일-기본 환경설정 파일과 시간 경과에 따라 업데이트되는 소재화된 (materialized) 환경설정 파일-이 들어 있습니다. 기본 환경설정 파일은 시스템의 기본 구성을 제공하며 엔진에 의해 절대 업데이트 되지 않습니다.
    • Content ; 어플에 대한 (레벨 포함) 콘텐츠 패키지 전부가 담겨 있습니다. 상용 UDK 어플의 디렉토리에 있는 애셋 중 콘텐츠 브라우저에서 ([[ContentBrowserReferenceKR][콘텐츠 브라우저 참고서]) 스켈레탈 메시로 마크되어있는 애셋만 제외하고는 어느 콘텐츠든지 사용하셔도 됩니다. 하위디렉토리에 대한 고정된 설정은 없으며, 전부 환경설정에 따릅니다.
    • Localization ; 현지화 파일.
    • Logs ; 로그 파일 및 크래시 리포트에 사용됩니다.
    • Movies ; 게임내 나타나는 빙크 무비용으로 예약된 디렉토리입니다. 주: 귀하의 어플에 UE3_logo.bik 무비를 포함시켜 표시해야 합니다.
    • Script ; 컴파일된 스크립트 패키지가 들어 있는 디렉토리입니다.
    • Splash ; 에디터와 게임이 시작될 때 나타나는 스프래시 화면이 들어 있습니다.

 참고 : http://udn.epicgames.com/Three/DevelopmentKitFirstScriptProjectKR.html#UDK 구성하기

3. UDK와 Visual Studio 연동

 - nFringe 를 설치합니다. 1.1.23 or later 을 기준으로 합니다. 저는 1.1.3.4를 설치했습니다.
   다른 버전은 설정이 조금 틀릴껍니다. 2011.7월 최신버전으로 테스트합니다.
   참고문서 : http://wiki.pixelminegames.com/index.php?title=Tools:nFringe:UnrealScript:UdkProjects

 - nFringe 라이센스를 반드시 적용합니다. 이걸 하지 않으면 컬러링, 인텔리젼스 등이 모두 안되니 반드시 하셔야 합니다. 비상업용으로 선택후 진행합니다.
   * 이메일 주소를 정확히 입력해야 veryfing 할수 있습니다. 등록하고 메일주소를 확인하세요.


 - Visual Studio로 unreal script 프로젝트를 생성합니다.
   위치는 반드시 C:\UDK\UDK-2011-05\Development\Src 로 되어 있어야 합니다.

   아래에서 지금 현재 체크되어 있는 "솔루션용 디렉토리 만들기" 를 체크 해제합니다.

 
 - 프로젝트를 선택하고 속성을 선택합니다. 여기에서 UCC의 패스를 정해주면 됩니다.
    여기에서 언리얼엔진3 Mod가 선택되도록 합니다.
    UCC Path 와 레퍼런스 패스를 지정해줍니다. 이렇게 설정후에 프로젝트 언로드/로드를 수행하면 레퍼런스에 기존 UDK 의 스크립트들이 참조된것을 볼 수 있습니다.

 

디버깅 설정 화면

- Load map at startup: 시작시에 로딩할 맵이름
- Start with specified game type : 생성한 프로젝트의 실행될 코드파일?(예 - MyGame.MyGameInfo)
- Disable sound : 실행할때 사운드를 끕니다.
- Disable startup movies : 실행할때 재생되는 무비를 끕니다. 디버깅 시간을 줄이려면 끄는게 좋겠죠.
- Enable unpublished mods : 미공개 모드들을 활성화합니다.
- Force windowed mode: 지정한 윈도우 사이즈로 실행합니다.
- Open log window at position : 로깅 윈도우 위치
- Log output to file: 로그파일 지정

4. Config 등록 및 프로젝트 추가
   이제 현재 생성된 프로젝트를 UDK에 알려주어야 합니다.

- 비주얼 스튜디오 에서 프로젝트를 선택하고 Config 폴더를 만듭니다.
- Config파일을 추가하기 위해 기존항목 추가를 선택합니다.
  C:\UDK\UDK-2011-05\UDKGame\Config 에서 Default*.* 로 시작하는 파일들을 모두 선택후 링크로 추가 합니다. 이후 이프로젝트에서 해당 파일들을 수정하면 되겠죠?
- 완료하면 아래와 같이 되어 있을 껍니다.

  - (옵션) - 안하셔도 됩니다.
자동적으로 매컴파일 때마다 이전의 UTConfig 파일들을 지울수 있습니다. 이렇게 하면 항상 Default 관련된 Config 파일들이 재생성되어 최신설정을 유지 시켜줍니다.
   * 프로젝트 속성/빌드 이벤트 탭 의 Command-line 에서 아래와 같이 지정해줍니다.
      del C:\UDK\UDK-2011-05\UDKGame\Config\UDK*


- 아래의 스크립트를 추가합니다.

example.uc
// GameInfo는 UDK에서 가장 기본적인 정보만을 가지고 있는 클래스를 말합니다. 
// 카메라,케릭터,허드,물리 아무것도 없습니다.
// 세미콜론유의
class example extends GameInfo;


- 중요: 이부분을 수정하지 않으면 스크립트 컴파일 에러가 납니다.
 이제 우측의 소스 내용 선택(코드편집창)을 선택하고 메뉴>파일>저장고급 옵션을 선택합니다. 망스럽게도 기본 세팅된 UTF를 제대로 인식하지 않습니다. 아래와 같이 변경해줍니다. 한국어 - 코드 페이지 949


- DefaultEngineUDK.ini 파일을 열고 아래와 같이 현 프로젝트를 추가해 줍니다.

[UnrealEd.EditorEngine]
EditPackagesOutPath=..\..\UDKGame\Script
FRScriptOutputPath=..\..\UDKGame\ScriptFinalRelease
+EditPackages=UDKBase
+EditPackages=UTEditor
+EditPackages=example
AutoSaveDir=..\..\UDKGame\Autosaves
InEditorGameURLOptions=?quickstart=1?numplay=1

* 참고: EditPackages 의 순서는 굉장히 중요합니다. 순서에 따라 컴파일 되기 때문이죠. 즉 example은 위의 UDKBase,UTEditor 를 참조하기 때문에 제일 뒤에 추가되어야 한다는 뜻입니다.

이렇게 하면 UDK 실행시 보기/월드프로퍼티 속성에서에 이 example가 나타나게 됩니다. 즉 이 example 모드로 개발을 할 수 있습니다. (Game Type For PIE)


이렇게 한후 실행하면 화면에 케릭터,물리, 허드 아무것도 없는것을 보실수 있습니다.


Unreal Script 기본 문서

참고로 언리얼 스크립트 기본 문서는 아래의 장소를 참고하세요.
이 언리얼 스크립트는 자바와 c#이랑 비슷합니다. 이를 모태로 만들었다라고도 볼수 있겠습니다.
Unity3d의 c# 스크립트 이용방식과 비슷하더군요.

http://udn.epicgames.com/Three/UnrealScriptReferenceKR.html