[Unity] URP란 무엇인가?
·
유니티(Unity)/이론 정리
✍️ 개요 UPR(Universal Renderer Pipeline)은 현재 Unity에서 기본적으로 사용하는 렌더 파이프라인입니다. 최근에는 뛰어난 성능과 최적화로 모바일과 VR 플랫폼에서도 많이 사용하고 있습니다. 오늘은 URP의 개념과 동작 원리, 성능과 관련하여 내용을 정리하도록 하겠습니다. 📌 Unity Render Pipeline 의 역사 렌더 파이프라인(RP): 모델(데이터)를 화면에 출력하는 일련의 과정 과거 Unity는 Built-in이라는 RP를 사용했습니다. 하지만 Built-in RP는 한계가 명확했습니다. 첫번째 한계는 ① 최적화 기술 및 설계 부족 입니다. 위 사진처럼 광원(L)과 광원에 영향을 받는 오브젝트(N)이 있다면, 드로우콜(Draw Call)이 L * M이 ..
[Unity] 직렬화(Serialization)란 무엇인가?
·
유니티(Unity)/이론 정리
✍️ 개요Unity 개발에서 직렬화(Serialization) 라는 개념은 매우 중요합니다. 개발을 하면서 직렬화를 처음으로 접하는 경우는 [Serizable], [SerializedField] Attribute일 겁니다. 하지만 단순히 "이걸 추가했더니 이렇게 동작하구나"라는 접근 보다는 "이 기능이 어떤 원리로 동작하는가"에 대해 이해하는 것이 중요합니다. 그래서 직렬화에 대한 개념과 원리, 쓰임새에 대해 알아보도록 하겠습니다.  📌 직렬화(Serialization)란?  직렬화(Serialization): 객체를 저장하거나 파일로 전송하기 위해 객체를 바이트 스트림(Byte Stream)으로 변환하는 작업  반대로, 바이트 스트림을 객체로 변환하는 과정을 Deserialization이라고 합니다...
[Unity] Mono & IL2CPP 컴파일 방식의 차이
·
유니티(Unity)/이론 정리
Unity Engine은 두 가지 스크립팅 백엔드, Mono와 IL2CPP를 사용합니다.(스크립팅 백엔드: 스크립트를 컴파일 하는 방식 및 기술) 오늘은 Unity 컴파일 기술인 Mono와 IL2CPP가 어떻게 동작하는지, 그리고 어떤 원리와 특징이 있는지 살펴보겠습니다. Mono란? Mono: 런타임 시점에 요청 시 코드를 컴파일하는 JIT(Just-In-Time) 컴파일 방식 C#은 .NET 런타임 환경에서만 작동하기 때문에 IOS, Android에서는 작동하지 않습니다. 그래서 Unity는 Mono를 사용하여 여러 플랫폼에서 작동할 수 있도록 설계합니다.  💡 Mono가 작동하는 방식1. .NET에서 C#을 중간 언어인 IL(Intermediate Language)로 변환2. Mono에서 런타임으..
[Unity] .NET이란?
·
유니티(Unity)/이론 정리
Unity로 게임을 개발하다 보면.NET이라는 키워드를 종종 볼 수 있습니다. 오늘은 Unity에서 .NET이 어떤 기능을 제공하는지 살펴보도록 하겠습니다. .NET 의 개념과 역사 .NET: Microsoft에서 제작하였으며, 애플리케이션 개발에 필요한 라이브러리와 런타임 환경을 제공하는 무료 오픈소스 프레임워크 Unity에선 다중 플랫폼을 제공하기 위해 Mono를 사용하기 시작했습니다. Mono는 .NET 기반으로, 이때부터 Unity는 .NET 프로젝트를 진행하였습니다.    과거 .NET은 Standard, Core, XAMARIN으로 나뉘어져 있었습니다. 하지만 위 플랫폼들은 서로 다른 API를 지원했고, Microsoft는 모든 API를 하나로 통합하기 위해 .NET Standard를 출시하였..
[이론/C++] 이분 탐색 (Binary Search)
·
IT/알고리즘
이분 탐색(Binary Search)은 코딩 테스트에서 많이 등장하는 알고리즘 중 하나이다.탐색 알고리즘 중 가장 기본적인 알고리즘으로, 특정 값을 빠르게 찾는 로직이다.오늘은 이분 탐색에 대해 정리해보도록 하겠다. 이분 탐색이란? 이분 탐색(Binary Search): 정렬된 배열에서 탐색 범위를 절반씩 줄여나가면서 특정 값을 찾는 알고리즘 이분 탐색 알고리즘의 중요한 포인트는 정렬된 배열이 필요하다는 점이다.왜냐하면 이분 탐색은 데이터가 정렬되었다는 가정 하에 동작하기 때문이다. 그렇다면 이분 탐색의 알고리즘이 어떻게 동작하는지 살펴보도록 하자.   이분 탐색의 원리 이분 탐색을 하기 위해서는 left, right, mid 3개의 위치값이 필요하다.이분 탐색의 알고리즘은 다음과 같이 동작한다. ① 초..
[이론] 그리디(Greedy)
·
IT/알고리즘
그리디 알고리즘은 각 단계에서 그 순간이 최선이라고 생각하며 선택하는 방식이다.겉보기엔 간단하고 직관적이지만 항상 최적의 해를 보장하지는 않는다.이번 포스터에선 그리디 알고리즘의 개념과 특징, 그리고 예시를 통해 알아보도록 하겠다.  그리디 알고리즘이란 무엇인가 그리디(Greedy): 문제를 해결할 때 각 단계에서 가장 최선이라고 생각되는 선택을 함으로써 전체 해를 구하는 방식  그리디를 사용하는 이유 그리디 알고리즘을 사용하면 많은 이점이 있습니다.완전 탐색이 아닌, 최적의 해를 구하는 성질에 의한 경우만 탐색하면 되기 때문입니다.  구현이 간단하고 빠름그리디 알고리즘은 성질에 따라 로직을 구현하면 되기 때문에 다른 알고리즘보다 구현하기 쉽다.  계산 속도가 빠름전체 경우가 아닌, 이미 성질에 의해 정..
Unitask의 개념과 사용법
·
유니티(Unity)/이론 정리
최근에 게임을 협업하면서 Unitask를 통해 비동기 로직을 구현하는 상황을 보았다. 평소에 .NET 기반 Task을 통해 비동기 작업을 처리했는데, 협업을 통해 Unitask를 사용해보니 매력적인 라이브러리라고 생각했습니다. 그래서 오늘은 비동기 프로그래밍을 쉽게 처리해주는 Unitask에 대해 알아보도록 하겠습니다. Unitask 등장 ① Unity 코루틴(Coroutine)의 한계 코루틴은 IEnumerator를 사용해 중단과 실행을 반복하는 구조입니다. 하지만 이러한 구조는 복잡한 비동기 시스템에서 코드가 난잡해지고 가독성이 떨어집니다. 또한, 대량의 코루틴을 사용하면 많은 메모리 할당과 GC 문제로 성능 문제가 있습니다. GC가 자주 발생하는 이유: new WaitForSeconds 처럼 new..
코루틴(Coroutine)의 개념과 동작 원리
·
유니티(Unity)/이론 정리
Unity에서 사용하는 코루틴(Coroutine)은 코드의 흐름을 제어할 수 있도록 해주는 기능입니다. 코루틴을 사용하면 특정 이벤트가 발생하거나 시간이 경과한 뒤에 실행될 작업을 손쉽게 처리할 수 있습니다. 오늘은 이 코루틴에 대한 개념과 원리에 대해 자세히 알아보도록 하겠습니다. 코루틴(Coroutine)이란? 함수를 호출하면 시작과 끝이 1 프레임 안에 수행됩니다. 하지만 게임을 개발하다 보면 특정 로직이 몇 프레임(혹은 몇 초) 동안 수행되어야 하는 순간들이 많습니다. 그래서 코루틴이라는 새로운 개념이 나타나게 되었습니다. 코루틴: 특정 작업(Task)를 다수의 프레임으로 분산시킬 수 있는 실행 기능"Coroutine"은 "Co"와 "Routine"이 합쳐진 말로, 루틴(함수)들이 서로 협력하면서..
[Unity Korea] 객체 지향 설계 원칙 (SOLID)
·
유니티(Unity)/이론 정리
게임 시스템을 설계하기 위해선 유지보수성과 확장성이 좋은 코드를 작성하는 것이 중요합니다. 이를 위해 객체 지향 설계 원칙인 SOLID 원칙을 따르면 코드 구조를 더 명확하고 효율적으로 설계할 수 있습니다. 이번 포스트에서는 SOLID 원칙이 무엇인지, Unity Korea 채널을 통해 정리하고 관련 정보를 알아보겠습니다. GoF & SOLID GoF: "Gang of Four"의 약자로, 디자인 패턴에서 중요한 역할을 수행한 4명의 개발자를 의미합니다. 이들은 객체 지향 소프트웨어 설계를 체계화하여 디자인 패턴을 정리하였으며, 디자인 패턴은 크게 생성 패턴, 구조 패턴, 행동 패턴으로 나뉩니다. 총 23개의 패턴이 존재하는데, 추후에 게임 개발에서 자주 사용되는 패턴에 대해 따로 정리하도록 하겠습니다...