UE4 Tutorial 'Paper2D'


URL : http://youtu.be/3GtGvNoL5UI?list=PLZlv_N0_O1gaCL2XjKluO7N2Pmmw9pvhE


; Sprite 를 사용해서 2D 게임을 만드는 튜토리얼

; 9 개 동영상으로 이루어져 있고 2-3 시간 정도면 다 볼 수 있는 듯

; 2D 텍스쳐 리소스를 가져와서 Sprite 를 만들고 Flipbook 애니메이션 만들어서 다루는 법을 알려줌


; 엔진 버젼이 최신 버젼이 아니라서 '프라퍼티 매트릭스' 등 메뉴 위치가 좀 다르다.

; 테스트할 때 캐릭터가 맵과 충돌이 제대로 안되서 난감했는데 알고보니 스타팅 포인트를 현재 카메라 위치로 해서 스폰된 캐릭터의 Y 좌표가 맵과 달라서 발생한 문제였었다.


P.S. UE4 블루프린트는 조금만 늘어나면 버벅거려서 이런 종류 게임 만들거면 Unity 를 쓰는게 더 효율적일 것 같음.

728x90

회사 컴퓨터 보안 설정상 일정 시간 동안 입력이 없을 경우 화면이 잠기도록 설정되어 있다. 분산 처리 작업 관계로 켜놓고 퇴근해야할 때 id / password 를 알려줘야 해서 서로 민망한 경우가 생길 수도 있었다. 화면이 안잠기도록 도와주는 프로그램인 'Caffeine' 이라는 프로그램을 회사 사람이 알려줘서 신세계 경험 중. 프로그래밍 실행해서 'active' 상태로 유지해두면 안 잠긴다. :) 윈8 이상에서는 관리자 권한으로 실행해줘야한다고 하는데 윈8 을 사용하지 않아서 모르겠다.


URL : http://www.zhornsoftware.co.uk/caffeine/

728x90

언리얼로 패키징 하는 중에 "FMemoryWriter does not support data larger than 2GB" 라는 메시지가 뜨면서 쿠킹이 실패하는 경우가 있다. 아래 코드에서 오류가 발생하는 것인데 큰 데이터 파일을 처리하는 과정에서 오류가 발생하는 것 같다. 


void Serialize( void* Data, int64 Num )

{

const int64 NumBytesToAdd = Offset + Num - Bytes.Num();

if( NumBytesToAdd > 0 )

{

const int64 NewArrayCount = Bytes.Num() + NumBytesToAdd;

if( NewArrayCount >= MAX_int32 )

{

UE_LOG( LogSerialization, Fatal, TEXT( "FMemoryWriter does not support data larger than 2GB. Archive name: %s." ), *ArchiveName.ToString() );

}


Bytes.AddUninitialized( (int32)NumBytesToAdd );

}


check((Offset + Num) <= Bytes.Num());

if( Num )

{

FMemory::Memcpy( &Bytes[Offset], Data, Num );

Offset+=Num;

}

}


문제가 되었던 파일을 확인해보니 1.5G 용량의 레벨 데이터였다. 다른 사람 질문을 보니 600M 정도만 되더라도 문제가 생기는 것 같다. 검색해보니 몇 개의 서브레벨로 나눈 다음에 "always loaded" 형태로 스트리밍해서 읽어들이도록 해서 해결하라는 것 같다.


URL : https://answers.unrealengine.com/questions/75268/cook-failed-fmemorywriter-does-not-support-data-la.html

728x90

언리얼 에디터에서 라이트맵 빌드할 때 Swarm 이라는 걸 사용하는데 이게 분산 빌드가 된다. 지금 작업하고 있는 맵에 내용물이 많아서 그런지 i7 CPU, 16G ram 장비 한 대로 Production 레벨로 빌드하면 70시간 정도 걸리는 듯...그것보다 작은 맵이긴 한데 Production 레벨로 분산 빌드하니 20시간 정도 걸리는 듯...인크레디 빌드 처럼 완벽한 병렬처리는 아닌 듯 하지만 (실시간으로 에이전트가 붙는다고 시간이 줄지 않는 것 같다.) 그래도 2-3 일 돌려야하는 것 보다는 나으니...


* 설치

언리얼 런처에서 엔진을 설치하면 준비 완료.


Swarm 관련 파일만 넣고 실행하면 agent 나 coordinator 는 실행은 되는데 UnrealLightmass 등에서 필요한 dll 들이 누락되는 경우가 있는 것 같다. (예 : XInput1_3.dll ) 18G 정도 하드 용량이 필요하긴 한데 언리얼 엔진을 설치하자.


* Coordinator 설정

엔진 설치 폴더의 Engine/Binaries/DotNET 폴더에서 SwarmCoordinator.exe 를 실행하자.


* Agent 설정

Engine/Binaries/DotNEt 폴더에서 SwarmAgent.exe 를 실행하자. 윈도우 오른쪽 아래 시스템 트레이에 SwarmAgent 아이콘이 생기는데 더블 클릭하면 설정창이 뜬다.


Settings 탭에서 아래 부분을 설정하자.

- CacheFoder : 작업에 필요한 파일을 다운받아서 작업하는 폴더

- AgentGroupName : 실행한 Agent 의 그룹명

- AllowedRemoteAgentGroup : 허용할 Agent 그룹명

- AllowedRemoteAgentName : 허용할 Agent PC 명( 모든 PC를 허용하려면 * )

- CoordinatorRemotingHost : 접속할 Coordinate PC 명 (NetBios 명칭)


- ShowDeveloperMenu : 개발자 설정 메뉴를 보이게 한다.


개발자 메뉴(DevelopersSettings) 에서 몇 몇 설정을 바꿀 수 있다.

- RemoteJobsDefaultPropcessorCount : 원격 작업을 위해 사용할 프로세스 개수 (기본은 LocalJobsDefaultProcessorCount - 1)

- RemoteJobsDefaultProcessPriority : 원격 작업을 위해 사용할 프로세스의 우선 순위. 기본이 Idle 인데 빌드 장비라면 우선순위를 높여버리자.


* 접속 확인

Agent 설정과 실행이 정상적이었다면 Coordinator 에서 Agent 목록을 확인할 수 있다. 에디터에서 빌드를 하면 다른 장비를 할당해서 빌드하는 것을 볼 수 있다.


* 문제 해결


1. Coordinator 에서 Agent 목록이 뜨질 않는다.

Agent 에서 Coordinator 로 접근이 되지 않는 상황이다. telnet 을 이용하여 coordinator 장비에 직접 접근해 보자. coordinator 는 TCP 8009 포트를 사용한다. IP 를 이용하여 설정하면 안되는 것 같다.


2. 빌드 시에 Agent 에서 "failed to connect" 메시지

빌드 시에 Agent 에서 "failed to connect" 라는 메시지가 뜨면서 빌드를 못하고 있다. Agent 간에 접근이 되지 않는 상황으로 보인다. agent 가 사용하는 포트를 방화벽에서 허용해주면 된다. 귀찮으니보안이 확실한 내부망이라면 일단 방화벽을 내려버리자.


URL : https://forums.epicgames.com/threads/965487-Setup-Swarm

728x90

주소 : http://youtu.be/RQm6cm05SLc?list=PLZlv_N0_O1gaCL2XjKluO7N2Pmmw9pvhE


언리얼 엔진의 UI 플랫폼인 UMG(Unreal Motion Graphics) 를 이용하여 FPS Template 에서 간단한 인벤토리와 HUD 를 구현해보는 튜토리얼. 20분 정도 길이의 6개 동영상으로 이루어져 있다. 


P.S.


; 에디터만 본다면 언리얼보다 유니티가 가볍고 편한 것 같다.

; UMG 와 Blueprint 는 더 안정화되고 최적화 되어야할 것 같다.

728x90

언리얼 강의 갔더니 'UE4 개발할 때 프로젝트 파일이나 솔루션 파일을 Source Control에 올리지 않는다' 라는 내용이 있었다. 멀티 플랫폼 환경에서 빌드하기 위해서 각각 빌드 환경을 유지 보수하기 힘드니 코드들만 넣어두면 알아서 빌드되도록 자동화한 것 같다. (sln 에서 지워도 좀비처럼 다시 살아나니 파일을 지우거나 .h_ .cpp_ 같은 식으로 바꾸라고 ... )


엔진 빌드는 'GenerateProjectFiles.bat' 파일을 각자 작업환경에서 실행하면 되는데 UE4 로 만든 프로젝트에서는 위 정책을 어떻게 따라야하는지 검색해도 못 찾겠더라는...


이미 sln 이 있는 경우에는 Visual Studio 에서 해당 프로젝트를  열어서 'Refresh Projects' 를 하면 자동 업데이트는 되는 것 같긴 한데 sln 과 vcxproj 가 Source Control 에 올라가 있어야 해서 이건 아닌 것 같다고 판단.


sln 과 vcxproj 파일을 지우고 에디터에서 코드를 추가했더니 sln 과 vcxproj 가 새로 생성되는 것을 확인했다. 로그창을 봤더니 UnrealBuildTool 이라는 애가 그 역활을 해주나 보다.


"{Unreal Engine Root}/{Version}/Engine/Binaries/DotNET/UnrealBuildTool.exe" -projectfiles -project="{Project File Fullpath}" -game -rocket -progress


-game -rocket -progress 옵션이 뭐하는지는 모르겠지만 일단 위와같이 하니 sln 과 vcxporj 파일이 생성된다. 위 명령어를 다듬어서 bat 파일 형태로 Source Control 에 올리고 작업하면 될 것 같다.


언리얼 폴더 뒤져보니 {Unreal Engine Root}/{version}/Engine/Build/BatchFiles 에 RocketGenerateProjectFiles.bat 파일이 있네. 해당 파일로 uproject 파일을 drag & drop 하면 되는 듯...


(2014.12.18) 배치 파일 이용해서 만든 sln 의 경우 빌드가 안되는 경우도 있는데 언리얼 에디터에서 '파일' > 'Visual Studio 프로젝트 새로고침'을 클릭해서 sln 새로 만들면 빌드가 된다.


(2015.04.06) uproject 파일을 마우스 오른쪽 클릭하면 "Generate Visual Studio project files" 라는 메뉴가 생김



728x90

'Destructible Meshes'


Tesla Dev 라는 youtube 채널에서 만든 'Destructible Meshes' 만드는 법과 간단한 사용법에 관련된 동영상이다. 5분 정도 길이의 간단한 따라잡기 스타일의 동영상이니 부담없이 봐도 된다. 


'Destructible Meshes' 만드려면 static mesh 만들 때 부터 뭔가 해줘야 하는가 싶었는데 static mesh 선택하고 오른쪽 마우스 클릭해서 나오는 메뉴에서 '디스트럭터블 메시 생성' 하면 바로 생성하고 설정할 수 있네...너무 간단해서 당황...


Part 1 : https://www.youtube.com/watch?v=QIvcTwlosMQ

Part 2 : https://www.youtube.com/watch?v=8x7g14mNBbg

728x90

언리얼 엔진 4.5 가 얼마 전까지 Preview 더니 공식 릴리즈되었네...


이번 피쳐 중에 관심 가지는 부분은 'Unreal Motion Graphics(Gui Designer)' 가 추가된 것!! ScaleForm은 Flash 도 배우고 Scaleform component 도 배워야 해서 별로라고 생각했고 그렇다고 Unreal HUD api는 DrawText, DrawImage 수준이라 마우스나 키보드 이벤트 처리나 애니메이션을 다 노가다로 해야해서 답이 없던 상황에 언리얼에서 새 UI Architecture 를 제공한다고 해서 기대하고 있었다.


이전 버젼에서도 native c++ 로 slate architecture 기반으로 UI 작업을 할 수 있었지만 이제는 에디터 위에서 UI 작업을 더 직관적으로 할 수 있게 되었다.


이제 첫 공식 릴리즈라 불편한 부분이나 버그도 많지만 앞으로 많은 개선이 이루어질 것이라고 기대한다.


4.4 에서 4.5 로 변경 시 UMG 관련 고려 사항

; 프로젝트 업데이트 했더니 UI architecture 구조가 바뀌어서 그런지 widget 오픈하면 에디터가 crash 나서 하루종일 다시 작업 함. copy & paste 해도 CRASH 나는 경우가 있어서 4.4 보면서 따라 침. -_-;;

; 4.4 에서는 event 호출을 함수를 바인딩하는 식이었는데 4.5에서는 event 호출하면 custom event가 호출되고 그 흐름을 받아서 처리하는 식으로 변경된 듯. 4.5 방식이 언리얼 구조에 더 맞는 것 같긴 하다.

; 슬레이트 위젯 스타일을 만드는 것은 그대로 있는데 적용하는 방식이 바뀐 듯...버튼 같은 경우에 각각 바꿀 수는 있는 데 미리 만들어 둔 위젯 스타일을 적용하는 방법은 모르겠네 ;;


(2014.10.17)

; 패키징 방식이 바뀐 것인지 작업 PC가 이상한 건지 패키징을 하면 실행파일 바이너리 빌드를 다시해서 패키징 한번 하면 30분 지나감 ;;;. 배포된 에디터에서 패키징하는 경우에는 괜찮음. 엔진 소스에서 빌드된 에디터에서 패키징하는 경우 엔진 부터 컴파일해서 패키징하는 것 같음.


URL : https://www.unrealengine.com/blog/unreal-engine-45-released

728x90

'Blueprint Basic Multiplayer HUD'


URL : https://wiki.unrealengine.com/Blueprint_Basic_Multiplayer_HUD


UE4 블루프린트를 이용해서 멀티플레이 메인메뉴 / 로비를 만드는 튜토리얼

; ExecuteConsoleCommand 를 이용해 블루프린트에서 listen, join, exit, start 처리

; UI 는 DrawTexture, DrawText 를 이용해서 HUD 에 그림

; 버튼 처리는 HitBox 를 이용해서 처리

; 언리얼4는 블루프린트에서 사용할 수 있는 UI 엔진이 아직 딱히 없어서 불편 :(. Slate Framework 의 경우 native 에서만 되는 것 같고, UMG(Unreal Motion Graphic) 은 아직 실험단계이고 ScaleForm은 flash 작업자가 있어야한다는 점과 binary format 인 관계로 merge 가 헬이라서 사용하고 싶지 않다는

728x90

Unity3D Tutorial 'UI'


URL : http://unity3d.com/learn/tutorials/modules/beginner/ui


; Unity 4.6 에 추가된 UI 에 대한 Tutorial

; 12개 강좌로 이루어져 있는데 각 컴포넌트 별로 간단한 소개 정도

; 1 ~ 11 번 강좌는 개별 강좌고 12번은 묶어 놓은 느낌이라 둘 중 하나는 생략해도 될 느낌


; Unity 는 Unreal 에 비해 에디터가 가벼워서 좋은 듯 (물런 기본 라이팅 퀄러티가 언리얼이 좋지만 ;; )

; Unity 스크립트의 컴포넌트 개념은 성능은 모르겠지만 코드의 asset 화 라는 측면에서 마음에 든다.

; 여러 화면 크기에 대응을 anchor 와 pivot 이라는 개념을 이용해서 layout + stretch 처리하는 것 같은데 개념이 마음에 든다

; 버튼에 대한 Transition 처리를 색상, 이미지, 애니메이션으로 할 수 있게 한 부분도 마음에 든다.

; 버튼 이벤트 처리도 기본 Trigger + Event Trigger 를 통해서 한 점도 Unity 컴포넌트 개념을 잘 녹여서 만든 것 같이 보였다.


; 새로 UI 모듈을 만든다면 Unity 의 UI 개념을 많이 차용할 것 같다.

728x90

+ Recent posts