2016년 6월 19일 일요일

언리얼 엔진 4 의 check 매크로 VS ensure 매크로


언리얼 엔진 4를 하다보면, 특별한 이유없이 엔진 내부 크래쉬로 툴이 죽을 때가 많습니다. 문제는 도대체 무슨 문제인지는 모르겠고, check('조건문') 만 있는 경우가 많습니다. 내부를 조금 더 살펴본 결과, 문제가 생기면 최대한 빨리 크래쉬를 내고, 리포트를 받는 게 목적이지 않을까 싶습니다. 그럼 엄청난 리포트가 쌓이고 순식간에 고쳐질 거 같지만, 에러는 계속되고 있으니,,, 일단 어떻게든 크래시를 건너 뛰어야 겠습니다.

1. Visual Studio 에서 F5를 실행한 경우(즉 debugger 가 붙어 있는 경우)
   - 간단하게는 실행 스텝을 앞으로 옮겨서 가능 합니다. 즉 check 조건문이 걸리면 일단 visual studio break point 가 걸리는데, 이 때 왼쪽의 노란 막대를 실제 툴을 끝내는 루틴 뒤로 넘겨주면 됩니다...

2. 그냥 실행한 경우
   - 사실 이 경우 어떻게 할 수는 없지만, 지속적으로 튕긴다면 다음 번 튕기는 부분은 '일단' 막을 수 있습니다. 방법은,
      check(false) 부분을 뺍니다...네 그냥 빼는 건 기분이 좋지 않으므로, ensure(보통 메시지가 있는 ensureMsgF) 로 바꿔줍니다. 이 경우 디버거가 붙어 있을 경우 여전히 break point 는 걸리지만, 없을 경우에 바로 튕기지 않습니다. 물론 이 실행 이후는 상황에 따라 undefined?...이겠지만요. 요즘 Widget 쪽에서 이유없이 튕기는 경우가 많아서 이렇게라도 해야 되지 않을까 싶습니다.



2016년 5월 19일 목요일

언리얼 엔진 블루프린트와 버전 컨트롤(Perforce)

블루프린트 특성상,
1. (게임) 데이터
2. (게임) 로직
의 정보가 모두 들어있는데,

기존 작업 방식을 생각해보면 게임 데이터는 엑셀이나 테이블 형태로, 게임로직은 스크립트나 C++로 모두 텍스트 또는 머지가 가능한 데이타기반이다.

하지만 블루프린트는 머지 기능이나 디프 기능을 일부 지원하지만 기본적으로 바이너리 데이타 형태이고, 현재까지 완벽한 머지나 디프가 되지 않는다.

디프는 언리얼 툴 내에서 프로퍼티와 핀 연결성을 통해서 보여 주긴 하지만, 머지는 아직까지 거의 불가능인 줄 알았는데, 언리얼 내부에서 블루프린트를 사용하고 있고, 머지 툴을 사용한다고 하네요.=_=


2016년 4월 19일 화요일

언리얼 엔진 4 - 블루프린트에 대한 단상


블루프린트에 대한 단상


장점

  • 비프로그래머 직군이 이해하기 쉽다.(많은 로직 부분을 자연스럽게 직접 하시고 있더라!!!!)


스크립트언어에서 컴파일이 필요없다는 당연한 얘기인지도 모르겠지만, 비주얼 프로그래밍으로 가니 더 나아가서,,, 비프로그래머자리로 가서 고쳐 달라고 하면 거기서 슥슥 바로 고쳐주고, 고치는 과정을 눈으로 보고는 나중에 비슷한 문제는 직접 고치기 까지 함. 쉽게 배우고 이해가능한듯..(스크립트 언어와는 여기서 큰 차이가).

  • 인풋,아웃풋 컨버팅이 자동으로 된다.

가끔 내가 짠 함수도 뭘 넣어야 될지 헷갈릴 때가 많은데, 블루프린트에서는 그럴 핀으로 연결되고 안되고가 바로 보여좋다. 연결 가능한 자동 컨버터 노드도 만들어주니. 행복


  • 실행 중인 플로우를 바로 확인할 수 있다.

비주얼 스튜디오에서 실제 여기에 값이 들어오는 지 확인 하려면, 디버그로 켜고(사실 거의 디버그로 실행하겠지만) 브레이크 포인트 걸거나, 로그를 출력하거나 해서 확인하게 될텐데, 블루프린트에서는 왠만한 플로우를 바로 볼 수 있다.(큼지막한 화살표로 표시...해줌)
  • 오브젝트를 골라서 디버깅 가능

컴포넌트 방식의 최대 난관이 특정 액터에서만 디버깅하고 싶을 때 인데, 그냥 되더라….


단점
  • 복잡한 수학식을 계산하거나, 뭔가 다양한 작업을 한곳에서 진행하면(물론 잘 나누면 이럴일이 적겠지만) 알아보기 힘듦..

  • 가끔 C++에서 해야 할지, 블루프린트에서 해야 할지 몰라서 왔다갔다 할때가 있는데, 이부분은 노하우와 경험이 좀 필요한듯, 언리언은 에디트&컨티뉴가 잘 안되니, 왠만한 건 일단 블루프린트에서 작성하고 나중에 필요하면 옮기는 방식이 좀 더 편하더라
  
  • 아직 상속이나 인스턴싱 기능이 완벽하지 않아서, 짜증 날때가 있음..(옛날 컴파일러 쓰는 느낌(!)인데, 차츰 좋아지는듯)

  • 카피 & 페이스트의 죄책감이 적어져서…...음….