컴퓨터 용어 정리 76
-
스레드(Therad) 프로세스 내에서 실행되는 실행 단위를 의미한다. 각 프로세스는 최소한 하나의 스레드, 메인스레드를 가지고있다. 스레드는 각자 독립적인 레지스터 집합을 가지지만, 같은 프로세스 내의 스레드들은 같은 메모리공간을 공유한다. 그리하여, 같은 프로세스 내의 스레드간 통신이 간단해지며, 데이터 공유가 가능해진다. 멀티스레딩(Multithreading) 하나의 프로세스 내에서 여러 스레드가 동시에 실행되는것 을 의미한다. 이로써 프로세스는 여러 작업을 동시에 수행할 수 있게 된다. 멀티스레딩은 병렬성을 활용하여, 작업을 효율적으로 처리할 수 있다. 여러 스레드가 동시에 작업을 처리함으로 전체 시스템의 응답성과 성능을 향상시킬 수 있다. 멀티스레드 = 여러작업을 동시에 수행하는것. 스레드 = 이..
-
파티클 방식중, Trail에 대해 설명한다. 한 Quad객체를 만들고, StartPos의 Right, Left를 설정한다. 그리고 다른 모든 Vertice가 그 Right와 Left를 천천히 따라가게 만들면 된다. 이전 궤적과 이후 궤적을 참조하여, 궤적을 따라가게 설정하는것 이다. #pragma once class Trail : public GameObject { public: Trail(wstring imageFile, Transform* start, Transform* end, UINT width); ~Trail(); void Update(); void Render(); void SetSpeed(float speed) { this->speed = speed; } private: void Create..
-
객체지향 프로그래밍에서 사용하는 설계도 로, 클래스 간의 객체상속, 데이터 전달 방식을 명시적으로 표현하는 개요도 이다. 클래스 다이어그램(Class Diragram) 을 사용함으로써 얻을 수 있는 이득 자신의 프로그램을 명시적으로 표현할 수 있다. 각 코드는 작성자가 아니면, 이해하기가 매우 힘들 수 있으나, 클래스 다이어그램으로 상속관계와 데이터 구조를 표현하면 더 쉽게 알 수 있다. 전체 구조와 클래스 의존성을 파악하기 쉽다. 데이터를 명시적으로 나타냄으로 각 데이터와 객체간 의존성을 파악하고, 객체 구조를 손쉽게 수정할 수 있다. 유지보수에 용이하다. 다른사람이 이해하기 편하다는것 은, 나중에 살펴보거나 코드구조를 잊었을 때 살펴볼경우. 다시 기억을 떠올리기가 쉽다는 의미로 코드에 수정사항이 발생..
-
FSM을 응용하여 FSM의 데이터를 전부 각 함수로 구분지어 사용하는 방법이다. FSM의 이론을 일정부분 사용하면서, 캐릭터, NPC 몬스터 등의 동작을 별도의 객체로 분리하여. 별도의 Class로 구분지어 구현하고, 상속처리하여. 다양하게 처리할 수 있는것을 목적으로 한다. 이러한 행동 객체화를 통해 FSM과 다른 장점이 생기기도 하는데, FSM와 비교한 장점 구현이 쉬워진 복잡한 행동 FSM은 내부코드의 재사용성이 생각보다 불투명하지만, 함수별로 구분지어 사용하게 되면. 해당함수를 다시 정의하고 여러 캐릭터가 동일한 이동, 공격, 점프등을 사용할 수 있다. 객체지향 다형성 활용 기본적으로 상속과 인터페이스를 응용함으로. 동일한 인터페이스를 사용하는 한, 다양한 행동을 쉽고 간단하게 교체할 수 있다. ..
-
여러 상태(State)와 각 상태간의 전이(Transition)으로 이루어진 모델방법 이다. FSM은 객체의 행동을 여러 상태로 나누어 표현하고, 상태 간 전이에 따라 객체의 동작이 변경된다. 이러한 구분방식은 게임개발시 캐릭터의 행동, NPC의 행동, 게임 상태등을 관리하는데 좋다. FSM은 3가지 구성요소로 정의된다. 상태(State) 객체가 취할 수 있는 다양한 동작 또는 상태를 나타낸다. 예를들어. 이동, 공격, 대기 등을 말할 수 있다. 이벤트(Event) 각 상태간 전이를 일으키는 외부, 또는 내부에서 발생하는 사건 또는 조건을 말한다. 예를들어, " 이동한 후 도착 " 이벤트가 발생하면, 이동 -> 도착 으로 상태가 전이된다. 전이(Transition) 상태간의 전이를 나타내며, 특정 이벤트..
-
Instancing 인스턴싱은, 최적화 기법중 하나로 동일 객체나 요소를 여러번 그리는 작업을 최적화 하기 위한 기술이다. 동일한 메시를 그릴 때 여러번 DrawCall 을 할 필요 없이 한번만 DrawCall 을 한 뒤, 같은 모델을 여러번 배치하는 형태로 이루어진다. 한번 생성된 데이터는 다시 날릴 필요 없이. 그 횟수동안 받아온 위치정보만 대입하여 그려주면 되기 때문에 여러번 데이터버퍼를 받아올 필요가 없기 때문이다. 이는 DrawCall 이 데이터를 Device에서 DeviceContext에서 넘기는 과정에서 생기는 Bus Latency나 Moemory Latency가 쌓이면 엄청난 시간적 손해가 발생하기 때문이다. 그래서 DrawCall 은 리소스를 많이 쓰는 작업이고 이러한 DrawCall을 ..