본문 바로가기

My Cosmos

2D RPG 개발 환경 : Windows7(32bit) 개발 언어 및 라이브러리: C++, WinAPI, FMOD 개발 도구 : Visual Studio 2008 적용 기술 : A*(ASTAR알고리즘), 높이맵, STL(vector, map) 제작 인원 : 5명 제작 기간 : 3주 어릴 적 좋아했던 파랜드 택틱스2 모작을 제작해보았습니다. 비록 실패한 프로젝트지만 프로젝트 일정과 팀원 관리를 비롯하여 여러가지 그동안 배우지 못했던 점들을 배울 수 있는 프로젝트였습니다. 담당 업무 FrameWork 제작, 패킹툴(Packing Tool), 캐릭터. 더보기
서버 포트폴리오 개발 환경 : Windows7(32bit) 개발 언어 및 라이브러리 : C++, WinAPI, FMOD 개발 도구 : Visual Studio 2008 제작 인원 : 3명 개발 기간 : 10일 서버 공부를 하며 IOCP를 사용하여 제작한 2D 포트폴리오입니다. 분산 서버 구조로 로그인, 로비, 게임 세개의 서버(TCP/IP)로 구현하였습니다. 4인 대전 게임 형식이며 로비에서 방을 만들어 개인전과 팀전을 할 수 있습니다. 서버에서 사용하는 쓰레드의 클래스 다이어그램 입니다. 더보기
debug 기초 가장 기본적으로 F9를 누르면 다음과 같이 breakpoint라는 빨간 점이 생깁니다.(F9를 다시 누르면 해제됩니다. 이 점의 역할은 해당 라인을 실행하려고 할 때 멈춰주는 역할을 합니다.(디버깅 시에만 해당) 디버깅을 하는 가장 기본적인 요소라고 할 수 있습니다. F5를 누르거나 F10 또는 메뉴의 디버그에 디버그 시작을 누르면 됩니다. Ctrl + F5는 디버깅이 아닌 실행입니다. 아까 지정해놓은 breakpoint에 노란색 화살표가 생겼습니다. 이 화살표의 의미는 해당 줄엥 있는 명령을 실행할 차례라는 것을 의미합니다. 여기서 중요한 것은 실행할 차례라는 것입니다. 아직 실행하지 않았다는 것을 항상 기억해야합니다. 변수에 마우스 커서를 올려놓으면 해당 변수의 값을 보여줍니다. i의 값을 보면 쓰레.. 더보기
컨트롤 컨트롤(Control) 컨트롤(Control)이란 사용자와의 인터페이스를 이루는 도구이다. 인터페이스를 이룬다는 말은 사용자로부터 명령과 입력을 받아들이고 출력 결과를 보여준다는 뜻이므로 컨트롤은 곧 입출력 도구를 뜻한다. 컨트롤을 사용하면 도스나 콘솔 환경에서의 getch, scanf등의 함수들을 사용하는 것보다 안전하고 편리하다. 만약 컨트롤이 없다면 사용자에게 현재 설정된 옵션을 보여줄 방법도, 옵션을 바꾸도록 하지도 못할 것이다. Contrrol을 직역하면 "제어, 조절"이라는 뜻인데 이 말 뜻대로 컨트롤은 사용자가 프로그램을 제어하는 수단이다. 컨트롤의 의미를 한마디로 설명하기는 힘들지만 버튼, 에디트, 리스트 박스, 스크롤 바 등을 컨트롤이라고 한다. 윈도우즈 3.1부터 지원하는 컨트롤에는 버.. 더보기
공통 대화상자 - 3 색상 대화상자 사용자에게 색상을 입력받을 필요가 있을 때 사용한다. 색상값은 그 특성상 직접 눈으로 보지 않고 선택하기 어렵기 때문에 일반적인 방법으로 입력받기 곤란한다. 색상은 빨간색, 파란색, 초록색의 삼원색의 혼합으로 표현되는데 이 방식대로 색상을 선택하려면 3개의 정수 값을 입력받아야 하며 게다가 수치만으로는 실제 색상이 어떻게 나올지 바로 알 수 없으므로 무척 불편하다. BOOL ChooseColor(LPCHOOSECOLOR lpcc); 파일 열기 대화상자와 마찬가지로 구조체의 포인터만을 인수로 가진다. 사용자가 색상을 선택했으면 TRUE를 리턴하며 취소했으면 FALSE를 리턴한다. CHOOSECOLOR 구조체는 다음과 같다. typedef struct { DWORD IStructSize; HW.. 더보기
2D 슈팅 포트폴리오 2D 슈팅 포트폴리오입니다.(Ollawang) 개발 환경 : Windows7 개발 툴 : Visual Studio 2008. 개발 언어 : C/C++, WinApi 사용한 라이브러리 : FMOD, MCI 개발 기간 : 10일 개발 인원 : 3명 사용 기술 : STL(list, map), 디자인 패턴(singleton, state) 개발 파트 : FrameWork, Effect, Skill, Map, attacker(화살, 파이어볼), 디버그 모드, UI 간단한 게임 소개 구글, 애플 스토어에 있는 only one이라는 앱을 모티브로 하여 제작한 슈팅 게임입니다. 계속 생성되는 적들을 물리치면서 더 많은 적을 물리치고 오래 생존하는 게임입니다. 클래스 다이어그램 싱글톤 템플릿 클래스를 상속받아 각 매니져들.. 더보기
공통 대화상자 - 2 필터 지정 필터와 관련된 멤버는 총 4개가 있다. 이중 가장 중요한 멤버는 lpstrFilter이며 이 멤버에 필터를 구성하면 팡리 열기 대화상자의 파일 형식 콤보 박스에 필터를 보여준다. lpstrFilter에는 여러 개의 필터를 줄 수 있으며 각 필터는 설명과 패턴으로 구성되고 각 항목은 NULL로 구분된다. 마지막 항목은 두 개의 NULL로 끝나야 한다. 위 필터는 "텍스트 문서\0*.txt\0모든 파일\0*.*\0"로 구성되어 있다. 한 필터에 두 개 이상의 패턴을 지정하려면 "그래픽 파일\0*.gif;*.jpg\0"처럼 세미콜론으로 패턴을 연결하면 된다. lpstrCustomFilter는 사용자가 입력하는 필터를 조사하기 위한 멤버이며 이 버퍼에 커스텀 필터의 설명을 미리 작성해 놓으면 대화상자.. 더보기
공통 대화상자 - 1 공통 대화상자(Common Dialog) 공통 대화상자란 말 그대로 모든 윈도우즈용 프로그램들이 공통으로 사용하는 대화상자이다. 자주 사용되기 때문에 이 대화상자들은 아예 윈도우즈가 운영체제 차원에서 제공하며 응용 프로그램들은 윈도우즈의 서비스만 받으면 이 대화상자를 쉽게 사용할 수 있다. 파일 입출력 방법 자체는 프로그램마다 다르겠지만 대상 파일의 이름과 위치를 얻어오는 작업은 어떤 프로그램이나 동일하다. 그런데 파일의 이름과 위치를 사용자로부터 입력받는 작업은 보통 이상으로 어렵다. 파일이 저장되는 디스크는 계층적인 디렉토리 구조를 이루고 있으며 또 여러개의 디스크가 존재하기도 하고 원하는 파일만 보여줄 수 있도록 필터 처리도 해야한다. 게다가 네트워크 지원까지 신경쓰려면 결코 간단하지가 않다. 그래.. 더보기
동기화 동기화 작업들 사이에 수행 시기를 맞추는 것으로 서로 방해하지 않고 질서를 맞춰서 실행될 수 있게 하는 것. 크리티컬 섹션 임계영역에 하나의 스레드만 접근할 수 있도록 하는 동기화 기법. 유저레벨의 동기화 방법 중 유일하게 커널 객체를 사용하지 않음. 내부 구조가 단순하여 동기화 처리에 대한 속도가 빠르다. 동일한 프로세스 내에서만 사용. 뮤텍스 두개 이상의 스레드가 동시에 공통자원에 접근하지 않도록 하기 위해서 만들어진 알고리즘. 유일하게 소유권 개념을 가지고 있다. 프로세스를 동기화 하는데도 사용함. 일반적으로 스레드를 동기화 할 때는 뮤텍스가 아니라 크리티컬 섹션을 사용할 것을 권장 (뮤텍스가 동기화 하는데 드는 비용이 크기때문) 크리티컬 섹션은 단일 프로세스의 스레드에 대해서만 동작하고 뮤텍스는 .. 더보기
스레드 스레드(Thread) 스레드는 운영체제에서 프로세서 시간을 할당하는 기본 단위. 프로세스 내에서 실행되는 흐름의 단위. 멀티 스레드(MultiThread) 여러개의 스레드를 실행하는 것을 말한다. 장점 응답성 : 사용자에 대한 응답성이 증가된다. 자원 공유 : 스레드는 자동적으로 그들이 속한 프로세스의 자원들과 메모리를 공유한다. 경제성 : 프로세스 생성에 메모리와 자원을 할당하는 것은 비용이 많이 든다. 스레드는 자신이 속한 프로세스의 자원을 공유하기 때문에 보다 경제적이다. 단점 다중 스레드는 캐시나 변환 색인 버퍼(TLB)와 같은 하드웨어 리소스를 공유할 때 서로를 간섭할 수 있다. 하나의 스레드만 실행 중인 경우 싱글 스레드의 실행 시간이 개선되지 않고 오히려 지연될 수 있다. 멀티스레드의 지원을.. 더보기