게임 개발
-
Unity C# 개발에서 const와 readonly는 모두 변경 불가능한(immutable) 값을 정의하는 데 사용되지만, 그 사용법과 적용 범위에 차이가 있습니다. 1. const (Constants) 정의: const는 컴파일 시간에 결정되는 상수 값을 정의합니다. 한 번 값이 할당되면, 프로그램 전체에서 그 값은 변경될 수 없습니다. 사용 사례: 주로 변하지 않는 값에 사용됩니다. 예를 들어, 수학적 상수(π, e 등), 설정 값 등이 있습니다. 범위: const는 기본 데이터 타입(int, float, double, string 등)과 함께 사용됩니다. 객체 참조에는 사용할 수 없습니다. 컴파일 시간: const 값은 컴파일 시간에 결정되며, 다른 어셈블리에서 참조될 때 해당 값이 직접 복사됩니..
[C#] const 와 readonlyUnity C# 개발에서 const와 readonly는 모두 변경 불가능한(immutable) 값을 정의하는 데 사용되지만, 그 사용법과 적용 범위에 차이가 있습니다. 1. const (Constants) 정의: const는 컴파일 시간에 결정되는 상수 값을 정의합니다. 한 번 값이 할당되면, 프로그램 전체에서 그 값은 변경될 수 없습니다. 사용 사례: 주로 변하지 않는 값에 사용됩니다. 예를 들어, 수학적 상수(π, e 등), 설정 값 등이 있습니다. 범위: const는 기본 데이터 타입(int, float, double, string 등)과 함께 사용됩니다. 객체 참조에는 사용할 수 없습니다. 컴파일 시간: const 값은 컴파일 시간에 결정되며, 다른 어셈블리에서 참조될 때 해당 값이 직접 복사됩니..
2023.12.25 -
Predicate: Predicate는 T 타입의 객체를 매개변수로 받아 bool 값을 반환하는 함수를 나타냅니다. 이는 주로 특정 조건을 충족하는지 여부를 평가하는 데 사용됩니다. 예: Predicate isPositive = x => x > 0; Comparison: Comparison는 두 T 타입의 객체를 비교하는 함수를 나타냅니다. 이 델리게이트는 정렬 작업에 주로 사용되며, 두 객체를 비교하여 정수 값을 반환합니다. 예: Comparison compareNumbers = (x, y) => x - y; EventHandler와 EventHandler: 이들은 이벤트 처리를 위한 표준 델리게이트입니다. EventHandler는 매개변수로 object sender와 EventArgs e를 받습니다...
유니티 C# 델리게이트Predicate: Predicate는 T 타입의 객체를 매개변수로 받아 bool 값을 반환하는 함수를 나타냅니다. 이는 주로 특정 조건을 충족하는지 여부를 평가하는 데 사용됩니다. 예: Predicate isPositive = x => x > 0; Comparison: Comparison는 두 T 타입의 객체를 비교하는 함수를 나타냅니다. 이 델리게이트는 정렬 작업에 주로 사용되며, 두 객체를 비교하여 정수 값을 반환합니다. 예: Comparison compareNumbers = (x, y) => x - y; EventHandler와 EventHandler: 이들은 이벤트 처리를 위한 표준 델리게이트입니다. EventHandler는 매개변수로 object sender와 EventArgs e를 받습니다...
2023.12.25 -
Scenes 게임화면을 구성하는 씬을 저장 Prefabs 게임에서 반복 사용되는 오브젝트를 프리팹으로 저장 Scripts 게엠에서 사용하는 스크립트를 저장 Sprites 게임에서 사용하는 2D 스프라이트 데이터를 저장 Animations 게임에서 사용하는 애니메이션 데이터를 저장 Physics Materials 게임 물리 엔진에서 사용하는 물리 재질을 저장 Fonts 게임에서 사용하는 폰트 데이터를 저장 Audio 게임에서 사용하는 효과음 사운드 데이터 저장 *Editor 유니티에 포함된 에디터 기능을 확장하기 위한 스크립터 저장 *Resources 게임 프로그램 외부에서 파일 로드하기 위한 폴더 *Plugins 유니티로 제작한 게임을 아이폰이나 안드로이드와 같은 플랫폼에서 동작할 때 필요한 네이트브 플..
유니티 폴더 구조Scenes 게임화면을 구성하는 씬을 저장 Prefabs 게임에서 반복 사용되는 오브젝트를 프리팹으로 저장 Scripts 게엠에서 사용하는 스크립트를 저장 Sprites 게임에서 사용하는 2D 스프라이트 데이터를 저장 Animations 게임에서 사용하는 애니메이션 데이터를 저장 Physics Materials 게임 물리 엔진에서 사용하는 물리 재질을 저장 Fonts 게임에서 사용하는 폰트 데이터를 저장 Audio 게임에서 사용하는 효과음 사운드 데이터 저장 *Editor 유니티에 포함된 에디터 기능을 확장하기 위한 스크립터 저장 *Resources 게임 프로그램 외부에서 파일 로드하기 위한 폴더 *Plugins 유니티로 제작한 게임을 아이폰이나 안드로이드와 같은 플랫폼에서 동작할 때 필요한 네이트브 플..
2023.12.23 -
Luna의 DX11책은 절판됨, 코드가 현재 호환이 안됨(오래돼서) Visual Studio 프로젝트 생성시 템플릿에 DirectX라고 입력하면 DirectX 11, DirectX 12 등의 템플릿이 나옴 이 템플릿 역시 공부하기에 좋은 코드는 아님. 예제의 구조 main.cpp 예제 코드에서 main 함수는 오직 초기화와 실행 기능만 있음. 나중에 실제 프로그램을 만들때는 win main을 사용할 가능성이 높음. 그러나 대부분 게임 프로그래밍을 하면 그건 엔진에서 처리해주는 부분이기 때문에 윈도우즈 프로그래밍에 집중할 것은 아님. #include #include #include #include "ExampleApp.h" using namespace std; // main()은 앱을 초기화하고 실행시키는..
D3D 시작 [2/4], [3/4] - 예제 프레임워크, 초기화Luna의 DX11책은 절판됨, 코드가 현재 호환이 안됨(오래돼서) Visual Studio 프로젝트 생성시 템플릿에 DirectX라고 입력하면 DirectX 11, DirectX 12 등의 템플릿이 나옴 이 템플릿 역시 공부하기에 좋은 코드는 아님. 예제의 구조 main.cpp 예제 코드에서 main 함수는 오직 초기화와 실행 기능만 있음. 나중에 실제 프로그램을 만들때는 win main을 사용할 가능성이 높음. 그러나 대부분 게임 프로그래밍을 하면 그건 엔진에서 처리해주는 부분이기 때문에 윈도우즈 프로그래밍에 집중할 것은 아님. #include #include #include #include "ExampleApp.h" using namespace std; // main()은 앱을 초기화하고 실행시키는..
2023.11.26 -
Graphics APIs DirectX?: 그래픽스 드라이버를 프로그래머가 더 쉽게 사용할 수 있도록 만들어 놓은 것. Nvidia 그래픽카드, AMD 그래픽카드, 인텔 그래픽카드, 기타 모바일 칩 GPU등 각각의 GPU에 대해 서로 다른 그래픽 드라이버를 프로그래머가 모두 알아야 되는가? -> 알아야 한다면 너무 힘들다. DirectX, OpenGL같은 인터페이스만 알면 되게 만든것. DirectX DirectX에는 다양한 것들이 포함되어 있는데 보통 그래픽스에서 얘기하는 DirectX는 Direct3D. 공부 방법 DX API 사용법 앞에서 공부한 개념들 연결 예제 구조가 조금 더 복잡 실시간 렌더링 알고리즘 쉐이더 프로그래밍이 중요 창의성 발휘
D3D 시작 [1/4] - Direct3D 개요Graphics APIs DirectX?: 그래픽스 드라이버를 프로그래머가 더 쉽게 사용할 수 있도록 만들어 놓은 것. Nvidia 그래픽카드, AMD 그래픽카드, 인텔 그래픽카드, 기타 모바일 칩 GPU등 각각의 GPU에 대해 서로 다른 그래픽 드라이버를 프로그래머가 모두 알아야 되는가? -> 알아야 한다면 너무 힘들다. DirectX, OpenGL같은 인터페이스만 알면 되게 만든것. DirectX DirectX에는 다양한 것들이 포함되어 있는데 보통 그래픽스에서 얘기하는 DirectX는 Direct3D. 공부 방법 DX API 사용법 앞에서 공부한 개념들 연결 예제 구조가 조금 더 복잡 실시간 렌더링 알고리즘 쉐이더 프로그래밍이 중요 창의성 발휘
2023.11.25 -
최근 나온 DirectX 예제를 보다보면 COM이라는 것을 자주 보게 될 것이다. ComPtr 은 COM object에서 사용하는 스마트 포인터라고 생각하면 된다. 우리가 DirectX API를 사용해 렌더링 하면, 우리가 직접적으로 렌더링을 하는게 아니라, Direct3D의 인터페이스를 통해 간접적으로 렌더링하는 것이다. 이때 우리가 편하게 프로그래밍할 수 있도록 제공하는 기능 중 하나이다. 스마트 포인터에서 포인터를 만들때는 make_shared, make_unique 등으로 만들었다. 그런 것 처럼 Mircrosoft::WRL::COMPtr device; 를 사용할때는 D3D11CreateDevice() 라는 함수를 이용해서 생성한다. 옵션이 굉장히 많은데 하나씩 보면서 천천히 익숙해지면 된다. 예..
COM (Component Object Model)최근 나온 DirectX 예제를 보다보면 COM이라는 것을 자주 보게 될 것이다. ComPtr 은 COM object에서 사용하는 스마트 포인터라고 생각하면 된다. 우리가 DirectX API를 사용해 렌더링 하면, 우리가 직접적으로 렌더링을 하는게 아니라, Direct3D의 인터페이스를 통해 간접적으로 렌더링하는 것이다. 이때 우리가 편하게 프로그래밍할 수 있도록 제공하는 기능 중 하나이다. 스마트 포인터에서 포인터를 만들때는 make_shared, make_unique 등으로 만들었다. 그런 것 처럼 Mircrosoft::WRL::COMPtr device; 를 사용할때는 D3D11CreateDevice() 라는 함수를 이용해서 생성한다. 옵션이 굉장히 많은데 하나씩 보면서 천천히 익숙해지면 된다. 예..
2023.11.25