UDN
Search public documentation:

MyFirstCodeKR
English Translation
日本語訳

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

예제: My First Code

2003년 11월 18일, 2226 빌드용으로 Chris Linder (DemiurgeStudios?) 작성. UT2003에서 UT2004로 최종 업데이트: Michiel Hendriks.

관련 문서

My First Pawn, My First Controller, My First GameInfo, My first HUD, New Project Preparation, Game And AI Handout?

서론

이 문서에서는 여러분 고유의 pawn 클래스, 플레이어 컨트롤러 클래스, HUD, 그리고 게임 타입 작성과 관련된 기본을 살펴보겠습니다. 이 문서는 개요일 뿐으로, 여러 클래스들이 어떻게 상호 관계를 가지는지에 대해 설명합니다; 각 클래스에 대한 자세한 정보는 그 클래스의 해당 문서를 참고하십시오.

여기서 소개하는 예가 아주 기초적인 것이 되도록 하려고 하지만, 그래도 UnrealScript에 대한, 그리고 Unreal Engine에서 네트워킹의 “복제”가 어떻게 다루어 지는지에 대한 다소의 지식이 요구됩니다. 이 예를 바로 시작하고 대부분을 이해할 수 있어야 하겠지만, 참고 자료를 더 많이 읽어 두면 도움이 될 것입니다. UnrealScript 에 대한 상세한 내용은 UnrealScript 참조를 참고하십시오. 복제에 대한 상세한 내용은 네트워킹 백과?프레이어 복제에 관한 유인물을 읽어 보십시오. 또, Planet Unreal의 Replication De-Obfuscation 페이지는 복제에 관한 훌륭한 문서들 가운데 하나입니다. 이 문서는 오래 되어 부정확한 내용들이 들어있을 수 있지만 그 목적을 썩 잘 다루고 있습니다.

예제의 부분들

Pawns

Unreal Engine에서 Pawn (Pawn.uc 를 연장하는 모든 클래스)은 스스로 돌아다니는 Actor 입니다. 이것은 플레이어, AI에 의해 제어되거나 AI 스크립트에 의해 제어됩니다 (자세한 정보는 아래의 플레이어 컨트롤러를 참고하십시오). 여러분이 UT2004를 플레이할 때 제어하는 아바타는 Pawn 입니다. 게임에서 보는 다른 플레이어들은 봇이거나 넷 게임내의 다른 이들입니다. 단독 플레이어 게임의 플레이어가 아닌 캐릭터들 (NPCs)도 Pawn 입니다. Mover와 로켓은 돌아다니지만 Pawn 이 아닌 것의 예입니다. 이 문서에서는 여러분이 게임을 플레이할 때 제어하는 Pawn 에 초점을 맞추겠습니다.

플레이할 때 제어하는 폰은 User.ini 나 명령줄에서 지정됩니다 (상세한 내용은 My First Pawn 문서를 참고하십시오). 엔진의 어떤 부분을 바꾸거나 심지어는 코드를 전혀 변경하지 않고도 폰을 변경할 수 있습니다. 어떤 폰이라도 주어진 플레이어 컨트롤러와 사용될 수 있지만 아주 순조롭게 작용하지 않을 수 있습니다; 그래도 폰이 세계 주위를 돌아다니기는 합니다. 주어진 플레이어 컨트롤러와 작용하도록 설계된 폰의 세트가 있다면, 이 폰들을 아무 문제 없이 다른 것으로 바꾸거나 교체할 수 있습니다. My First Pawn에는 여자와 남자, 두 폰이 있는데 모두 기본 플레이어 컨트롤러와 함께 사용할 수 있습니다.

플레이어 컨트롤러

Controllers (Controller.uc 를 연장하는 모든 클래스)는 Unreal Engine에서 Pawn 들을 제어합니다. 컨트롤러는 UT2004의 들같은 AI일수도 있고 사람이 폰을 제어하는 것을 허용하는, 인간 플레이어에 대한 인터페이스일 수도 있습니다. 컨트롤러는 어떠한 폰이라도 제어할 수 있는데, 이 기능은 하나의 폰을 봇으로서 또는 플레이어의 아바타로서 사용하는 것을 매우 쉽게 해주기 때문에 유용합니다.

Player Controller (PlayerController.uc 를 연장하는 모든 클래스)는 인간 플레이어로부터 폰으로의 인터페이스 역할을 하는 컨트롤러입니다. 사용할 플레이어 컨트롤러는 게임 정보에 명기되어 있습니다. 그러므로 새 플레이어 컨트롤러를 사용하려면 코드를 변경해야 합니다.

보다 상세한 내용은 My First Controller 예제를 참고하십시오.

GameInfo

GameInfo (GameInfo.uc 를 연장하는 모든 클래스)는 게임 타입이 만들어지는 방법입니다. DeathMatch와 CTF는 모두 게임 타입의 예입니다. 이 게임정보는 대부분의 클래스로부터 접근할 수 있습니다. 따라서 클래스들이 현 게임의 상태에 대해 조회할 수 있습니다. GameInfo는 게임을 정의하는 함수 및 변수를 작성하는 것 외에, 플레이어가 어떻게 게임에 들어오고, 게임을 다시 시작하고, 로그아웃하는지 등도 정의합니다...

GameInfo는 또한 플레이어 컨트롤러 클래스가 무엇인지, 그리고 HUD 클래스가 무엇인지도 지정합니다. 컨트롤러와 HUD의 지정은 My First GameInfo 예제에서 게임정보의 기본 용도입니다. 이 예제에서의 GameInfo는 전혀 새 게임 타입을 만들지 않습니다.

HUD

HUD(HUD.uc 를 연장하는 모든 클래스)는 화면에 헤드업 디스플레이를 그립니다. HUD의 기능에 대한 자세한 정보는 HeadsUpDisplay 참조?와 HeadsUpDisplay 튜토리얼?을 참고하십시오. HUD는 GameInfo에서 클래스 이름에 의해 지정됩니다. GameInfo 에는 현 게임에 있는 모든 플레이어의 이름과 점수를 보여주는 ScoreBoard 도 지정되어 있습니다. 'F1' 를 누르면 HUD 대신 ScoreBoard 가 표시됩니다. ScoreBoard 는 HUD와 밀접한 관련이 있지만, 이는 ScoreBoard.uc 를 연장하는 고유의 클래스입니다.

HUDScoreBoard 에 대한 상세한 내용은 My First HUD 예제를 참고하십시오.

예제 설치하기

My First Code 예제의 설치 방법에는 2가지가 있습니다. My First Pawn의 pawn들은 별도의 다른 코드 없이 독자적으로 설치할 수 있습니다. 단지 pawn만을 설치하고 싶다면 My First Pawn 문서를 참고하십시오. 플레이어 컨트롤러, HUD게임 타입 같은 그밖의 예제들은 모두 pawn 예제에 의존적임과 동시에 서로 의존적이므로 한 묶음으로써 설치되어야 합니다. 이 섹션의 나머지에서는 pawn 클래스, 플레이어 컨트롤러, HUD, 그리고 게임타입을 포함하는 예제의 묶음 설치 방법에 대해 알아볼 것입니다.

Unreal 런타임

런타임을 사용하는 분들은 MyFirstExample.zip을 다운로드하여 압축을 푼 다음 , MyFirstExample.urm 을 실행하면 됩니다. MyFirstExample.urm 을 실행할 수 없다면, 이는 아마도 런타임을 설치하는 동안 "Runtime modification association" 박스의 체크를 취소했기 때문일 것입니다. 이 경우에는 아래의 단계들을 따라 하십시오:

  1. MyFirstExample.zip을 열어 MyFirstExample.urm 을 런타임의 "System" 디렉토리로 끌어냅니다.
  2. 런타임의 "System" 디렉토리에서 명령 프롬프트를 엽니다.
  3. "setup install MyFirstExample.urm" 을 입력합니다.

어떤 경우이든, 설치 윈도우에 제시된 지시대로 따라 하면 런타임에 대한 이 예제가 설치될 것입니다.

예제가 설치되면 이 예제를 사용하기 위해 INI 파일들을 편집해야 합니다. 먼저 User.ini 를 편집하여 사용할 폰의 타입을 지정합니다. User.ini[DefaultPlayer] 섹션에서 Class 를 다음과 같이 설정하십시오:

Class=MyFirstExample.ExampleBoy
- 또는 -
Class=MyFirstExample.ExampleGirl

다음에는 UE2Runtime.ini 를 편집해야 합니다. [Engine.Engine] 섹션에서 DefaultGameDefaultServerGame 을 다음과 같이 변경하십시오:

DefaultGame=MyFirstExample.ExampleGameInfo
DefaultServerGame=MyFirstExample.ExampleGameInfo

오직 하나의 플레이어만 사용하는 경우에는 DefaultServerGame 을 변경할 필요가 없지만, 사실 하나의 플레이어만 사용하는 경우에는 DefaultServerGame 의 변경은 문제가 안됩니다.

이제 런타임을 시작하고 맵을 고르면 예제의 사용 준비가 다 된것입니다. 폰, 컨트롤러, HUD, 그리고 게임정보가 모두 사용됩니다.

코드 드롭, UDNBuild, UDNBuildOff

UDNBuild나 UDNBuildOff를 사용하는 경우에는 MyFirstExample_UDNBuild.zip을 다운로드하여 여러분의 엔진 빌드에 압축을 해제하십시오.

2226 코드 드롭을 사용하는 경우에는 MyFirstExample_CodeDrop.zip을 다운로드하여 여러분의 엔진 빌드에 압축을 해제하십시오. 아니면 더 최신 빌드용의 MyFirstExample_CodeDrop3323.zip를 다운로드 하십시오.

예제의 압축을 푼 다음에는 이 예제를 사용하기 위해 INI 파일들을 편집해야 합니다. 먼저_User.ini_ 를 편집하여 사용할 폰의 타입을 지정합니다. User.ini[DefaultPlayer] 섹션에서 Class 를 다음과 같이 설정하십시오:

Class=MyFirstExample.ExampleBoy
- 또는 -
Class=MyFirstExample.ExampleGirl

다음에는 <YourGame.ini> (예: UT2004.ini )을 편집해야 합니다. [Engine.Engine] 섹션에서 DefaultGameDefaultServerGame 을 다음과 같이 변경하십시오:

DefaultGame=MyFirstExample.ExampleGameInfo
DefaultServerGame=MyFirstExample.ExampleGameInfo

오직 하나의 플레이어만 사용하는 경우에는 DefaultServerGame 을 변경할 필요가 없지만, 사실 하나의 플레이어만 사용하는 경우에는 DefaultServerGame 의 변경은 문제가 안됩니다.

이제 런타임을 시작하고 맵을 고르면 예제의 사용 준비가 다 된것입니다. 폰, 컨트롤러, HUD, 그리고 게임정보가 모두 사용됩니다.

넷 플레이에서의 예제 사용

이 예제를 넷 플레이에서 사용하고 싶다면 게임을 호스트하는 컴퓨터에서 몇 가지 일들을 처리해야 합니다.

먼저 <YourGame.ini> (예: UE2Runtime.ini 또는 UW.ini)을 편집하여 ServerPackages 목록에 "MyFirstExample" 을 포함시킵니다. ServerPackages 목록은 INI 파일의 [Engine.GameEngine] 섹션에 있는데, 이 섹션에 다음 행을 추가하기만 하면 됩니다:

ServerPackages=MyFirstExample

다음에는 MD5 데이터베이스를 재빌드해야 합니다. 여러분의 엔진 빌드의 "System" 디렉토리를 열어 명령 프롬프트에 다음과 같이 입력하십시오:

UCC MASTERMD5 -c *.U

이제 여러분은 게임을 호스트할 수 있으며 다른 사람들이 여기에 접속하여 함께 달리고/날고/수영하고/춤출 수 있습니다. 게임을 호스트하려면 system 디렉토리의 명령 프롬프트에서 다음과 같이 입력하면 됩니다:

UE2Runtime <YourMap> -server
- 또는 -
UW <YourMap> -server

이 예제를 실행하고 있는 서버에 접속하려면 예제 설치하기 섹션에서 설명한 대로 이 예제가 설치되어 있어야 합니다. 그 다음 게임을 실행하여 콘솔을 불러온 ('~' 키를 누름) 뒤 다음과 같이 입력하십시오: "open <서버의 IP 주소>", 예: "open 192.168.1.112".

예제 변경하기 - UnrealEd에서의 예제 사용

주어진 코드를 변경하고 싶거나 UnrealEd에 ExamplePawns 를 배치하기 원할 경우에는, <your_game>.ini (예: UW.ini 또는 UE2Runtime.ini)의 EditPackages 목록에 "MyFirstExample"을 추가해야 할 것입니다. INI 파일을 열어 텍스트 검색으로 "EditPackages"를 찾은 다음, 목록의 맨 뒤에 "EditPackages=MyFirstExample" 행을 추가하면 됩니다. 여기에는 목록이 2개 있으므로 이 행을 두 목록에 모두 추가하도록 확실히 하십시오. 코드를 변경할 경우에는 system 디렉토리에서 기존의 MyFirstExample.u 파일을 삭제한 다음, 명령줄에 "ucc make" 를 타이프하여 변경된 것을 재컴파일할 수 있습니다.