midas+son의 크리에이티브(creative) 이야기

https://docs.unrealengine.com/latest/KOR/Programming/Development/CodingStandard/index.html


작명 규칙이나 코멘트 등 도움이 되는 문서

언리얼 프로젝트 시작 전에 한번 씩 읽으면 도움이 됨

'공부 > Unreal4' 카테고리의 다른 글

유니티 개발자를 위한 언리얼 엔진 4(url_link)  (0) 2017.03.17
언리얼 콜리전 프로필네임  (0) 2017.02.28
유용한 사이트  (0) 2017.02.06
언리얼4 - hexString to 한글  (0) 2017.01.15
언리얼4 체인 효과 내기  (0) 2017.01.11

http://www.viva64.com/en/b/0241/


정적 분석 툴 Cppcheck, CppCat, PVS-Studio, Visual Studio 비교


내용 요약

CppCat 과 PVS-Studio가 속도나 분석 면에서 월등히 좋다. 

하지만 CppCat는 2015년 4월 Closed Down 

Cppcheck 는 무료지만 딱히 좋진 않다.

Visual Studio 내부 분석 툴은 속도도 구리고 분석률도 구리다.



본인 테스트 경험

링크된 사이트 본인들 프로그램이 PVS-Studio이라서 그냥 좋게 말해준거 일 수도 있다.

더 전부터 존재했던 상용 툴들도 언급이 안되었을 뿐 찾아보면 더 있다.

CppCat은 무료였지만 PVS-Studio가 안팔리니 같은 회사 꺼라 그만한것 같다.


PVS-Studio을 체험판 설치하고 써보고

CppCheck도 설치해서 사용해보았다.


위의 글 대로 PVS-Studio는 200개 넘게 잡아냈는데

CppCheck는 24개 잡아 내더라.

PVS-Studio 체험판이다보니

정확하게 어떤 cpp파일의 몇번째 줄이 문제인지는 알려주지 않았지만

그래도 어떠한 문제들인지는 리스트로 알수 있었다.

노가다를 하면 대략 파악도 가능하지만 200개 넘는 곳을 하긴 힘들다.

CppCheck에서 나온 부분은 갯수는 금방 안되지만 무료니 위치까지 상세히 알려준다.


두 프로그램 모두 unreal 의 cpp 프로젝트에서 바로 돌릴 수는 없었지만

각 프로그램실행하여 unreal 프로젝트 폴더의 Source폴더를 별도로 타겟팅하면 된다.


Error 코드보다는 Warning 정도의 코드를 찾는데 두 프로그램 차이가 큰거 같다.

여건만 되면 다른 상용 프로그램도 사서 돌려보고 싶다.

http://cafe.naver.com/unrealenginekr/5760

[링크]유용한 사이트 공유(무료 에셋 등)


http://cafe.naver.com/unrealenginekr/9363

[링크]유용한 사이트 공유(리소스, 튜토리얼 등)


언리얼 공식 네이버 카페에서 있던 글 중에 유용한 사이트 정리해둔 글을 발췌했습니다.

출처 : http://cafe.naver.com/unrealenginekr

'공부 > Unreal4' 카테고리의 다른 글

언리얼 콜리전 프로필네임  (0) 2017.02.28
언리얼 코딩 표준  (0) 2017.02.13
언리얼4 - hexString to 한글  (0) 2017.01.15
언리얼4 체인 효과 내기  (0) 2017.01.11
언리얼 인벤토리 시스템 자료  (0) 2017.01.11

FString CommonFunc::ConvertHexToFString(FString& inStr)

{

FString resultString;


int count = inStr.Len() / 4;

for (int i = 0; i < count; i++)

{

FString tempFString = inStr.Mid(i * 4, 4);

std::string tempStr(TCHAR_TO_UTF8(*tempFString));

int strHex = strtoul(tempStr.c_str(), 0, 16);


resultString.AppendChar(strHex);

}


return resultString;

}



한글이 유니코드(2byte)로 되어있을 때

16진수(hex)나 2진(binary)가 아니라 

스트링(FString)으로만 구성되어있을때 

변환하는 방법을 찾았다.

(예를 들면 "레벨"이라는 한글이 "B808BCA8"로 들어올 때, "레"가 "B808"이다.)


한글 한글자 16진수 코드 4개로 이루어져 2byte이고

이를 숫자로 바꾸었다. (std::string으로 바꾸고 strroul함수 사용)


그리고 wchar_t라는 와이드캐릭터셋 변수에 넣으면

숫자를 알아서 한글로 바꾸어준다.

언리얼4의 FString은 내부적으로 wchar_t의 배열이므로

AppendChar()함수에 숫자로 변환한 값을 넣어주면

FString에 한글이 정산적으로 들어가는 것을 확인할 수 있다.


별도의 인코딩 함수가 없어서 고생했다. 

완성된 문자열로 들어온 값이라 hex가 아니라 스트링으로만 인식 된다.

wchar_t 의 속성을 나중에야 찾아서 그제서야 해결했다.

'공부 > Unreal4' 카테고리의 다른 글

언리얼 코딩 표준  (0) 2017.02.13
유용한 사이트  (0) 2017.02.06
언리얼4 체인 효과 내기  (0) 2017.01.11
언리얼 인벤토리 시스템 자료  (0) 2017.01.11
블루프린트 받아올 때 실수한 부분  (0) 2017.01.10

hangul.txt


UAC00_hangul.pdf


http://www.unicode.org/charts/



/*================

위의 파일들과 url 참고

================*/

https://www.youtube.com/watch?v=Fqp4Lh2FF0M


FBX를 임포트 하고 스켈레탈메시 블루프린트에서 

체인 효과를 내는 방법이 

잘나와있는 유튜브 영상이다.


크레인과 후크에 적용하기 괜찮아서 적용해보았다.


좋은 자료를 찾아서 기록용으로 작성


https://www.youtube.com/watch?v=kpzd3yFxj74

유튜브 동영상


https://drive.google.com/file/d/0B45Kp15-PhyOWXQ3SzdTVjBtWmM/view

관련 언리얼프로젝트 받을 수 있는 구글 드라이브(블루프린트 Only)

//PathToBlueprint : 블루프린트 경로 FString

//FStringAssetReference ItemToReference(PathToBlueprint);

//UObject* ItemObject = ItemToReference.ResolveObject();

if ((MyWorld))

{

//UBlueprint* GeneratedBP = Cast<UBlueprint>(ItemObject);

UBlueprint* GeneratedBP = Cast<UBlueprint>(StaticLoadObject(UBlueprint::StaticClass(), NULL, *PathToBlueprint));

return MyWorld->SpawnActor<AMeshActor>(GeneratedBP->GeneratedClass, SpawnLocation, SpawnRotation, SpawnInfo);

}

FStringAssetReference 에 대해 ResolveObject()로 오브젝트를 받아올 때

에디터 모드에서는 정상적으로 블루프린트를 가져왔지만

exe빌드(실행모드) 에서는 관련 속성이 nullptr이 나왔었다.


그리하여 StaticLoadObject로 가져오니 

정상적으로 실행모드에서도 블루프린트의 모든속성을 정상적으로 가져오게 되었다.

void Function(FString path)

{

//std::string filename(TCHAR_TO_UTF8(*path));

//인코딩 문제 발생 : https://docs.unrealengine.com/latest/INT/Programming/UnrealArchitecture/StringHandling/CharacterEncoding/


const wchar_t* ptr = *path;

int csize = 128; //글자 바이트 제한

char* tempFileName = new char[csize];

char def = '?';


//함수 참고 Url : https://msdn.microsoft.com/en-us/library/windows/desktop/dd374130(v=vs.85).aspx

WideCharToMultiByte(CP_ACP, 0, ptr, -1, tempFileName, csize, &def, NULL);


std::string fileName(tempFileName);

delete[] tempFileName;

}

TCHAR_TO_UTF8로 받으면 ???으로 한글이 바뀐다.

WideCharToMultiByte 를 사용하여 처리하면 한글로 제대로 보여지게 된다.

각 주석의 url을 걸어놨으니 확인해보자.

c++ 에서 Ubutton에 Onclicked.Add() 로 동적인 함수를 호출 하고자

TScriptDelegate<FWeakObjectPtr> 변수에 BindUFunction을 하였다.

함수가 받는 파라미터가 없으면 괜찮게 동작하는데

파라미터를 받는 함수는 에러가 난다.

파라미터를 넘기는 부분을 찾았으나 없었고

Although templated, the parameter is not intended to be anything other than the default, and is only a template for module organization reasons.

이라는 것을 찾았다.


오직 모듈 구성상으로만 이용되며 파라미터를 받지 못하는 것 같다.

다른 방법을 찾아 강구 해봐야 겠다.