winapi

씬 전환

씬이라는 추상 클래스를 만들고(여러 씬들을 사용할 것임.) 그리고 그 씬들을 관리하기 위한 중재자 + 싱글톤 = 씬 매니저를 제작

  1. 로고 클래스 : 씬
  2. 씬 매니저에서 상태 패턴을 사용 : 현재 상태에서 특정 조건에 따라 다른 상태로 전환 시킨다는 의미의 패턴
  3. FSM(FINITE STATE MACHINE : 유한 상태 기계) 자신이 취할 수 있는 유한한 개수의 상태를 갖니다. 현재 씬과 이전 씬

메뉴 스프라이트 애니메이션 이동

스크롤 락 / 타일 매니저 / 오브젝트 순서(Y소팅)


155기 정부기 _ 3개월차 WinApi 기획서

이번 시연회 목표 (중요도 순)

  1. 스컬이라는 게임의 특색을 살린다.

    • 머리를 바꿔가며 플레이하는 기능을 구현
    • 각 머리의 타입별 특색이 도드라지게 구현(파워 타입/ 스피드 타입 등)
    • 각 머리의 교체 시, 교대 액션의 구현
  2. 몬스터 / 지형 충돌을 다양하게 처리한다.

    • 타일 맵과 오브젝트의 충돌 구현
    • 플레이어와 몬스터 히트박스 구체화
    • 잔여물(몬스터 죽은 후 떨어뜨리는 잔해)의 충돌 구현
    • 아이템 / 맵 오브젝트 부수기 구현
  3. 플레이어 기반의 몬스터 패턴을 구현한다.

    • 플레이어 위치 추적 패턴
    • 점프 후 내려찍기 패턴
    • 플레이어 추적 투사체 패턴
    • 경고 후 공격(선으로 공격 경로 표시 후 공격하는거)
  4. 스컬이 가진 게임적 요소를 최대한 많이 구현한다(우선 순위 순)

    • 더블 점프 / 대시 무적의 구현
    • 스탯 UI / 해골과 아이템 UI의 구현 (2개~3개 정도)
    • NPC와의 대화 구현

1일차 : 플레이어 기본 이동 구현 - 기본 스컬 기반 목표 1) 좌/우 이동, 공격, 대시 구현 (공격 1회와 연속 공격 분리) 목표 2) 중력 작용 구현 우선 Y값 제한으로 걸어두고 중력 진행되는지 확인 목표 3) 점프, 이단 점프, 착지 ,점프 공격, 목표 4) FSM 을 이용하여 애니메이션 연결 이때 모든 해골 클래스가 공유할 수 있는 공통의 것으로 틀 만들기 (진입 / 퇴장이 구현되게게) 목표 5) 특수 공격 구현 (해골 던지기/ 던진 해골로 이동하기 - 불렛 클래스 구현하여 상속 받아 활용하기) 목표 6) 교대 기능 활용 (비트맵과 객체 변형까지만 구현하고, 해골 별 특수 기능은 이후에 구현) 목표 7) 해골 교대 기능 구현 (교대 시, 진행되는 특수 액션 진행)

2일차 : 튜토리얼 지형과 충돌처리 구현 목표 1) 기본 ㅁ자형 지형 생성 : RECT값으로만 하여 기본 사각형만 출력 목표 2) 타일의 기본 틀 구성 : 타일의 타입을 미리 설정할 수 있을 정도로만 목표 3) 지형 좌우 충돌 / 상하 충돌 구현 : RECT 기반으로 충돌 처리 로직을 미리 구현해둘 것. (이후 타일에도 rect로 충돌처리)

목표 4) 오브젝트의 히트 박스 별도 생성 : (지형 충돌과 분리되는 히트 박스를 RECT로 처리할 것) 목표 5) 지형과 해골의 충돌 구현 : 해골이 부딪히게 될 경우 튕기는 것. 추가 목표) 지형 중 작은 지형은 뚫고 넘어가거나 / 아래 점프로 내려갈 수 있도록 구현 주의 사항 ) 대쉬 했을 때 뚫고 나가지 않도록 주의

3일차 : 기본 UI의 배치 목표 1) 좌측 하단 UI 배치 (현재 스컬 / 예비 스컬 / 현재 체력 / 현재 게이지 / 현재 보유 스킬 2개) 목표 2) 우측 하단 UI 배치 (현재 뼈조각 / 돈 /마석) 목표 3) 보스전 체력바 UI 배치 (ON / OFF 가능한 형태로) 목표 4) 씬 매니저와 씬 만들어보기. 씬 매니저에서 간단한 예시 배경 1개 띄워두고 UI의 위치 조정 목표 5) 스크롤 매니저를 만들고, UI와 지형 / 오브젝트의 이동 테스트 해보기 (UI는 고정 / 나머지는 움직임) 추가 목표 ) 스크롤 매니저에 최대 속도 제한을 걸어, 카메라처럼 움직임 줘보기 (해골 이동할 때 확 바뀌지 않도록)

---점프 공격 시 빠르게 아래 뚫고 나가는 문제 발견. 카메라 이동이 자연스럽지 않음(후순위) 배경 오브젝트가 프레임을 많이 떨어뜨리고 있음. ui 캠 비율 조정 필요함

4일차 : 더미보스 제작과 타격 / 피격 구현 |1페이즈 보스 패턴 | 횡이동 | 각도 회전 투사체 3개 | 레이저 대각 공격 | 점프 후 수직 내려찍기 | 대각 원거리 슬래시 공격 | 접근 후 찌르기 2회 후 1회 연속 찌르기 | 근접 파동 방출 | 점프 후 대각 내려찍기 |

목표 1) 총 8개의 패턴 중, 각도 회전 투사체 / 점프 후 내려찍기 / 접근 후 찌르기 / 레이저 공격. 총 4개의 패턴의 틀을 구현 (사각형이 다가가거나, 사각형이 점프하는 형태로) 목표 2) 플레이어 피격 시, 넉백 구현(FSM 강제 조정) 목표 3) 오브젝트 피격 시, 데미지 텍스트 출력 목표 4) 보스 몬스터 동시 2명 생성 (보스 패턴) 후, 동시 움직임 구현 (좌우 분할) 목표 5) 보스 몬스터 2명 중 1명은 대기 상태로 전환해보기 (배경에서 대기하는 형태) 목표 6) 보스 상태 머신에 따라 BMP 부를 수 있는 틀 출력 주의 사항 ) 보스의 투사체는 충돌을 선처리로 진행할 것

5일차 : 보스 구체화 2페이즈와 리소스 입히기 |2페이즈 보스 패턴 | 대각 원거리 슬래시 공격 3회 | 순간이동 후 대각선 내려찍기 (4회) | 레이저 투사체 발사 3개 | 2회 찌르기 후, 범위 공격 레이저 (6개) | 내려찍기 후 투사체 파동 발사 |

목표 1) 보스 2페이즈 패턴 구현 : 4일차에 만들었던 것 기반으로 심화된 패턴만 구현 (레이저 투사체 / 찌르기 범위 공격 / 내려찍기 / 원거리 슬래쉬) 목표 2) 각 보스 패턴에 리소스 입히기 목표 3) 보스가 사용하는 투사체에 리소스 입히기 목표 4) 보스 사망 모션 구현 추가 목표 5) 만약 시간이 남는 경우에는 보스의 패턴 추가하기( 진행하지 않았던 패턴 추가)

6일차 : 맵 에디터를 통한 실제 지형 지물(맵) 제작 목표 1) 타일 구조체 제작 (타일 타입 및 요소들 확정) 목표 2) 타일 에디터 편의성 기능 추가 (사용 가능한 타일 목록 선택/삭제/) 목표 3) 타일 에디터에서 저장할 때, 스테이지별로 전체 Y사이즈 X사이즈도 함께 저장하는 기능 추가 목표 4) 게임의 씬에 맵 적용 (각 씬이 자신에 해당하는 맵을 참조 혹은 소유하는 형태로) 목표 5) 스크롤 매니저에 각 씬의 전체 사이즈 기반 스크롤 락 걸기 목표 6) 지형지물 충돌 테스트 목표 7) 배경 스크롤 제작 (배경 레이어 나누어서 스크롤 속도 제어) 추가 목표 8) 배경에서 움직이는 비상호작용 오브젝트 추가 (날아다니는 비둘기 / 애니메이션 배경)

7일차 : 플레이어와 UI의 연결 / 이펙트 추가 / 씬 추가 목표 1) 플레이어의 현재 정보와 UI의 정보 일치 시키기 (UI가 타켓의 정보를 가지고 오는 형태로 체력 / 스컬 스킬) 목표 2) 플레이어 포함 오브젝트들의 타격 “이펙트” 추가. 인터섹트 렉트 혹은 그 외 충돌에 위치값을 받아올 수 있도록 목표 3) 각 씬 UI추가 : 로고화면의 아무키나 누르세요 / 설정 키 / 돌아가기 / 게임 종료 / 새 게임 우선 구현 목표 4) 전체 사운드 체크 진행 목표 5) 쿨타임 표시 구현 (시계 방향으로 회전하는 형태) 추가 목표) 키입력의 변경 구현해보기 (점프키 / 공격 키 변경 기능 추가해보기) 추가 목표) 상호작용하는 오브젝트의 애니메이션 / 이펙트 추가 (스테이지 포탈 등)

8일차 : 일반 몬스터 제작 목표 1) 플레이어 위치로 솟아오르는 투사체 발사하는 몬스터 구현 목표 2) 플레이어를 추적하는 투사체 발사하는 몬스터 구현 목표 3) 플레이어가 일정 거리에 들어오면 돌진하는 몬스터 구현 목표 4) 플레이어가 일정 거리에 들어오면 일반 공격하는 몬스터 구현 목표 5) 플레이어가 일정 거리에 들어오면, 화살을 발사하는 몬스터 구현 목표 6) 자신이 바라보는 방향에서 들어오는 공격은 방어하는 몬스터 구현

9일차 : 스컬 제작 목표 1) 추가 스컬 : 파워타입(앤트) 제작 목표 2) 앤트 스컬 스킬 구현 (왕 주먹 / 주먹 소환) 목표 3) 앤트 스컬 교대 기능 구현 목표 4) 스크롤 흔들기 구현(앤트 스컬 공격 시 스크롤 흔들기) 목표 5) 앤트 스컬 고유 능력 구현 (잔디 깔기)

10일차 : 아이템 구현 목표 1) 스테이지 아이템 구현 (1. 골드 / 2. 뼈조각 / 3. 체력 회복 구슬) 목표 2) 플레이어의 스탯을 상승시켜주는 장비 구현 (공격 속도 / 체력) 목표 3) 플레이어의 공격에 특수 효과를 적용 시켜주는 장비 공격 (화상 / 독 / 빙결) 목표 4) 장비 아이템 시너지 효과 구현 (방어막 재생 / 피격 시 데미지 정도) 목표 5) 스테이지 클리어 보상 구현 ( 스테이지 몬스터 처치 시, 특정 아이템 혹은 스컬 생성)

11일차 : 인벤토리 구현 목표 1) 현재 가지고 있는 장비 아이템을 보여주는 인벤토리 구현 목표 2) 현재 가지고 있는 아이템을 파괴 / 습득할 수 있도록 목표 3) 현재 가지고 있는 아이템을 떨어뜨리는 기능 구현 목표 4) 상점 기능 틀 제작

12일차 : 상점과 상점 npc 구현 목표 1) 장비 상점 구현(아이템 두번 구매할 수 있도록) 목표 2) 스컬 상점 구현(해골 두번 구매할 수 있도록) 목표 3) 추가 스컬 제작 (울프 교환) 목표 4) 울프 스컬의 각성 구현(각성 후, 각성한 스킬 비교가 가능하도록)

13일차 :
목표 1) 데미지 시스템 분할 하기 (마법 공격 / 물리 공격) 목표 2) 데미지 텍스트 분리 하기 (마법은 파랑 / 물리는 빨강) 목표 3) 정수 시스템 구현 (추가 스킬 느낌 아크 데몬 정수 예정) 목표 4) 정수 시스템 UI 구성 쿨타임 / 아이콘 / 이펙트 목표 5) 상점에 정수 사고 팔 수 있도록 구성하기

14일차 : 미니게임 구현 : 목표 1) 미니게임 NPC의 구출 구현 (감옥에 갇힌 NPC를 구해주기) 목표 2) NPC의 퀘스트 시스템(단순 대화 형태로) 목표 3) 양 옆에서 몰려오는 몬스터 웨이브 구현 목표 4) 몬스터 처치 속도에 따른 스코어 시스템과 보상시스템 구현