유니티 젠킨스 빌드관련 하여 퇴사하기 전에 인수인계하면서 흔한 빌드 에러에 대해서 정리를 하였습니다.

 

1. 유니티 허브에서 로그아웃

가장 흔한 문제로 코드 오류도 없고 아무 문제없는데 빌드가 안됩니다.

대체적으로 로그를 보면 초반에 빌드 실패가 되고, 잘 읽어보면 로그인 문제라고 나오긴합니다.

빌드 PC가 재부팅을 하였다든지, 여러 원인으로 인하여 유니티에서 로그아웃이 된 경우 발생하는 흔한 빌드 에러입니다.

유니티 허브를 재로그인하면 아무런 문제 없이 해결이 됩니다.

 

2. 빌드 PC에 유니티를 켜둔 경우

빌드 PC에서 유니티를 실행하여 코드를 직접적으로 수정하거나 각종 설정을 수정한 후에 그대로 둔 상태로 빌드를 시킨 경우, 그냥 안됩니다.

빌드 PC의 경우 아무것도 유니티가 켜있으면 빌드가 되지 않으니 반드시 작업하고 유니티를 종료하여야 합니다.

 

3. svn 업데이트 문제

회사마다 사정은 다르겠지만, 대부분 svn을 활용할 것입니다.

저희 같은 경우 svn에서 자동으로 다운로드하여서 자동으로 빌드하고, 그리고 다시 빌드 svn에 커밋을 하는 구조입니다.

svn의 주소가 바뀌거나 아이디가 변경이 되거나 하는 경우도 빌드 에러가 많이 발생합니다.

svn PC의 위치만 바꾸어도 주소가 바뀌기 때문에 꼭 svn 주소를 수정하거나 아이디 비밀번호를 수정해야 합니다.

 

4. 빌드 PC 용량 이거나 svn 용량 문제

흔하게 발생하는 문제 중 하나가 용량 문제입니다.

빌드 PC는 어찌 되었던 svn에서 수정된 내용만 올라가기 때문에 용량 문제가 크게 발생하지는 않습니다만, svn은 수정될 때마다 백업이 되기 때문에 용량이 계속 쌓입니다. 이런 경우 svn 서버의 용량을 비워줘야 합니다.

그간 백업된 파일을 지우거나, 하드용량을 늘려야겠죠?

 

5. 코드를 수정했지만, 빌드결과가 같은 경우 - 미치고 환장할 번들문제

제가 젠킨스 빌드 관리할 때 처음에 겪었을 때 제일 골치가 아팠던 부분이었는데, 아무런 에러도 없고 정상적으로 빌드가 되었는데 코드를 아무리 수정해도 에러가 발생하는 경우가 있습니다.

이 경우 다른 코드를 의심하기 시작하여 누구 코드가 잘못된 것이 아니냐? 이러면서 서로를 의심하는 상황이 생기는데 아주 꼴 때리는 상황이 됩니다.

유니티의 어셋번들의 경우 다시 빌드하지 않고 수정된 것만 빌드하는 경우가 많기 때문에 작은 코드 수정을 한 경우 번들을 다시 생성하지 않는 문제가 가끔 있습니다. 그런 경우 번들을 직접 지워줘야 정상 빌드 됩니다.

아니면 분명 코드는 수정했지만, 결과는 똑같이 나올 수 있습니다.

그래서 제가 젠킨스 관리할 때 매일 새벽에 자동 빌드를 하도록 만들어놨는데, 새벽에는 아무도 빌드 PC에 접근하지 않기 때문에 이때 번들을 지우고 전체 빌드를 할 수 있도록 하였습니다.

번들을 지우고 다시 빌드하면  시간이 오래 걸리긴 하지만 정상화됩니다.

 

대략 기억나는 내용은 이 정도인듯합니다.

예전에 챗지피티가 없을 때는 로그를 하나하나 뒤지는데 아주 미칠 거 같았는데, 지금은 로그를 챗지피티에게 던져주면 대략적으로 알려줍니다. 하지만, 번들 문제는 AI도 못 찾았기 때문에 다양한 각도로 문제점이 무엇인지 봐야 합니다.

 

이상하게 꼭 클라이언트 미팅이라든지 시현하기 전날 빌드가 안 되는 문제가 발생하는지... 참...

'Unity > ETC' 카테고리의 다른 글

Baked Lightmaps 문제점  (0) 2022.12.12
Prefab에 대해서 정리해봅시다.  (0) 2022.01.18
Unity LUT  (0) 2021.10.27
Asset Database version2?  (0) 2021.05.27
UTS2 Shader 모바일용과 일반의 차이  (0) 2021.05.25

 

어떠한 이유에서 게임을 빌드했는데, 비정상적으로 셰이더가 나올때 사용하면 좋은 기능입니다.

 

Shader variant collection은  shader가 빌드가 되었을때 정상적으로 보이게 보장되도록 shader를 확정해주는 기능입니다.

유니티 원문에는 이기능은 scene을 로드하기만해도 자동으로 수집되기 때문에 shadervariant 파일이 있기만 해도 된다는 식으로 써있지만, 이기능을 어떻게 사용하는지 명확한 설명이 없어서 저처럼 헤메는 일이 없도록 공유해봅니다.

우선 중요한 것은 하나의 scene에 사용되는 모든 material을 모아야 합니다. 여러 scene을 돌아가면서 로드해도 되는데,

문제는 그렇게 하려면 게임을 실행시켜서 모든 scene을 돌아가면서 열어야 하는 번거로움이 있습니다.

수동으로 shader를 기능에 등록만 하면 되지 않을까 생각하지만, 이 기능은 material에서 실제 사용되는 옵션을 저장하는 방식을 가지고 있기 때문에 작업자가 이 옵션을 일일히 넣는다는건 유니티에 shader에 대해 완전히 파악한 사람이 아니고서는 솔직히 어려움이 있습니다. 또한, 여러 shader를 만들었다면...생각만해도.. 끔찍...

그래서 저는 일단 모든 material을 하나의 Scene에 모으는 툴을 프로그램머분에게 요청하고, 그리고 이를 Shadervaiant로 저장하는 방법을 택하였습니다.
다음 영상은 Shadervaiant을 생성하는 과정입니다. 

(Clear를 누르고 씬을 저장하고 게임실행하고 Save to asset 한번 눌러주고 하면 수치가 일정하게 나오는거 같습니다.

이순서가 중요한거 같네요.)

간혹 숫자가 자꾸 변경이된다면, 이펙트와 같은 렌덤이 있는 오브젝트가 있을수 있으니 이런 부분은 제거하여야 합니다.

 

 

 

 

'Unity > HDRP' 카테고리의 다른 글

HDRP에서 Emssion 사용시 주의점  (0) 2022.06.24
HDRP와 URP의 빛의 차이  (0) 2022.02.10
URP, HDRP 라이트맵(shadowmask) 설정  (0) 2022.01.18
HDRP Quality 셋팅  (0) 2021.10.08
HDRP 초기 셋팅(Project Setting)01  (0) 2021.09.18

GI Cache를 지우고 해봅니다.

이게 빌드 속도를 높이려고 만든것인데, 간혹 제대로 조명이 제대로 안나온다면 이걸 리셋해주면 해결이 됩니다.

라이트맵이 제대로 반영이 안되거나 할때도 한번씩 눌러줍니다.

그외에 빌드 옵션이 잘못된 경우도 있으니 잘 확인해야합니다.

'Unity > ETC' 카테고리의 다른 글

플렛폼별 대표 이미지 압축율 테스트  (0) 2021.05.13
Galaxy S21, S7, fire HD 10 스펙  (0) 2021.05.12
Post Process 실시간 값 변경  (0) 2020.12.22
Post process 간략 설명  (0) 2020.12.18
Terrain Bake시 주의할점  (0) 2020.12.16