언 리 얼 엔 진 - Unreal Engine · 언리얼 엔진 법적 공지 정보: 언리얼 엔진 로고가 표시될 때는 가급적 다음 상호 공지 역시 표시해야 합니다:
아직도 유니티만? - 2016 언리얼 서밋 발표 자료
-
Upload
lee-dustin -
Category
Software
-
view
3.199 -
download
3
Transcript of 아직도 유니티만? - 2016 언리얼 서밋 발표 자료
UNREAL SUMMIT 2016
1. 언리얼오브젝트이름.generated.h 파일이 보이지 않더라도 일단 include 시켜주자. 나중에 생성된다.
2. UCLASS 매크로를 사용해 헤더툴에게 이 클래스가 언리얼 오브젝트임을 알려주자.
3. 언리얼 오브젝트는 클래스 이름에 고유한 접두사(Prefix)를 가져야 하는데, U와 A가 있다. 액터 기반이 아니면 모두 U를 써주면 된다.
4. UObject는 언리얼 오브젝트 가계도의 최상단에 위치한기본 클래스.
5. GENERATED_BODY() 매크로도 마찬가지로 그냥 써주자. 최소한의 규칙이다.
UNREAL SUMMIT 2016
빌드 명령시작~
소스코드 파싱 후메타 데이터 생성
~generated.h/cpp
이제부터진짜 컴파일
하나의 언리얼오브젝트마다
UClass 객체가생성됨
UNREAL SUMMIT 2016
Trigger / Block / Trace 를 사용해 충돌 감지유니티의 Trigger / Collision / Raytrace와 동일
Static Mesh / Skeletal Mesh 컴포넌트를 사용Skeletal Mesh는 유니티의 메카님에 해당하는,AnimBlueprint를 사용해 애니메이션을 제어할 수 있다.
언리얼 엔진은 다양한 Movement 컴포넌트를 제공한다.Movement 컴포넌트는 AddMovementInput로 입력을 받아최상위 컴포넌트를 이동시키도록 구성되어 있다.이동에 대한 결과는 폰의 Velocity로 확인할 수 있다.
폰 구성에 필요한기본 3요소
UNREAL SUMMIT 2016
NPC의 제어
정찰 중 플레이어 혹은 다른 폰을 감지하기 위해 제공사운드까지 감지 가능하다.
캐릭터 인공지능 로직을 설계하는 UI를 제공한다.블랙보드를 사용해 데이터를 관리하고, 현재 상황에서수행할 태스크를 제작해 활용할 수 있다.
무브먼트 컴포넌트에서 캐릭터 회피 시스템을 제공한다.심플하지만 네비 영역에서 빠질 수 있는 RVO와 복잡하지만네비 영역 내 움직임을 보장하는 Detour Crowd 방식이 있다.
NPC에게 네브메시를 사용해 특정 액터를 따라가거나특정 지점으로 이동시키게 명령을 내릴 수 있다.
UNREAL SUMMIT 2016
서버와 클라이언트 코드가 공존하는 게임 프로그램 제작
클라이언트 코드만 들어있는 게임 프로그램 제작
서버 코드만 들어있는 게임 프로그램 제작
에디터용 모듈(dll) 제작
엔진에서 연동해서 쓰는 콘솔 응용 프로그램의 제작
UNREAL SUMMIT 2016
• Developer : 에디터와 프로그램에 사용하는 공용 모듈의 모음. 게임에는 사용되지 않음.
• Editor : 에디터 UI를 구성하는 모듈의 모음.게임에는 사용되지 않음.
• Runtime : 게임에 사용하는 모듈의 모음.모든 곳에서 사용 가능
• ThirdParty : 빌드 시 외부 라이브러리 참조를 위한 모듈의 모음
UNREAL SUMMIT 2016
1. 플러그인 폴더 : 플러그인을 관리하는 최상위 폴더. 2. 플러그인 명세서 : 플러그인에 대한 각종 명세.3. 리소스 폴더 : 에디터에서 사용할 플러그인 리소스.4. 소스 폴더 : 플러그인에서 사용하는 모듈들의 집합.
UNREAL SUMMIT 2016
외부 모듈에서 언리얼 오브젝트 사용멤버 함수 접근 가능
외부 모듈에서 언리얼 오브젝트 사용 불가
외부에서 언리얼 오브젝트 형만 사용 가능멤버 함수 접근 불가능.
UNREAL SUMMIT 2016
[InstalledDerivedDataBackendGraph]Boot=(Type=Boot, Filename="D:/DerivedDataCache/DarkWarrior/Boot.ddc", MaxCacheSize=512)Local=(Type=FileSystem, ReadOnly=false, Clean=false, Flush=false, PurgeTransient=true, DeleteUnused=true, UnusedFileAge=34, FoldersToClean=-1, Path="D:/DerivedDataCache/DarkWarrior")Pak=(Type=ReadPak, Filename="%GAMEDIR%DerivedDataCache/DDC.ddp")CompressedPak=(Type=ReadPak, Filename="%GAMEDIR%DerivedDataCache/Compressed.ddp", Compressed=true)
설정 예시
UNREAL SUMMIT 2016
텍스쳐 애셋
원본 데이터
텍스쳐 애셋
ETC1 데이터
파생데이터캐시 저장소
데이터 파생 캐시 서버
ETC1 데이터
작업자1
첫 쿠킹시변환된 데이터를중앙 서버에 저장
중앙 서버에서 다른작업자가 만든
파생 캐시 데이터를가져와 쿠킹을 처리
작업자2
UNREAL SUMMIT 2016
서버만소유하는
오브젝트 그룹
서버와모든 클라가공유하는
오브젝트 그룹
서버와소유 클라만소유하는
오브젝트 그룹
서버에는 없이소유 클라에만사용하는
오브젝트 그룹
UNREAL SUMMIT 2016
Player 1 UMG
Player 1 HUD
Player 1 PlayerController
Player 1 PlayerState
Player 1 Pawn
GameState
Player 2 PlayerState
Player 2 Pawn
Player 2 UMG
Player 2 HUD
Player 2 PlayerController
Player 1 PlayerState
Player 1 Pawn
GameState
Player 2 PlayerState
Player 2 Pawn
Player 1 PlayerController
Player 2 PlayerController
GameMode GameState
Player 1 PlayerState
Player 1 Pawn
Player 2 PlayerState
Player 2 Pawn
UNREAL SUMMIT 2016
UFUNCTION(Server, Reliable, WithValidation)
void AddMoney(int32 money);
virtual void AddMoney_Implementation(int32 money);
virtual bool AddMoney_Validate(int32 money);
void 클래스::AddMoney_Implementation(int32 money){
CurrentMoney += money;}
bool AddMoney_Validate(int32 money){
if(money > 10000){
}return true;
}