개발 (Game)66 [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] ECS & C# Job System & Burst Compile 기초 실습 ■ 이론https://yjhdevelopdiary.tistory.com/247 [DOTS] C# Job System & Burst Compile 이론■ C# Job System 1. 유니티 내에서 멀티스레딩을 할 수 있는 방법 중 하나 2. 다른 방법들과의 차별점[장점]이 아래와 같이 있다. · Automates Scheduling · Safety Checks to avoid Race conditions and other yjhdevelopdiary.tistory.com■ 초기 예시 코드 (ECS중 Entity, Component) 1. RotateSpeedAuthoring (Entity) · 유니티 개체에 컴포넌트 부착을 위해 Monobehaviour 상속을 받음. [Bake]· Unity.Entiti.. 2025. 3. 1. [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. [DOTS] 기본 이론 및 ECS 내용 정리 ■ 참고https://www.youtube.com/watch?v=Bz24Jp30nkM ■ DOTS Packages Dots와 연관된 사항은 아래와 같다. 1. Entities (ECS) 2. Entities Graphics 3. Netcode for Entities 4. Physics 5. Jobs 6. Collections 7. Burst 8. Mathematics■ ECS (Entity Component System) (1) 기존 OOP와 달리 ECS는 Data-Oriented Design (DOD) 원칙을 기반으로 게임 로직과 데이터를 분리하는 기법이다. · 이는 효율적인 데이터 처리 및 코드 모듈화와 확장성 증대 효과를 가져다준다. (2) ECS의 이름을 정확히 표현하자면 Entity & Com.. 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. 이전 1 2 3 4 ··· 8 다음