전체 글 90

Ground

오늘의 작업 - 게임상 땅을 만든다. - 땅 꼭지점 4개의 위치를 받아 저장한다. - 꼭지점의 기준으로 Grid를 생성한다. - 이 정보를 통해 길찾기를 몬스터가 가능하게 만든다. #1 그라운드 생성 Matrial은 AssetStore에서 무료로 받아 사용한다 Plan은 Gizmos 기준으로 2x2이므로 총 4개의 노드를 잡아 먹는다고 생각했을때, 가로 9 세로 19 Plan을 만들었다. 그러므로 Tower을 1x1로 만들었다고 가정하고 총 가로 18개, 세로 38개로 만들 수 있다. 이러한 가정이 맞을려면, 오브젝트에 대한 크기를 1x1로 고정하여 생성할 수 있어야한다. #2 땅 꼭지점 4개의 위치를 받아 저장한다. #3 꼭지점 기준으로 Grid를 생성한다. enum Vertex { LEFT_DOWN,..

Clustered VS Non-Clustered

USE Northwind; -- 인덱스 종류 -- Clustered(영한 사정) vs Non-Clustered(색인) -- Clustered -- Leaf Page = Data Page -- 데이터는 Clustered Index 키 순서로 정렬 -- Non-Clustered ? (사실 Clustered Index 유무에 따라서 다르게 동작) -- 1) Clustered Index가 없는 경우 -- Clustered Index가 없으면 데이터는 Heap Table이라는 곳에 저장 -- Heap RID -> Hwap Table에 접근 데이터 추출 -- 2) Clustered Index가 있는 경우 -- Heap Table이 없음. Leaf Table에 실제 데이터가 있따. -- Clustered Index의..

정렬 #2 병합정렬, 힙 정렬

#include #include #include #include #include using namespace std; #include // 오늘의 주제 : 정렬 // 힙 정렬 //O(Nlog(N)) void HeapSort(vector& v) { priority_queue pq; for (int num : v) { pq.push(num); } v.clear(); while (pq.empty() == false) { v.push_back(pq.top()); pq.pop(); } } // 병합 정렬 // 분할 정복(Divide and Conquer) // - 분할(Divide)문제를 더 단순하게 분할한다. // - 정복(Conquer)분할된 문제를 해결 // - 결합(Combine)결과를 취합하여 마무리 /..

카테고리 없음 2022.03.11

정렬 (버블 정렬, 선택 정렬, 삽입 정렬)

#include #include #include #include #include using namespace std; #include // 오늘의 주제 : 정렬 // 1_ 버블 정렬 (Bubble Sort) // 가장 처음부터 차례차례 다음 수와 비교하여 정렬한다. // 시간 복잡도 (N-1) + (N-2) + (N-3) ... +2+1 // = O(N^2) void BubbleSort(vector& v) { const int n = (int)v.size(); for (int i = 0; i v[j+1]) { int temp = v[j]; v[j] = v[j + 1]; v[j + 1] = temp; ..

데이터베이스 세부 인덱스 확인 및 복합 인덱스

인덱스 확인 USE Northwind; --DB 정보 살펴보기. --데이터에 대한 정보 (이름, 용량, 경뢰 등등) EXEC sp_helpdb 'Northwind'; -- 임시 테이블 만들기 (인덱스 테스트용) CREATE TABLE Test ( EmployeeIDINT NOT NULL, LastNameNVARCHAR(20) NULL, FirstNameNVARCHAR(20) NULL, HireDataDATETIME NULL ); GO INSERT INTO Test SELECT EmployeeID, LastName, FirstName, HireDate FROM Employees; SELECT * FROM Test; -- FILLFACTOR (리프 페이지 공간 1%만 사용) -- PAD_INDEX (FILL..

효율적 UI_Component 바인딩

UI 필요성 흔히 우리는 Inspector에 오브젝트를 끌어와 사용한다. 하지만 프로젝트가 점점 커지고, UI 요소가 많아지면 Inspector 복잡해지며, 알아보기 힘든 경우가 많다. 또한, Inspector의 정보값이 달라진다면, 값이 누락되어 예기치 않은 터짐이 발생한다. 이러한 문제점을 해결하고, 접근성을 높이기 위해 UI의 Utility를 높일 필요성을 느꼈다. UI_Base UI_Base는 UI 컨트롤에 베이스역할을 해준다. Dictionary를 통해 Enum 타입에 따라 유니티 오브젝트를 저장하고 필요할 때, 연결시켜주는 기능을 수행한다. using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.U..

정리/UNITY 2022.03.08

Unity Shader (셰이더)

셰이더 셰이더란 무엇인가? 화면에 색을 칠한는 프로그램. 랜더링 파이프라인의 일부를 유연하게 변경하는 프로그램. 이처럼 셰이더도 여러 역할을 가진 셰이더가 있으며, 이 역할들을 최적화 및 변경하여 원하는 렌더링 효과를 낼 수 있다. - 버텍스 셰이더 : 그려질 위치를 결정. ex ) 실제로 보는 사과를 캔버스에 옮겨 스케치하는 작업. -> 3차원의 랜더링 대상을 2차원 모니터에 옮겨지는 작업. - 프래그먼트 셰이더 : 칠할 색을 결정. ex) 실제 보는 사과에 색을 칠하는 작업 -> 3차원의 랜더링 대상을 모두 색칠 작업을 진행한 후, 2차원에 깊이에 따라 색을 결정하는 작업 -컴퓨트 셰이더 : 범용적인 문제에 GPU를 사용한다. 색은 싱글 쓰레드로 처리하는 작업이 아닌, CPU에서 연산을 마친뒤 Tas..

정리/UNITY 2022.03.08

레드 블랙 트리 #2

Delete 1. 삭제할 노드가 Red -> 그냥 삭제 2. Root가 DB -> 그냥 추가 Black 삭제 3. DB의 sibling 노드가 Red s = black, p = red (s p 색상 교환) DB 방향으로 rotage(p) 4. DB의 sibling 노드가 Black && sibling의 양쪽 자식도 Black 추가 Black을 parent에게 이전 p가 Red이면 Black 됨 p가 Black이면 DB 됨 s = red p를 대상으로 알고리즘 이어서 실행 (DB가 여전히 존재하면) 5. DB의 sibling 노드가 Black && sibling의 near child =red, far child = black s near 색상 교환 far 방향으로 rotate(s) 6. DB의 siblin..

카테고리 없음 2022.03.07

레드 블랙 트리

레드 블랙 트리(Red Black Tree) 란? 레드-블랙 트리(red-black tree)는 자가 균형 이진 탐색 트리(self-balancing binary search tree)로서, 대표적으로는 연관 배열 등을 구현하는 데 쓰이는 자료구조다. 1978년 레오 귀바스(Leo J. Guibas)와 로버트 세지윅이 1972년 루돌프 바이어가 창안한 "대칭형 이진 B-트리"를 발전시켜 만들었다. 레드-블랙 트리는 복잡한 자료구조지만, 실 사용에서 효율적이고, 최악의 경우에도 상당히 우수한 실행 시간을 보인다: 트리에 n개의 원소가 있을 때 O(log n)의 시간복잡도로 삽입, 삭제, 검색을 할 수 있다 BinarySearchTree.h #pragma once enum class Color { Red =..

카테고리 없음 2022.03.03