개인공부(212)
-
스타크래프트 기능 구현 2
구현내용 간단하게 유닛의 공격, 추적 상태들을 만들어서 적용했다. 유닛의 공격범위를 벗어나면 유닛은 추적하고 공격범위 내에 있으면 공격하게 된다. 어려운 점 처음으로 게임에서의 공격 시스템을 만들고 있는데 정말로 고려해야 하는 점이 많았다. 먼저 컴포넌트로 가지는데 어떠한 구조로 설계할까부터 시작해서 유닛이 가져야 하는 정보, FSM 등 정말로 고려해야 할 점이 많다. 스타크래프로 하기를 잘한 거 같다. 무작정 코드를 작성하고 있는데 생각할 점이 많아서 도움이 되는 거 같다. 다음 목표 간단하게 유닛이 체력바를 구현하고 유닛이 공격을 받아서 유닛의 체력이 0이 되면 삭제되는 것이 다음 목표이다.
2023.07.14 -
충돌 연산 최적화
Dynamic AABB Tree 문제점 O 내가 구상하고 있는 게임은 스타크래프트 유즈맵 느낌의 디펜스 게임을 제작하기 위해서는 100개 이상의 오브젝트들이 필요했고 서로 충돌처리를 해서 시야를 감지하고 밀어내는 과정이 필요했다. O 원래 엔진의 구조 충돌연산구조는 단순 비교로 n^2의 시간복잡도를 가지고 있었다. 물론 오브젝트를 타입별로 나눠서 충돌을 체크했지만 그래도 같은 오브젝트의 개수가 100개 이상이 되면 프레임이 정말 떨어지는 문제점이 있었다. 해결방안 O N^2 Broadphase가 아닌 Dynamic AABB Treef를 적용해서 연산을 최적화하자 O CollisionManager를 N^2에서 Dynamic AABB Tree로 리팩토링 해보자 해결과정 O Dynamic AABB Tree 참..
2023.07.12 -
스타크래프트 기능 구현 1
스타크래프트1에서 필요한 기초적인 기능들을 구현하였다.
2023.07.10 -
카메라
기본적인 카메라의 확대, 축소, 이동, 회전을 구현하였다. BeginRender 함수를 호출하면 최종행렬을 계산하여 최종행렬 값으로 오브젝트들을 그린다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 void D2DRenderer::BeginRender() { m_IsD2DResReady = CreateDeviceResources(); // 디바이스 종속적 자원들이 문제 없고, 랜더링을 할 수 있는 상황일 때 if(SUCCEEDED(m_IsD2DResReady) && !(m_renderTarget->CheckWindowState() & D2D1_WINDOW_STATE_OCCLUDED)) { m_renderTargetSize = m_rend..
2023.07.06 -
계층구조 설계
부모 오브젝트와 자식 오브젝트 구조를 만들었다. 자식은 부모의 움직임을 따라가고 부모와 offset이 있어서 그만큼 떨어지게 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 void MainScene::Enter() { /// 리소스 로드 LoadSceneResources(L"MainScene"); /// 플레이어 오브젝트 추가 GameObject* player = new GameObject("player"); player->CreateComponent(); Transform* transform = player->GetComponent(); transfo..
2023.07.05 -
11664번: 선분과 점 / C++
11664번: 선분과 점 (acmicpc.net) 11664번: 선분과 점 첫째 줄에 선분과 점의 좌표 Ax, Ay, Az, Bx, By, Bz, Cx, Cy, Cz가 주어진다. 좌표는 0보다 크거나 같고, 10,000보다 작거나 같은 정수이다. www.acmicpc.net 물리엔진을 구현하기 전에 필요한 알고리즘들을 학습하자! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 #include #in..
2023.06.18