프로젝트 시작은 한 지 좀 되었으나 개발만 맘놓고 할 수 있는 상황이 아니기 때문에 좀 소홀했다.
솔직히 지금 판을 벌여놓고 중간에 멈춘 게 굉장히 많다... 얼른 다른 것도 끝낼 수 있도록 해야겠음
목표 : 내가 좋아하는 작품의 팬게임을 만들어 보자! -> 디펜스 게임이 1인 제작하기엔 쉽지 않을까?
개발 언어 : C++ & SDL(게임 본체), MFC(게임 툴)
현재 진행 상황
할 것 메모(취소선은 완료)
- 이미지 출력
- 사운드 출력
- 이미지 효과 적용(페이드아웃, 페이드인)
- 싱글톤 이용하여 체계적으로 정리
- GUI 구현
- SDL 일부 부분 클래스로 래핑(텍스쳐, 효과음 및 BGM)
- Scene 클래스에 맵 데이터에 대한 정보 추가 -> 타일링
- 스테이지 개념 추가
- 타이틀 구현
- 대사 출력 시스템 구현
- 전반적인 게임 시스템 구현
- 대사 출력 중간에 끊고 원할 때 다시 시작할 수 있도록 함(기존 방식은 queue에 있는걸 다 불러옴)
- 그래픽 작업 -> 바닥 : 2, 오브젝트 : 2, 캐릭터 : 2, 몬스터 : 1, UI : 완료
- 스탠딩 일러스트(직접 그려야하나? -> 타블렛의 행방이 묘연하므로 찾아야함)
- 툴 작성 -> 맵 작성 및 대사 지정
- 게임 툴로 제작한 데이터를 읽어들여 게임에 적용
- 코드 정리(함수명 비슷하게 겹치는 것들 정리)
- 툴에 캐릭터 객체 정보 수정 및 추가하는 기능 덧붙임(전체적인 캐릭터 정보 및 신 당 사용할 수 있는 캐릭터 목록)
20141021~추가중...(20141113)
일일 기록
10/23 : 이것저것 좀 더 체계화시키고 구조 갈아엎음
싱글톤으로 정리하고 클래스로 래핑
10/24 : GUI 구현 진짜 힘들게 했음 딥빡
마우스 움직임을 감지해서 클릭시 위치 검사를 하고 버튼의 충돌박스 내에 있으면 클릭 처리
함수 포인터 응용하여 특정 함수 실행하도록 설정
10/25 : GUI 구현 일부 고침 (호버 지원), 타이틀 화면 구현, 대사 및 스테이지 구현
마우스 오버 시 텍스쳐에 변화를 주어
좀 더 역동적으로 보이도록 함.
시작 버튼 클릭 시 Map01로 넘어가도록 함.
종료버튼은 클릭시 당연하지만 종료하도록 함.
대사 출력모드로 설정해 놓으면 순차적으로 대사를 읽어옴. 좀 더 수정이 필요할 것으로 예상, Queue구조.
글자가 Blended라 보기 좋은데 단점이 테두리가 없어서 다소 흉함. 어떻게 해결할 지 고민 필요.
10/26 : 대사 출력 오류 수정, 스테이지 내 맵 정보 저장 및 타일링
그렇게 오래 걸리진 않았다.. 툴을 따로 만들어서 외부 파일로 쉽게 저장하고 게임 내에서 읽어들이도록 해야겠다
10/27 : 툴 기본 틀 작성(라임쩔어)
아직 감은 제대로 잡히지 않았고 중간중간 많은 실수가 있었다...
간단하게 뼈대만 만들어져 있는 상태이다. 미리보기 기능을 만들어서 인 게임으로 확인할 수 있도록 하는 것도 목표.
10/28 : 툴 70%? 완성
기본적인 기능 다 구현했고 캐릭터 정보, 맵 타일 정보에 대한 것도 구현했고 대사에 대한 것도 구현했고
dat파일로 저장하도록 만들어 두었다. 맵 수정 부분은 아직 어느정도 수정이 필요하고 저 부분만 완료되면 완벽하게 완성일 듯 하다.
11/03 : 툴 99% 완성
그간 건들지 못했으나 어쩌다보니 하루만에 생각보다 많이 진행되었다.
대사, 맵에 대한 정보를 dat파일로 저장할 수 있도록 하였고 맵 수정은 2개 계층까지 지원되도록 하였다.
맵은 지우기, 채우기(색 채우기 알고리즘, 리커시브)를 넣어서 조금이나마 더 편집하기 쉽게 만들었다.
그렇게 썩 만족스럽진 않지만 우선 기본적인 것만이라도 끝까지 완성되었다는 것에 만족.
인게임 미리보기 기능을 넣어야 할 지 고민중.
11/04 : 툴 일부 수정, 이펙트 수정, 데이터 불러오기 작업, 대사 수정, 스크린샷
툴은 이런 느낌으로 고쳤다. 시작점과 시작 방향을 정하는 기능을 추가하였다.
또한 툴로 제작된 데이터를 프로그램 상에서 읽어와 대사와 타일을 화면에 출력하는 것 까지 성공하였다.
이펙트 전환도 일부 손을 보았다. 이미지 크기를 줄여 화질이 다소 안좋은데 좀 더 매끄럽게 전환된다.
저장된 파일에서 대사와 맵 정보를 읽어와 뿌리는 것도 성공하였다. 파일이 유니코드로 저장되어 있는 데에 반해 게임 본체 프로그램은 멀티바이트로 되어있고, MFC 관련 함수는 게임 내에서 사용하지 않도록 하려 했었던지라
처음에는 어떻게 해야할 지 갈피가 잡히지 않아 조금 고생했다. 나중에 쉽게 해결하는 방법을 알았지만...
대사가 나올 때 마다 행 당 한번에 한해 이펙트와 함께 출력된다. 폰트나 외곽 라인 등에 대해 신경을 써야할 것 같다.
$n을 만나면 뉴 라인으로 인식하며 개행하여 적게 된다.
11/05 : 대사 출력 루틴 수정, 기본적인 게임 루틴 작성
그림도 직접 그렸다. 대사 창도 포토샵으로 만들었다.
도트도 직접 찍었다... 총알 회전시키고 원하는 각으로 나아가게 하는거 진짜 힘들었다...
참 많은 일들이 있었다... 정리하자면 끝이 없다.
슬롯에서 캐릭터를 선택해서 타일을 클릭하면 해당 위치에 캐릭터가 생성되며, 현재는 테스트용으로 랜덤 위치를 향해 총알을 쏘도록 하였다.
관련 알고리즘은 [C/C++] atan2 함수로 각도 구하기 및 cos, sin 함수로 x, y 좌표 구하기에 정리하였다.
11/06~11/11 : 바빴음
그동안 이것저것 많이 했는데 정리는 하기 힘들다. 그리고 조만간 제작에 힘쏟는 것이 힘들어 질 듯 하다.(시험도있고)
적 캐릭터가 라인을 따라 움직이고, 체력게이지를 출력하고, 피탄시 피가 깎이고, 적이 라인 끝까지 이동하면 플레이어 체력이 떨어지고, 0이 될 경우 게임 오버 화면을 출력시키도록 하였다.
구조 상 문제가 발견되어 루틴을 한번 갈아엎어야 한다. 로딩 그림, 게임 오버 그림 등등을 그렸다.
11/12 : 이것저것.
맵 데이터 마다 캐릭터 정보를 표시할 수 있도록 해야하는데 이 부분은 일단 나중에..
캐릭터가 일정 범위 내에서 몹 추격해서 쏠 수 있도록 했고 그 외에 뭔가..했다... 로딩화면과 게임 깼을때 화면