내일배움캠프 67

내일배움캠프 87일차 TIL 최종 프로젝트 - BT (Behavior Tree)

20250116 / Unity_6차  19주차 목요일  오늘 최종 프로젝트 결과물 브로셔를 작성하며 기술스택을 적는 중에, AI 관련하여 FSM을 사용한이유에 대해서 쓰면서 BT를 채택하지 않은 이유에 대해 한 번 정리해 봐야 겠다는 생각을 했다. BT (Behavior Tree)의 개념BT는 AI의 행동을 계층적으로 관리하는 트리 구조로, 각 행동과 조건을 노드(Node)로 표현합니다.BT는 동적인 의사결정을 가능하게 하고, 행동 우선순위를 조정하거나 조건 평가를 통해 적합한 행동을 선택하는 데 유용합니다.BT의 주요 구성 요소루트 노드: 트리의 최상위 노드로, 모든 행동의 시작점입니다.컴포지트 노드(Composite): 여러 자식 노드를 포함하며, Selector(우선순위 기반) 또는 Sequence..

카테고리 없음 2025.01.16

내일배움캠프 86일차 TIL 최종 프로젝트 - URP와 HDRP

20250115 / Unity_6차  19주차 수요일  1. URP (Universal Render Pipeline)특징경량화와 다목적성:다양한 플랫폼(모바일, 콘솔, 데스크탑)을 대상으로 설계되었습니다.효율성과 성능에 초점이 맞춰져 있으며, 저사양 하드웨어에서도 동작하도록 최적화되어 있습니다.성능 중심:경량 조명 모델과 쉐이더로 GPU 부하를 최소화합니다.SRP 배칭을 활용하여 드로우 콜(Draw Call)을 줄입니다.비용 절감:모바일 및 중급 PC에서 높은 성능을 유지하면서 품질 손실을 최소화합니다.지원하는 기능:Physically Based Rendering (PBR): 물리 기반 렌더링.포스트 프로세싱: 블룸, 컬러 그레이딩, 비네트 등.2D 렌더러: 스프라이트, UI, 이펙트를 효율적으로 렌더링..

카테고리 없음 2025.01.15

내일배움캠프 82일차 TIL 최종 프로젝트 - CPU와 GPU

20250109 / Unity_6차  18주차 목요일  CPU와 GPU의 작동 방법 차이CPU와 GPU는 모두 컴퓨터의 연산 장치로, 데이터를 처리하고 작업을 수행하는 역할을 합니다. 그러나 설계 철학과 구조, 작동 방식에서 큰 차이가 있습니다. 이 차이는 각 장치가 특화된 작업에 대해 효율적으로 동작하도록 설계되었기 때문입니다.1. 설계 철학CPU (Central Processing Unit)목적: 범용 프로세서로, 모든 종류의 작업을 처리하도록 설계되었습니다.설계 초점: 빠르고 복잡한 순차적 작업 처리.소수의 강력한 코어를 사용하여 복잡한 계산이나 로직을 효율적으로 처리.작업 유형: 운영 체제 제어, 애플리케이션 실행, 명령어 해석 등.GPU (Graphics Processing Unit)목적: 특화..

카테고리 없음 2025.01.09

내일배움캠프 81일차 TIL 최종 프로젝트 - 쿼터니언(Quaternion)

20250108 / Unity_6차  18주차 수요일  https://docs.unity3d.com/kr/2021.1/Manual/class-Quaternion.html 중요 클래스 - Quaternion - Unity 매뉴얼Unity는 Quaternion 클래스를 사용하여 게임 오브젝트의 3차원 방향을 저장하고, 이를 통해 한 방향에서 다른 방향으로의 상대 회전을 설명합니다.docs.unity3d.com 1. 쿼터니언의 등장 배경쿼터니언은 3D 공간에서 회전을 표현하기 위해 수학자 윌리엄 로완 해밀턴(William Rowan Hamilton)이1843년에 개발했으며, 등장 배경은 다음과 같다.회전 표현의 한계: 3D 공간에서 오일러 각(Euler Angles)로 회전을 표현할 때, 깁스 현상(Gimba..

카테고리 없음 2025.01.09

내일배움캠프 80일차 TIL 최종 프로젝트 - 쿼리 식

20250107 / Unity_6차  18주차 화요일  쿼리 식은 LINQ(Language-Integrated Query)의 기능으로,데이터를 질의(Query)하고 조작하기 위해 사용된다. LINQ는 배열, 리스트, 데이터베이스, XML과 같은 다양한 데이터 소스에서 데이터를 처리할 수 있도록통합된 구문을 제공한다. 쿼리 식은 SQL과 유사한 방식으로 데이터를 다룰 수 있도록 설계되었으며,주요 키워드 from, where, select 등을 통해 데이터를 필터링하고 변환할 수 있다. var result = from item in collection where 조건식 select item; 쿼리 식 동작 원리from 키워드:데이터를 쿼리하기 위해 데이터를 순회(i..

카테고리 없음 2025.01.08

내일배움캠프 79일차 TIL 최종 프로젝트 - 튜플(Tuple)

20250106 / Unity_6차  18주차 월요일   튜플(Tuple)은 여러 개의 값을 하나의 데이터로 묶어서 반환하거나 전달할 때 사용하는 데이터 구조다. C#에서 제공하는 튜플은 값형식(Value Type)으로,다양한 데이터 타입의 값을 그룹으로 묶어 처리할 수 있다. class MaxHeap where T2 : IComparable{ private readonly List Heap = new(); public (T1 Data, T2 Value) Peek() { if (Count == 0) throw new InvalidOperationException("Heap is empty."); return heap[0]; } ..

카테고리 없음 2025.01.06

내일배움캠프 78일차 TIL 최종 프로젝트 - OnTriggerStay2D

20250103 / Unity_6차  17주차 금요일  OnTriggerEnter2D 로 Collider 이벤트를 처리하는 경우에이미 대상과 겹쳐 있으면 이벤트를 타지 않는 경우가 있다. 그럴 때 사용할 수 있는 방법이 몇가지 있다. 1. OnTriggerStay2D 이벤트 활용OnTriggerStay2D 이벤트는 Trigger Collider와 겹쳐 있는 동안 매 프레임 호출된다. 특정 타이밍에 확인이 필요하다면 이 이벤트를 활용할 수 있다. 2. Physics2D.Overlap 메서드 사용 Unity의 Physics2D 클래스에서 제공하는 OverlapCircle, OverlapBox, OverlapArea 등의 메서드를 사용하면특정 지점이나 영역 내에 다른 Collider가 존재하는지 검사할 수 있..

카테고리 없음 2025.01.06

내일배움캠프 77일차 TIL 최종 프로젝트 - Quickselect (Partitioning Algorithm)

20250102 / Unity_6차  17주차 목요일  n명의 NPC 중 특정 위치에서 가장 가까운 k명을 뽑기 위해 알고리즘을 찾던 중Quickselect라는 것을 알게 되었다. Quickselect의 작동 원리피벗(Pivot) 선택:리스트에서 임의의 값을 피벗으로 선택합니다.파티셔닝(Partitioning):피벗보다 작은 값은 왼쪽으로, 피벗보다 큰 값은 오른쪽으로 이동합니다.QuickSort와 동일한 방식으로 동작합니다.필요한 부분만 탐색:피벗의 위치를 기준으로, 필요한 부분(상위 N개 또는 k번째 요소가 포함된 부분)만 재귀적으로 탐색합니다.예를 들어, 피벗이 상위 N개의 범위에 속하면, 더 이상의 재귀 호출 없이 종료합니다.결과 반환:특정 k번째 요소 또는 상위 N개 요소를 반환합니다.  보통의..

카테고리 없음 2025.01.02

내일배움캠프 76일차 TIL 최종 프로젝트 - 그리드 맵

20241231 / Unity_6차  17주차 화요일  이제와서 알게 된 것이지만, 맵의 구조물을 배치할 때 Kingdom : New Lands는 그리드를 기반으로일정 간격의 셀 내에 배치하는 것 같다. 맵의 생성이나 연속적으로 밝기가 변하는 영역 등을 어떻게 처리하나 고민했는데,그리드 기반으로 셀의 데이터에 포함시키면 된다는 것을 알았다. 그리드 기반의 데이터 구조 설계맵을 2D 또는 3D 그리드로 나누고, 각 셀에 대한 상태 정보를 저장합니다.셀의 속성셀은 아래와 같은 정보를 가질 수 있습니다:위치 정보: 셀의 월드 좌표 또는 그리드 좌표.밝기 상태: 예를 들어, 0~1 사이의 값으로 어두움/밝음을 표현.환경 타입: 숲, 평야, 물 등.업데이트 상태: 나무가 베어졌거나, 플레이어가 지나갔을 때 변화 ..

카테고리 없음 2025.01.02

내일배움캠프 75일차 TIL 최종 프로젝트 - 태스크(Task), 잡 시스템(Job System)

20241230 / Unity_6차  17주차 월요일  태스크(Task)태스크는 .NET에서 제공하는 비동기 프로그래밍의 일부로, Unity에서도 사용할 수 있다.태스크는 주로 비동기 작업이나 I/O 처리에서 유용하다.특징.NET의 Task를 사용하여 작업을 비동기로 실행.Unity 메인 스레드 외부에서 작업을 수행하고, 작업이 끝난 후 다시 메인 스레드에서 결과를 처리할 수 있음.비동기 작업에 적합하지만, Unity API와의 호환성이 제한적.장점코드 가독성: async/await 키워드를 사용해 비동기 작업을 이해하기 쉽게 작성 가능.멀티스레드 지원: 복잡한 연산을 비동기로 처리 가능.제한사항Unity API는 메인 스레드에서만 접근 가능.높은 성능 병렬 작업에는 적합하지 않을 수 있음. 잡 시스템(..

카테고리 없음 2024.12.31