[Project] 2019 슈팅 프로젝트

Date:     Updated:

카테고리:

태그:

이 글은 학교에서 슈팅 게임 만들기 프로젝트를 하면서 정리한 글입니다


프로젝트 소개

  • 학교에서 기본 제공 2D 슈팅 소스(1945같은 게임)를 기준으로 발전시킨 프로젝트
  • DirectX9 과 Win32API 를 사용한 슈팅 게임
  • 프로젝트 인원 : 1명

프로젝트 기간

  • 2019.09 ~ 2019.10 처음 프로젝트 기간
  • 2021.12 ~ 2021.12 코드 리팩토링 및 확장
  • 2022.09 ~ 2022.09 전체적인 구조 변경 및 코드 리팩토링

깃허브 링크

Readme Card

플레이 영상

다양한 시도 및 구현

  • 고정된 화면에서 플레이어 위치 기준으로 주변을 보여주게 그려주는 로직을 변경
  • 타일맵에디터가 있는줄 모르고 직접 타일맵에디터 비슷한 기능 구현
    • 구현했고 처음에는 사용했는데 나중에 Tiled 라는 타일맵에디터를 사용했음
  • 이미지를 그릴때 각도를 돌려서 그려주는 함수를 개발 당시에 못찾았기에 이미지 회전 공식을 인터넷에서 참조해 구현
  • 플레이어 위치와 사물 위치를 비교하면서 사물 근처에 가면 소리가 점점 커지게 구현

문제와 해결법

  • 이미지를 적게 읽어올때는 별로 안걸렸는데 점차 개발하면서 이미지가 늘어나다 보니까 로딩이 느려짐
    • 원인 : 이미지 파일을 읽어오는 함수에서 픽셀 하나씩만 읽어오느라 로딩이 오래 걸렸음
    • 해결법 : 이미지 파일을 읽어오는 함수에서 픽셀 하나씩 읽어오는 로직가로 한줄씩 로딩하는 걸로 변경
  • 타일을 그려줄 때 타일 데이터를 가진 파일을 읽어와서 타일 하나하나 다 그려주려고 했는데 런타임시 5프레임도 안 나옴
    • 원인 : 1920*1080 기준 32*32 타일은 1프레임에 대략 1980번 그려주다 보니 프레임이 엄청 떨어졌었음
    • 해결법 : Tiled 라는 타일맵에디터를 사용해 전체 맵을 뽑아서 한번에 그려주니 프레임이 좋아졌음
  • FadeIn 과 FadeOut 기능을 구현해서 호출했는데 엄청 느렸음
    • 원인 : 메인 쓰레드에서만 1920*1080 화면 픽셀을 알파블렌딩 계산을 해서 느렸음
    • 해결법 : 멀티쓰레딩을 사용해서 연산을 분산시킴




💻 열심히 공부해서 작성 중이니 오류나 틀린 부분이 있을 경우 
  언제든지 댓글 혹은 메일로 알려주시면 감사하겠습니다! 😸

맨 위로 이동하기

Project 카테고리 내 다른 글 보러가기

댓글 남기기