본문 바로가기

unity51

[URP] Built-in Render Pipeline vs SRP ■ Built-in Render Pipeline (Legacy) 고사양 PC부터 저사양 모바일까지 원하는 만큼 다양한 플랫폼에 효율적으로 배포하기 위한 솔루션으로 개발되었음. 그래픽스 기능 조합을 지원하고 포워드 및 디퍼드 파이프라인과 함께 사용하기도 편리함. 하지만 지원 가능 플랫폼의 숫자가 늘어나면서 빌트인 렌더 파이프라인의 약점이 아래와 같이 점차 파악되어짐.기존 렌더 파이프라인의 단점1. 다량의 코드가 C++로 작성되어 있기 때문에 개발자의 수정 및 파악이 어려움2. Render Flow와 Render Pass가 미리 구성되어 있음3. 렌더링 알고리즘이 하드 코딩 되어있음4. 커스터마이징에 제약이 없어 모든 플랫폼에서 우수한 성능을 구현하기 어려움5. 렌더링 코드에 콜백이 노출되어 파이프라인에서 .. 2025. 4. 9.
[DOTS] C# Job System & Burst Compile 이론 ■ C# Job System 1. 유니티 내에서 멀티스레딩을 할 수 있는 방법 중 하나 2. 다른 방법들과의 차별점[장점]이 아래와 같이 있다. · Automates Scheduling · Safety Checks to avoid Race conditions and other common issues with multi-threading  [Race Condition 발생 조건] 1. 공유 자원(Shared Resource)에 여러 스레드가 접근 2. 동기화가 제대로 이루어지지 않음 3. 스레드가 순서에 상관없이 실행됨  3. 많은 양의 연산 혹은 수행을 할 때 사용하기 적합하다. · 예로 Procedural Generation, Path Finding, Complex Algorithms 등등이 있다.·.. 2025. 3. 1.
[DOTS] Netcode For Entities, Physics ■ 참고https://www.youtube.com/watch?v=Bz24Jp30nkM ■ Netcode For Entities란?· Multiplayer networking compatible with ECS· 특히 경쟁 게임에서 사용하길 유니티에서 권장 및 강조함· Network Speed & Accurancy를 보장하기 때문 [Server Authoritative]1. 서버 중심 제어· 모든 중요한 게임 이벤트는 서버에서 검증되고 처리됨2. 클라의 역할· 주로 입력 값 (Input Data)를 서버에 전달하고 서버에서 수신한 결과를 화면에 표시하는 것[이점]1. 보안 강화· 클라가 게임 상태를 직접 제어하지 않음2. 동기화 안정성· 서버의 권위 상태를 따르기 때문에 Desync 발생 확률이 대폭 줄어.. 2025. 3. 1.
[Unity] 사운드 출력기기 전환에 따른 이슈. ■ 이슈1. 게임에서 세팅한 AudioMixer의 Sound 옵션 값들이 리셋 된다.2. 배경 음악이 정지된다.■ 원인Unity 자체에서 사운드 출력기기 전환 시 Audio Engine을 re-init하고 있다. 이로 인하여 Audio Settings가 바뀌게 되므로 모든 Audio State의 추적이 끊기게 되어 Audio Mixer 등 오디오 관련 데이터들이 간접적으로 영향을 받을 수 있다. 구체적인 상황을 예로 들자면 안드로이드의 기본 스피커를 사용하고 있다가, 블루투스를 연동할 경우 재현이 가능하다.■ 해결1. Audio Settings의 Sampling Rate 복구 없이 Mixer의 볼륨 값만 다시 로드하니 해결되었음.2. 추후 이슈 재현 시 모든 세팅 값[AudioSettings 클래스] 값.. 2025. 2. 1.
[Unity] TMP폰트 관련 메모리 최적화 회사 프로젝트에서 다국어 작업 중 메모리 최적화를 진행한 적이 있었다.플레이 후 게임 옵션창에서 모든 언어를 한 번씩 설정을 해놓으면 폰트 관련 개체 및 아틀라스 텍스처 등이 425.4MB의 메모리를 차지하고 있었다. 여러 RnD 끝에 동일 환경에서 9.4MB까지 최적화에 성공했다.■ 기존  · Total: 425.4MB· Native Memory: 213.3 MB· GPU Memory: 212.0 MB· Managed: 108.5 KB 언어 변경 시 TMP 개체의 하위 개체로 Submesh UI개체가 생성된다. 이는 새로운 언어를 세팅한 뒤 렌더링 중인 문자가 기본 폰트에 포함되어 있지 않은 상황이라서 Fallback Font Asset들을 탐색하여 원하는 문자를 내포하고 있는 폰트 에셋의 Atlas .. 2025. 2. 1.
[Unity] 메모리 최적화를 위한 에셋 관리 [영상]https://www.youtube.com/watch?v=52ehLUfk3DQ&list=PL7g8Lh8G4gEfPhXO06haByx6KNzCrEoXR&index=10 [정리] [1. 오디오] - 모바일 같은 경우 Force To Mono를 활성화하는 것을 권장. 왼쪽 오른쪽 구분해서 사운드를 듣는 경우는 별로 없으니 - Decompress On Load는 말 그대로 메모리이 올려놓는거니 권장하지 않음. 짧은 사운드( - Compression Format은 엄청 짧으면 ADCPM을 그 외 웬만하면 Vorbis 권장. IOS는 MP3를 하드웨어 레벨에서 디코딩하는데 유니티 자체에서는 하드웨어 레벨에서 디코딩 하지않기 때문에 IOS의 이점을 이용할 수 없음. - Mute인 상태에서도 메모리에 올라가있음.. 2024. 9. 29.
[Unity] UGUI 성능 최적화 [영상]https://www.youtube.com/watch?v=1e2mSCS7o1A&lc=UgwtRZ7Kxx1CZQRd9lV4AaABAg [공부를 위해 정리한 것 기록]1. 캔버스 하나에 여러 UI를 한 번에 묶는 것보다, 자식 캔버스(Nested Canvas)를 두는 것을 권장. 이유는, 부모 Canvas에 수정 사항이 발생하지 않는 이상, 자식 Canvas의 UI가 Dirty 될 때 해당 Canvas만 갱신시킨다. 만약 한 캔버스 안에 모두 담아둔다면 자식 중 하나만 변경되어도 모든 자식들을 갱신하는 비용이 있다. 그렇다고 모든 자식들이 캔버스를 갖고있는 것은 비추천. 무거울수 있기 때문. UI 최적화는 케바케가 심하므로 완벽한 정답이 없으니 상황에 맞게 사용하길 권장 (etc: 동적인 객체, 정적.. 2024. 9. 17.
[Android] R8, Proguard 난독화 [개념] ProGuard는 Java 및 Android 앱의 코드를 난독화(obfuscate)하고 최적화하는 도구이다. 앱의 크기를 줄이고 실행 속도를 향상시켜주며 동시에 리버스 엔지니어링을 어렵게 만들어 소스코드를 보호해준다. Unity의 빌드 타겟 플랫폼이 안드로이드일 경우 유니티 내부적으로 안드로이드 프로젝트를 생성하고 빌드하기 때문에 Proguard 사용이 가능하다. 참고로, Unity에서는 이제 ProGuard 대신 R8이라는 새로운 코드 난독화 및 최적화 도구를 사용하는 것이 권장된다. R8은 ProGuard와 호환되며 보다 향상된 성능 및 최적화 기능을 제공해준다. R8은 Google에서 개발되었으며 proguard와 호환되지만 보다 더 높은 성능의 난독화, 축소, 최적화를 지원해준다.사용되지.. 2023. 3. 25.
[C++, 백준] 숫자의 합 [2022. 10. 10] 문제 N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. 출력 입력으로 주어진 숫자 N개의 합을 출력한다. ================================================================ 두 가지의 방법으로 풀어봤다. 1. Char 포인터 사용 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include using namespace std; int main(void) { ios_base::sync_with_stdio(false.. 2022. 10. 10.