# Unreal Engine 4

## 1. UE4 프로젝트 생성

1-1. UE4 Editor를 실행시킨 창에서 <mark style="color:orange;">게임</mark> 을 선택하고, <mark style="color:orange;">프로젝트 열기</mark> 버튼이 <mark style="color:orange;">다음</mark> 으로 바뀌면, <mark style="color:orange;">다음</mark> 버튼을 누릅니다.

<figure><img src="https://786252296-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlVa8RtbdMu1r7zocyjxZ%2Fuploads%2Frn3cHLzTPm0YRS7qysYG%2Funreal_1.png?alt=media&#x26;token=fca7e604-02c5-4247-8c46-1cb850341ea2" alt=""><figcaption><p>UE4 Editor를 실행 후 발생한 창</p></figcaption></figure>

#### 1-2. <mark style="color:orange;">템플릿 선택</mark> 창에서 <mark style="color:orange;">기본</mark>을 선택 후, <mark style="color:orange;">다음</mark>을 누릅니다.

<figure><img src="https://786252296-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlVa8RtbdMu1r7zocyjxZ%2Fuploads%2F2GHyQiQoUdtHuAgPWu0f%2Funreal_2.png?alt=media&#x26;token=3c3d4348-2e30-49a9-9e9c-e150def8c4dc" alt=""><figcaption></figcaption></figure>

#### 1-3. <mark style="color:orange;">프로젝트 세팅</mark>에서 <mark style="color:orange;">블루프린트</mark> 버튼을 클릭하면 버튼이 드롭 다운 리스트로 펼쳐집니다.

<figure><img src="https://786252296-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlVa8RtbdMu1r7zocyjxZ%2Fuploads%2FRA9C9qij3yfCot6MPxkp%2Funreal_3.png?alt=media&#x26;token=e5dc4ad8-a34e-4d0c-b858-0bb449223e32" alt=""><figcaption></figcaption></figure>

#### 1-4. 펼쳐진 드롭다운 리스트에서 아래 스크린샷과 같이 C++를 선택합니다.

<figure><img src="https://786252296-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlVa8RtbdMu1r7zocyjxZ%2Fuploads%2FO2C4s9PYmzMDgOiqZZNm%2Funreal_4.png?alt=media&#x26;token=50e645b5-fce1-490d-9a87-013302d63baf" alt=""><figcaption></figcaption></figure>

#### 1-5. 아래 빨간 박스로 표시된 <mark style="color:orange;">프로젝트 경로 창</mark>과 프로젝트명 창에 프로젝트를 생성할 경로와 생성할 프로젝트명을 입력하시고, <mark style="color:orange;">프로젝트 생성</mark>을 누릅니다.

<figure><img src="https://786252296-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlVa8RtbdMu1r7zocyjxZ%2Fuploads%2FXUQvSshOtLWYFkAcZEqP%2Funreal_5.png?alt=media&#x26;token=90cc501e-a6e5-47cf-8bb0-f037c55df929" alt=""><figcaption></figcaption></figure>

#### 1-6. 프로젝트 생성이 끝나면, 생성된 프로젝트로 Visual Studio IDE와 UE4 Editor가 동시에 실행되어집니다.

#### 1-7. Visual Studio IDE에서 Configuration과 Platform을 반드시 아래와 같이 지정하시고 작업을 진행하셔야 됩니다.

{% hint style="info" %}

* Solution Configuration : <mark style="color:orange;">Development Editor</mark>
* Solution Platform : <mark style="color:orange;">Win64</mark>
  {% endhint %}

## 2. UE4 프로젝트에 ProudNet 연동하기

<mark style="color:orange;">(프로젝트명).build.cs</mark> 파일에 C# 코드로 ProudNet 라이브러리와 헤더 파일 경로를 지정하세요.

> 1. cs 파일을 열어 UE4 Editor가 자동 생성한 프로젝트명과 동일한 class가 있을 것입니다. 클래스는 현재 생성자만 가지고 있는 상태입니다.
> 2. 생성자의 body를 보시면, 뒷 부분에 주석이 몇 줄 달려있는 것을 보실 수 있습니다. 그 주석 뒤편에 ProudNet 라이브러리와 헤더 파일 참조 경로를 지정하는 코드를 넣으시면 됩니다.
> 3. ProudNet 라이브러리 참조 경로 지정은 <mark style="color:orange;">PublicAdditionalLibraries</mark> 객체의 Add 함수로 라이브러리 경로 문자열을 넘기시면 됩니다.\
>    예: **> PublicAdditionalLibraries.Add("D:\ProudNet1.7.48971-master\ProudNet\lib\x64\v140\Release\ProudNetClient.lib")**
> 4. ProudNet 헤더 파일 참조 경로 지정은 <mark style="color:orange;">PublicIncludepaths</mark>라는 전역 객체의 Add 함수로 ProudNet include 폴더의 경로를 넘기시면 됩니다.\
>    예: **> PublicIncludePaths.Add("D:\ProudNet1.7.48971-master\ProudNet)**
> 5. 프라우드넷을 연동시키는 UE4 프로젝트는 반드시 64비트로 빌드 되어야 하므로, 앞서 작성한 두 문장을 중괄호로 감싼 뒤 위에 if 문을 붙여줍니다.&#x20;
> 6. IOS 및 Android 빌드 시 필요한 lib 파일들 또한 if 문으로 감싼 뒤 작성합니다.

아래는 주석 처리를 지우고 작성한 예시입니다.

{% code overflow="wrap" lineNumbers="true" fullWidth="false" %}

```cpp
// Copyright Epic Games, Inc. All Rights Reserved.
 
using System.IO;
using UnrealBuildTool;
 
public class TestUnreal4 : ModuleRules
{
    public TestUnreal4(ReadOnlyTargetRules Target) : base(Target)
    {
        PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
    
        PublicIncludePaths.AddRange(
	new string[] {
	    // ... add public include paths required here ...
	}
	);
				
		
	PrivateIncludePaths.AddRange(
	new string[] {
	    // ... add other private include paths required here ...
	}
	);
 
        if (Target.Platform == UnrealTargetPlatform.Win64)
        {
            // Add the import library
            PublicAdditionalLibraries.Add(@"D:\ProudNet1.8.00002-master\ProudNet\lib\x64\v140\Release\ProudNetClient.lib");
        }
        else if (Target.Platform == UnrealTargetPlatform.IOS)
        {
            PublicAdditionalLibraries.Add(@"D:\ProudNet1.8.00002-master\ProudNet\lib\x64\v140\Release\libProudNetClient.a");
            
            PublicAdditionalLibraries.Add(@"D:\ProudNet1.8.00002-master\ProudNet\lib\x64\v140\Release\libiconv.2.tbd"));
        }
        else if(Target.Platform == UnrealTargetPlatform.Android)
        {
        PublicAdditionalLibraries.Add(@"D:\ProudNet1.8.00002-master\ProudNet\lib\NDK\r20\cmake\clangRelease\arm64-v8a\libProudNetClient.a);
        }
        
         PublicIncludePaths.Add(@"D:\ProudNet1.7.48971-master\ProudNet\include");
    }
}
```

{% endcode %}

{% hint style="warning" %}
iOS 및 Android 는 <mark style="color:orange;">ProudNet\lib\x64\v140\Release\libProudNetClient.lib</mark> 대신<mark style="color:orange;">ProudNet\lib\NDK\r20\cmake\clangDebug\arm64-v8a\libProudNetClient.a</mark> 를 참조하게 합니다.
{% endhint %}

{% hint style="danger" %}
위 예시 코드의 경로로 설정하지 마시고 실제 프라우드넷이 설치된 경로의 경로를 입력해 주세요.
{% endhint %}

<figure><img src="https://786252296-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlVa8RtbdMu1r7zocyjxZ%2Fuploads%2FSw7JOoSDiXgxBFfICCRL%2Fue_ProudNet.png?alt=media&#x26;token=2fb99912-763b-487e-a1cf-3340445663f1" alt=""><figcaption></figcaption></figure>

위의 예시처럼 컴파일 에러 없이 정상적으로 <mark style="color:orange;">CNetClient</mark>를 생성할 수 있습니다.

## 3. Android 빌드

아래의 링크를 참조해 주십시오.

{% hint style="success" %}
**참고**

[**Android 퀵스타트**](https://docs.unrealengine.com/5.3/ko/setting-up-unreal-engine-projects-for-android-development/)
{% endhint %}

## 4. iOS 빌드

{% hint style="warning" %} <mark style="color:orange;">libiconv.2.tbd</mark> 라이브러리의 경로를 추가적으로 지정해 주어야 합니다.&#x20;

지정해 주지 않으면 빌드 시 iconv 관련 링크 에러가 발생합니다.
{% endhint %}

<figure><img src="https://786252296-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FlVa8RtbdMu1r7zocyjxZ%2Fuploads%2FGiDUCLrOAPadMfW1PIUu%2Flibiconv.png?alt=media&#x26;token=96600e82-8712-46ba-9312-89942cbd2a47" alt=""><figcaption></figcaption></figure>

아래 링크를 참조해 주십시오.

{% hint style="success" %}
**참고**

[**iOS 퀵스타트 가이드**](https://docs.unrealengine.com/5.3/ko/setting-up-an-unreal-engine-project-for-ios/)
{% endhint %}
