UE4 Tutorial 중 'Location Based Opacity'


URL : http://youtu.be/XYPPd5oLoPM?list=PLZlv_N0_O1gaCL2XjKluO7N2Pmmw9pvhE


; Location 값에 따라 투명처리 해주는 Material 을 생성하고 세팅하는 법을 알려줌

; 2개의 챕터로 이루어진 총 13분짜리 강의

; Part 1 은 리소스 없어도 할 수 있는데 Part 2 는 리소스 URL 이 없어 그냥 보고 알아서 만드는 수 밖에 없음.

; 새 Material 이나 BluePrint 생성할 때 가끔 아래 메시지가 뜨는데 졸 짜증. 윈도우 실제 path 길이도 165는 안넘는데 뭐지? -_-;;


'The path to the asset is too long for cooking, the maximum is '165' characters. Please choose a shorter name for the asset or create in a shallower folder structure with shorter folder names'

728x90

'Introduction to PhAT'


; 언리얼의 PhAT(Physic Asset Tool) 에 대한 간단하게 소개하고 있다.

; 5분 ~ 13분 정도 길이의 8개 챕터로 이루어져 있다

; 캐릭터 모델에 rigid body collision 을 생성하고 constraint 를 설정하는 법을 알려준다.

; constraint 설정할 때 노란색 선으로 표시되는 애(명칭이 뭔지 모르겠음)가 그냥 rotate 해서는 같이 안돌아가서 simulate 하면 이상하게 동작하는 경우가 있어서 계속 다시 만들어보고 에디터도 껐다 켜보고 별 삽질을 다했는데 알고 보니 alt 키를 누르고 rotate 하면 되는 거 였음. ;;;


URL : http://youtu.be/10j4jn4VXxA?list=PLZlv_N0_O1gaCL2XjKluO7N2Pmmw9pvhE

728x90

intel TBB 나 jemalloc 같은 memory allocator 를 써보려던 중에 기존 new, delete 를 대체하려고 operator new / delete 를 overload 해 보았다.


Global replacement


일반적으로 쓰는 new는 아래 operator 들을 overloading 하면 된다. 


// replaceable allocation functions

void * operator new (std::size_t count);

void * operator new[] (std::size_t count);

void * operator new (std::size_t count, const std::nothrow_t& tag);

void * operator new[] (std::size_t count, const std::nothrow_t& tag);


// placement allocation functions

void * operator new (std::size_t count, void* ptr);

void * operator new[] (std::size_t count, void* ptr);

void * operator new (std::size_t count, user-defined-args...);

void * operator new[] (std::size_t count, user-defined-args...);


우리가 코드에 적는 new 라는 keyword 는 operator new (메모리 할당) + constructor 호출을 포함한다. operator new overloading 은 constructor 호출을 제외한 메모리 할당에 대한 부분을 재정의한다고 봐야한다.


그리고 operator new 가 재정의되면 해당 모듈의 모든 new 연산은 재정의된 연산을 타게된다. 모듈당 1번만 선언해주면 된다.


Class-specific allocation functions


operator new 를 재정의할 때 아래와 같은 짓을 하면 무한 루프를 돈다.


class CustomAlloc

{

CustomAlloc();

~CustomAlloc();


void * alloc(std::size_t count);

};


static CustomAlloc* g_alloc = nullptr;


void * operator new (std::size_t count)

{

if (g_alloc == nullptr) 

{

g_alloc = new CustomAlloc;   // 최초 new 호출 시에 custom allocator 생성. 

// 여기서 다시 operator new가 호출되어 무한 루프 ;;;

}

return g_alloc->alloc(count);

}


이럴 때는 class-specific allocation functions을 사용하면 됨.


void* T::operator new (std::size_t count);

void* T::operator new[] (std::size_t count);

void* T::operator new (std::size_t count, user-defined-args... );

void* T::operator new[] (std::size_t count, user-defined-args... );


class CustomAlloc

{

CustomAlloc();

~CustomAlloc();


void* operator new (std::size_t count)

{

return malloc(count);

}


void * alloc(std::size_t count);

};


static CustomAlloc* g_alloc = nullptr;


void * operator new (std::size_t count)

{

if (g_alloc == nullptr) 

{

g_alloc = new CustomAlloc;   // 최초 new 호출 시에 custom allocator 생성. 

// CustomAlloc::operator new 가 호출되어 무한 루프 아님

}

return g_alloc->alloc(count);

}


참고 : 


http://en.cppreference.com/w/cpp/memory/new/operator_new

http://en.cppreference.com/w/cpp/memory/new/operator_delete


728x90

언리얼4 Tutorial 중 'Introduction to Vehicles in UE4' 를 봤다.


UE4 에 포함된 차량 관련 컴포넌트를 설명하는 강좌인데 합쳐서 40분 정도 걸리는 4 개 챕터로 이루어져 있다.

블루프린트 스크립팅이나 디폴트 값 바꾸는게 전부라서 코딩지식 필요없음.


차량에 해당되는 WheeledVehicle 이라는 Class

; 바퀴 세팅

; 차에 입력을 전달하는 법

; 기어 설정

; Steering Curve 설정

; 충돌 박스 설정


바퀴에 해당되는 VehicleWheel Class

; 바퀴 반경

; Steer Angle 설정해서 뒷바퀴는 입력에 영향 안받게 하는 법

; Tire 에서 Stiff 값 설정에 따라서 달라지는 점

; Suspension 값에 따라 차량이 낙하했을 때 달라지는 점


자막은 잘못된 게 많은 것 같고 강사가 중언부언하는 스타일에 대충대충하는 스타일이라 크게 도움은 안되는 동영상인듯 :(


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

차 리소스 : https://de45xmedrsdbp.cloudfront.net/SKCar/SK_Car.FBX-1543150141.zip

728x90

언리얼 4 튜토리얼 동영상을 보면서 따라해보고 있음.


'Introduction to UE4 Programming' 이라는 섹션을 다 봤음.



네모 공간에서 3인칭 시점으로 캐릭터를 이동하면서 배터리를 먹어서 버티는 게임(?)을 만드는 강좌임.

19개 섹션으로 이루어져 있고 짧은건 1분도 안되는 것도 있고 긴 건 한 20분 정도 되는 듯.

VC++ 이용해서 native class 를 생성해서 blueprint 로 property 와 function 을 빼는 법을 익힐 수 있음.

에디터에서 다이나믹 미터리얼 설정이나 간단한 블루프린트 스크립팅도 해봄.


영어로 강의하는데 영어 자막이 형편없음.

여자 강사가 하는 코드 위주의 강의는 차분하게 이야기해서 알아먹기 쉬운데 중간에 남자 강사가 에디터 이용해서 미터리얼이나 블루프린트 스크립팅 하는 부분은 말도 빠르고 단축키도 많이 써서 따라하기 버겁더라는...

코드 copy & paste 하는 장면이나 컴파일하면서 에러 뜨는 장면 보면 유니티 튜토리얼보다 좀 성의없는 느낌임...( -_-)


중간에 ContentExamples 리소스 필요함. 배터리 리소스...( -_-). 미리 다운 받아두는게 좋음.


URL : http://youtu.be/vtcWrcscXos?list=PLZlv_N0_O1gaCL2XjKluO7N2Pmmw9pvhE

728x90

요새 좋아하는 C++ 문법 auto 와 range-based for loop. 코드가 간결해져서 좋은 듯... for_each 를 써도 되긴 하지만 functor 를 넣는 것 보다는 코드 읽는 흐름이 더 좋다고 생각함.


range-based for loop. 에 reverse iterator 쓸 때는 adaptor 같은 걸 만들어야해서 좀 난감하긴 함.


// 1

for (vector<int>::iterator i = vec.begin(); i != vec.end(); ++i)

{

}


// 2

for (auto& elem : vec)

{

}


참고 :

auto specifier http://en.cppreference.com/w/cpp/language/auto

range-based for loops http://www.cprogramming.com/c++11/c++11-ranged-for-loop.html

728x90
Unity 사이트 가보면 Learn > Tutorials > Projects 에 3가지 프로젝트가 있음. 간단하게 유니티 툴을 어떻게 써서 게임을 만드는지 따라하기 좋은 것 같음. 영어로 된 동영상인데 어려운 단어 써서 이야기하는 건 아니라서 영어 자막이 있긴 하지만 자막없이 봐도 괜찮은 것 같음.

http://unity3d.com/learn/tutorials/projects

순서는 Stealth, Roll-a-Ball, Space Shooter 순인데 Roll-a-Ball, Space Shooter, Stealth 순으로 보는게 나은 듯. 

  • Roll-a-Ball
    • 공 굴려서 블록 먹는 게임
  • Space Shooter
    • 2D 슈팅 게임
  • Stealth
    • 잠입 액션 게임
728x90
Unity3D 5가 출시예정이라 지금 4를 구매하면 5로 무료 업그레이드 해주는 행사를 하고 있는데 Unity Pro + iOS Pro + Android Pro 하면 500 만원 정도 필요하네. 1인 개발자 아니면 싸다고 이야기하기 힘든 느낌으로 가고 있는듯...Pro 버전이 아닌 일반 버전은 기능 제한이 있지만 무료.( http://korea.unity3d.com/content/content.php?cont=license_list ) Pro 버전 30일 무료 체험도 가능.

설치

* Windows 용 무료 풀 버전. Unity Pro 및 Android 체험판 다운로드
http://korea.unity3d.com/content/content.php?cont=download_list0
* 실행 시 Unity 계정이 필요한데 그냥 만들고 activate 하면 끝
* asset 다운로드 나 인증 시 인터넷 연결이 필요해 격리된 인터넷에서는 안되는 것 같음
* 튜토리얼 하다보면 Pro 기능이 필요하니깐 30일 체험판을 쓰는게 맞을 듯

튜토리얼

* 웹에 유니티 강좌도 있는 것 같긴한데 Unity 홈페이지에 튜토리얼 프로젝트가 몇 개 있음. 맛만 보려면 그것도 괜찮은 듯.
* 영어로된 동영상이고 Script 를 C# 으로 사용하나 별로 어렵지 않음.
http://unity3d.com/learn/tutorials/projects
; Project : Stealth 
; http://unity3d.com/learn/tutorials/projects/stealth

C++ 을 주로 사용했던 입장에서 Unity 에서 CS 구조를 해보지 않아서 C++ 서버랑 연동하려면 왠지 골치 아플 것 같은 느낌인데 해봐야 알 듯 :)
728x90
Unreal Engine 4 가 매달 19$ 로 개발 후 상용화 이후 매출(유저 구매액)의 5% 를 share 하는 식으로 라이센스가 풀려서 신규 프로젝트를 하면 고려해볼만한 것 같아서 가입해봤다.

라이센스 가입
* 언리얼 공식 홈페이지(https://www.unrealengine.com/) 에서 회원 가입 및 라이센스 구매
; 신용카드로 구매할 수 있음. VISA, MASTER, JCB, AMEX, ... 왠만한 카드는 다 되는 듯

엔진 다운로드
* 엔진은 공식 홈페이지에서 PC용과 MAC용을 다운로드 받을 수 있음

풀 소스 다운로드
* 풀 소스를 받으려면 GitHub 가입이 필요함.
* GitHub 가입 후 언리얼 공식 홈페이지에 GitHub 계정 내용을 갱신하고 '변경내용 저장' 클릭
* GitHub 사이트 로그인 하면 'EpicGames' 로 이동 가능
* 'Unreal Engine' 의 Releases 에서 'Source code(zip)'를 받거나 'UnrealEngine' 를 'Fork' 후 github for windows 를 설치 후 'clone' 해서 소스를 받음( symbolic link 로는 clone 이 안되네 ;;; )
* Release 에서 Required_... 파일을 받아서 엔진 루트 폴더에 압축 품
* Optional.zip 파일은 Linux 나 HTML5 용임

엔진 빌드
* VS2013 Express for Windows Desktop 이나 VS2013 Prof. 가 필요
* 엔진 루트에서 "GenerateProjectFiles.bat" 배치 파일 실행
* UE4.sln 파일을 오픈 후 빌드하면 끝 
; incredibuild 가 있는 경우 무조건 사용하게 되는데 VS2013 에서 incredibuild 가 지원하지 않아도 시도하게 되서 빌드가 fail 하게 된다. /Engine/Build/BatchFiles/Build.bat 파일에 UnrealBuildTool.exe 실행 부분에 -noxge 를 추가해 주면 됨
728x90
포트웍스 실행하는데 아래와 같은 오류 메시지가 떠서 당황

Buffer overrun detected!

Program: C:\Program Files (x86)\phptoWORKS\photoWORKS.exe

검색해보니 hosts 파일에 아래 내용을 추가하면 괜찮다고 함.

127.0.0.1 andojung.com

개발자 사이트가 폐쇄된 듯...( -_-)

출처 : http://blog.naver.com/gohaku2012/70190007916
728x90

+ Recent posts