WinAPI 29

JSON 파일

▶ JSON - 제이슨은 객체의 구조와 속성을 텍스트 형식으로 전달하기 위해 고안된 형식이며 데이터 교환의 표준 ㄴ 기본적으로 자바 스크립트 기반 표준 표기법이지만 다양한 언어를 지원하기 때문에 확장성이 좋음 ㄴ 주로 인터넷에서 데이터를 주고 받을 때 그 자료를 표현하는 방법으로 많이 활용이 된다. ㄴ 텍스트 형식이기 때문에 사람이 보기 편한 포멧 ㄴ 문자열 기반이기 때문에 오버헤드 적용 - 제이슨은 자료의 종료에 큰 제한은 없으며 특히 컴퓨터 프로그램의 변수 값을 표현하는데 적합 - 형식 자체가 자바 스크립트 구문 형식을 따르지만 프로그래밍 언어나 "플랫폼"에 독립적으로 C++, C#, 자바, 자바 스크립트, 펄, 파이썬 등등.. 많은 언어에서 이용 할 수 있다. - CSV, XML, HTML -> J..

WinAPI 2023.09.04

INI 파일 입출력

▶ INI 파일 처리 - 응용 프로그램이나 윈도우 자체의 초기 설정에 필요한 정보가 기입 된 텍스트 파일 - INI: 파일은 설정 파일에 대한 사실 상 표준이라고 정의 할 수 있다. ㄴ 대체 할 수 있는 포멧이 전무하고 실행 파일을 관리 할 때 아주 용이. ㄴ 또한 단순 구조의 텍스트 파일로 구성이 되어 있다는 특징이 있다. ㄴ 텍스트 파일의 포멧을 가지고 있기 때문에 확장자 변환도 형용을 한다. - INI파일은 마이크로 소프트가 만든 OS인 윈도우즈에 연결이 되지만 다르 운영체제에서도 사용을 할 수 있다. - 일적으로 프로그래밍이 실행 될 때 해당하는 INI파일을 통해서 프로그램이 실행에 필요한 기본 정보를 읽어 들이면서 시작이 된다. ▷ 게임에서는 언제 사용? - 게임 쪽에서는 옵션 등에 자주 사용이..

WinAPI 2023.08.31

애니메이션, ProgressBar

▶ 애니메이션 ㄴ 하나의 이미지 파일에 하나의 모션을 관리하기 보다 배열과 같이 스프레드 시트로 공통된 액션 혹은 캐릭터를 묶어 관리하는 편이 편리 합니다. ㄴ 메모리가 연속적으로 존재해야 하고 크기가 정해져 있지 않기 때문에 스프레드 시트의 좌표와 순서를 벡터로 관리 합니다. ㄴ IDLE 상태나 달리기와 같이 반복적으로 재생되어야 하는 것은 BOOL값을 조건식으로 값을 초기화 하며 값을 업데이트 합니다. ▶ ProgressBar ㄴ 체력이나 마나와 같이 최대값과 현재값의 비율로 캐릭터의 상태를 알려주는 시스템 입니다. ㄴ 캐릭터 클래스에 최대 값과 현재 값의 비율로 프로그래스 바의 좌표를 계속 업데이트 하며 현재 상태를 알 수 있게 합니다.

WinAPI 2023.08.22

메시지 전달 방식 전환

▶ 메시지 전달 방식 전환 GetMessage -> PeekMessage ▷ GetMessage ㄴ 메시지 큐에 메시지가 존재 한다면 MSG 구조체에 그 값을 저장하고 True를 반환. ㄴ 가져온 메시지가 WM_QUIT이면 False를 리턴. ㄴ 메시지 큐에 메시지가 존재하지 않는다면 생성 될 때까지 대기. ▷ PeekMessage ㄴ 메시지 큐에 메시지가 존재 하면 MSG 구조체에 값을 저장하고 0이 아닌 값을 반환. ㄴ 메시지 큐가 비어 있을 때에 대기 하지 않고 바로 0을 리턴. 게임은 사용자가 메시지를 생성하지 않아도 맵이나 오브젝트 등 지속적인 업데이트가 발생해야 하기 때문에 PeekMessage가 일반적인 상황에서 많이 사용 할 수 있습니다.

WinAPI 2023.08.18

형상 관리

▶ 형상관리 ▷ git - 분산형 버전 관리 시스템(VCS). ㆍ장점 1. 오프라인 작업이 가능. 로컬에 복제하고, 로컬 저장소에 있는 히스토리도 그대로 유지되므로. 2. 속도가 빠르다. 각각의 개발자들이 분산처리 서버의 주인이 되는 셈이므로 서버가 해야 될 일이 많이 줄어든다. 3. 일시적인 서버 장애가 있어도 개발을 계속 할 수 있다. 로컬 저장소를 이용하기 때문. 4. 서버와 클라이언트 뿐인 기존 형상관리에 비해 분산처리 구조를 유연하게 세울 수 있다. 5. 가지치기(branch)가 비교적 가볍다. 6. 병합(merge)에서 문제가 덜 발생한다. 서버의 자료를 가져와(fetch) 로컬에서 병합하고 이를 다시 올리는 형태이기 때문. 문제가 발생하는 빈도가 낮다. 7. 스테이징을 지원한다. ㆍ 단점 1..

WinAPI 2023.08.17

타일맵

▶ 2D 타일맵 ㄴ 2D 게임 환경을 구성하는 방식 중 하나. ◆ 구성 요소 1. 타일 - 맵을 구성하는 기본 단위. - 일반적으로 사각형 형태의 작은 이미지를 사용. 2. 배열 - 2차원 배열로 구현. - 각 타일의 위치를 정확하게 파악하고, 필요한 타일을 빠르게 찾아 낼 수 있다. 3. 재사용성 - 동일한 타일을 여러 번 사용하여 메모리를 절약하고, 다양한 지형과 구조물을 표현 할 수 있다. - 이는 맵 생성 작업을 단순화 시키며, 필요에 따라 맵 디자인을 빠르고 쉽게 변경하거나 수정 할 수 있다. 4. 상호작용 - 게임 내에서 개별 타일에 대한 상호작용을 쉽게 처리 할 수 있다. - 예를 들면, 해당 타일일 벽일 경우 플레이어의 이동을 제한하거나 충돌로 처리 할 수 있다.

WinAPI 2023.08.13

모듈화, 메모리 영역

▶ 모듈화 ㄴ 함수, 사용자 정의 타입, 클래스 계층 구조, 템플릿 등 구성 요소들의 상호작용을 명확하게 정의하는 것. ㄴ 모듈화의 첫 단계는 인터페이스와 구현을 분리하는 것이다. ▷ 분할 컴파일 ㄴ 각각 분리된 파일에 존재, 따로 컴파일 할 수 있어 프로그램을 반독립적 코드 조각 집합들로 조직화. ㄴ 컴파일 시간 최소화, 논리적 구분 / 분리를 강제하므로 에러가 발생할 소지를 줄임. ▶ 메모리 영역 1. Code 영역 ㄴ 실행할 코드가 저장 되어 있는 영역 (기계어 형태로 존재.) ㄴ 컴파일 타임에 결정되고 중간에 코드를 바꿀 수 없게 Read-Only로 지정. 2. Data 영역 ㄴ 전역변수, static변수 등등이 저장되는 공간. ㄴ 전역변수 / static 값을 참조한 코드는 컴파일 하고 나면 d..

WinAPI 2023.08.11

캐스팅 연산자, 라운딩 에러

▶ 캐스팅 연산자 ㆍ static_cast ㄴ 논리적으로 변경 가능한 경우에만 변경을 허용 ㄴ ex) 실수 -> 정수 / 정수 -> 실수 (가능) ㄴ ex) 포인터 타입 -> 정수 타입 (불가능) ㆍ dynamic_cast ㄴ 실행시간 타입 정보 (Runtime Type Infomation, RTTI) 필요. ㄴ Polymorphic type 이어야 사용이 가능. ㄴ 포인터와 포인터 간, 레퍼런스와 레퍼런스 간의 변환 만을 허용. ㆍ const_cast ㄴ 상수 속성만 변경할 때 사용. ㄴ 오로지 상수 속성만 변경하기 때문에, 형변환 불가능. ㆍ reinterpret_cast ㄴ 임의의 포인터 타입끼리 변환을 허용하는 연산자. ㄴ 정수형 -> 포인터 도 변환 가능. ▶ 라운딩 에러 ㄴ 숫자가 컴퓨터에 저..

WinAPI 2023.08.10

사운드 매니저

▶ 사운드 매니저 외부 라이브러리 이용 ▷ FMOD - 사운드 엔진 라이브러리 ㄴ 사운드 관련 엔진이기 때문에 일밙거으로 사용되는 대부분의 음원 확장자는 전부 지원하고 다양한 플랫폼도 지원. - 사용 이유? ㄴ WinAPI / Directx 같은 경우에도 자체 사운드 라이브러리를 가지고 있지만 가공이 필요한 경우가 많아 불편. (별도 스레드로 분리되면서 이전보다 활용 빈도 좋아짐.) - 언리얼 ㄴ 출시를 목표로 할 때문 라이선스를 필요. ㄴ 라이선스를 통한 내장(기본 플러그쉽)만 되어 있다. - 유니티 ㄴ 출시를 목표로 할 때만 라이선스를 필요. ㄴ 내장 사운드는 기본적으로 FMOD를 사용하지만 대신 모든 기능이 있는 건 아닙니다. ㄴ 추가 기능을 사용하기 위해서 추가 에셋을 설치해야 합니다. - 그 외..

WinAPI 2023.07.06

씬 전환, 폰트 매니저

▶ 씬 전환 ㄴ 1. 초기화, 2. 메모리 해제, 3. 업데이트, 4. 랜더 와 같은 기본 구조가 되는 코어 클래스 생성 ㄴ 코어 클래스를 상속받는 자식 클래스에서 게임 씬 구현. ㄴ 관리하는 클래스에서 조건에 따라 메모리에 등록 해제를 진행. ▶ 폰트매니저 ㄴ 그릴 공간, 좌표, 폰트 이름, 크기, 굵기, 내용, 길이, 색을 인자로 받음. ㄴ 내용을 받을 때나 문자열을 받을 때 여러 자료형도 사용 가능하도록 오버로딩.

WinAPI 2023.07.06