전체 글 74

내일배움캠프 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

내일배움캠프 85일차 TIL 최종 프로젝트 - 컴파일러 버그?

20250114 / Unity_6차  19주차 화요일  오늘은 황당한 문제를 겪었다. 코드상으론 전혀 문제가 없는데 List의 요소가 하나씩 사라지는 버그였다. // FreeExplorer 중에서 position에 가장 가까운 N명 호출(FreeExplorer에서 제거)private List PopClosestFreeExplorerN(float position, int N){ // Max-Heap 생성 (거리 기준으로 비교) MaxHeap maxHeap = new(N); // 삭제할 탐험가 임시 저장 List> nodesToRemove = new(); // 탐험가 거리순으로 검색 var currentNode = freeExplorers.First; while (cur..

카테고리 없음 2025.01.14

내일배움캠프 84일차 TIL 최종 프로젝트 - 네트워크 프로토콜 (IP, TCP, UDP)

20250113 / Unity_6차  19주차 월요일  1. IP (Internet Protocol): 기본 기반IP는 네트워크 통신의 기반으로, 데이터를 전송할 때 사용하는 주소 지정 및 경로 설정 규칙을 제공합니다.기본 역할: 데이터를 목적지(예: IP 주소)로 전달.특징:데이터를 패킷 단위로 분리하여 전송.신뢰성 없음: 데이터가 손실되거나 순서가 뒤바뀔 수 있음.최적의 경로를 선택해 데이터를 전송.비유: 택배 시스템에서 IP는 주소를 보고 물건을 배달하는 "운송 시스템" 역할을 합니다. 물건이 제대로 도착했는지, 깨지지 않았는지는 신경 쓰지 않습니다.2. TCP (Transmission Control Protocol): 신뢰성을 추가TCP는 IP 위에서 작동하며, 데이터 전송의 신뢰성과 순서를 보장..

카테고리 없음 2025.01.14

내일배움캠프 83일차 TIL 최종 프로젝트 - 2차 유저테스트 준비

20250110 / Unity_6차  18주차 금요일  1차 유저테스트 이후 많은 피드백을 받았다. 아무래도 컨텐츠가 부족하다 보니 개발 방향과 직결된 피드백도 많았지만버그 관련 제보도 그에 못지 않았다. 2차 유저 테스트가 얼마 남지 않은 지금 돌이켜 보면 버그 수정 이외에는 별로 한 게 없는 것 같은 느낌이 든다.    최종 프로젝트 기간도 이제 1주일밖에 남지 않았다. 예상했던 대로 8주라는 시간은 짧았다. 미흡한 부분이 많으나 마지막까지 집중력을 놓지 말고 할 수 있는 데까지 마무리를 지어야 겠다.

카테고리 없음 2025.01.13

내일배움캠프 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