추석 연휴를 맞이하여
항해 플러스 코육대를 참여하게 되었다.
이미 항해99 2기를 참여하며 바쁜 하루하루이지만
의욕적인 많은 분들에게 배우기도 배우고 여러 자극을 받으며
전보다 의욕이 넘치던 나는
다소 느닷없었겠지만 회사와 지인들에게 소개를 하고는 (이렇게하면 나는 안할 수가 없기 때문에 용기를 내보았다...)
추석 전부터 조금씩 준비하며 코육대에 참여해볼 수 있었다.
- 종목 선택
6가지 종목 중 총알 피하기를 선택하게 되었는데
예전 국비지원 학원 때 했었던 프로젝트 경험상 시간이 많지 않을꺼라는 생각이 들어
자유종목은 매력적이었지만 피하였고
잠깐 공부를 해보았던 Phaser 라는 라이브러리를 꼭 활용해보자는 생각과 함께
게임 개발을 해보고 싶다는 생각이 있어서 송편 터뜨리기 와 총알피하기, 테트리스 중 고민을 해보았었다.
그 중 탄막 게임이란 장르가 머리를 스치듯 지나가서 (군대 후임이 탄막 게임 장인이었던 기억까지 흘러갔다...)
총알 피하기 종목을 선택하게 되었다.
탄막 게임 자체는 사실 플레이 해본 경험도 없지만
그 총알의 화려함만큼은 듣기도 많이 들었고 본 적도 있어서
그 정도까지는 아니어도 만들어보고 싶다는 생각이 크게 들었던 것 같다.
- 프로젝트 준비 및 진행 과정
탄막 게임에 대해서 조사를 해볼까 싶다가도 현실적인 시간의 부족함 때문에
이것 저것 찾아보고 Phaser에 대해서 공부를 하고 있었는데
그 중 '게임 매니악스 탄막 게임 알고리즘' 이란 책을 알게 되었고
총알 피하기 종목을 확정적으로 선택하는 이유가 되며
책을 구해보게 되었다
구매를 하고자 했으나 절판이 되어서 어떻게하나 싶었는데
다행히 도서관에서 빌릴 수가 있어서 추석이 시작되기 전에 책을 구해볼 수 있었고
Phaser 공부와 함께 틈틈히 공부를 해볼 수 있었다.
C++로 구현되어 있는 책이었고
사실 끝까지 다 못읽기도 하였지만 흥미롭게 읽어볼 수 있었고
일부이긴해도 코드를 이해하고 구현 해볼 수 있어서 좋았던 것 같다.
Phaser의 경우 Udemy를 통해 강의를 들었던 과거가 있었지만 당연히도(?) 잊어버려서
새로 공부를 시작했고
공식 홈피에서 제공하는 document와 예제를 보고 작업을 진행했던 것 같다
https://photonstorm.github.io/phaser3-docs/
솔직히 예제가 큰 도움이 된 것 같다
막상 인강 봤던거 다시 보려니까 기억도 안나서 막막했는데 예제를 보니까 쉽게 알 수 있어서 좋았고
세부적인 구현에서 문제가 되었던 부분은 document에서 관련 Class를 찾아보면서 문제를 해결해나갔던 것 같다.
그리고 이번 프로젝트에서는 Github Project를 활용해보았는데
기존에 노션이나 구글 문서로 일정과 이슈를 관리해오던 부분을 project에 쓰고 정리를 해보니 나쁘지 않았던 것 같다
github repository는 원래 하던 방식대로 프로젝트 시작전까지는
연습용 Repository를 만들어서 이것저것 준비하고 연습해보았고
실제 프로젝트 진행시에 연습에서 작업했던 부분을 가져다가 끼워맞추는 식으로 진행해보았는데
나쁘지 않았다고 생각한다.
-> 또한 두 Repository를 연결하여 하나의 Github Project에서 관리할 수 있었던 점도 좋았던 것 같다.
- 기능 구현
단계적으로 issue로 등록하여 구현을 하는 것에 집중을 해보았고
일정이 촉박하고 현실적으로 추석 연휴에 많은 시간을 확보하는게 어렵다고 판단해서
연휴 중간에는 끝내서 기본적인 틀은 만들 수 있도록 계획을 잡아보았었다.
해당 계획 및 진행 사항은 Github Project에서 관리하고 이슈에 대해서도 정리 및 처리를 할 수 있었다.
1. 플레이어 그리기
Phaser Sprite를 Scene에 추가하는 것으로 쉽게 그릴 수 있었다.
2. 플레이어 이동하기
3. 총알 발사하기
총알 발사자체는 사실 어려운 부분이 아니었는데 탄막 알고리즘 책에 내용을 적용해야하기 때문에
최대한 비슷하게 구현하려고 노력을 많이 해보았었다.
정확히는 예제를 열심히 찾았던 것 같기도 하다... (예제가 정말 다있었다 앞으로 이것저것 만들기 좋을거 같다 굿굿!!)
4. 플레이어와 총알 충돌 처리
collider로 처리하니까 충돌하고나서 팅겨나가는 이슈가 있어서 고생을 꽤나 했었는데
document와 구글링을 통해 overlap이란게 있다는 것을 알게되었고 이걸 활용하여 해결 해볼 수 있었다.
충돌 알고리즘 자체는 책을 통해 배우긴 했었는데 Phaser를 사용하다보니 관련 기능을 사용하면 되어서
크게 도움이 되진 않았던 것 같다.
5. 그 밖에 기타 처리
기본적인 틀은 랜덤하게 총알이 발사되어 피하는 형태로 1차적으로 마무리를 하고는
탄막 알고리즘을 어떻게 쉽게 적용해볼까 고민이 많았는데
그냥 공부부터 해보고보자라는 식으로 작업을 진행해보았고
다행히 초반부분인 Spiral 탄은 어렵지 않아서 나름 화려한(?) 탄막을 구현해볼 수 있었다.
그런데 대충 생각없이 만들어서인지 프레임 드랍이 발생하였었고
구글링과 이것저것 시도한 끝에 총알 수를 제한하고 한번의 event안에서 발사하도록 처리하는 방법으로 해결해보았는데
이때부터는 일정에 쫓겨서 급하게 작업했던 감이 없잖아있었던 것 같다.
- 참여 소감
오랜만에 재밌게 개발을 해본 것 같다.
취직을 하고 업무를 배우며 드디어 개발을 통해 돈을 버는 기쁨도 있었지만
개발 자체에 있어서는 의욕적이지 못하고 시키는 것을 하는 것에 급급했었던 것 같다.
그리고 개인적으로 시간을 내서 공부를 한다고는 해도
시간이 많지 않아서 개인 프로젝트를 하다가도 중간에 흐지부지 되고 끝나버리곤 하였는데
이번 기회를 잘 활용해서 나름대로 결과물도 만들어볼 수 있었지 않았나 싶다.
부족하고 아쉬운 부분은 역시나 많았고
끝에서는 '시간이 좀더 있었더라면...' 하는 생각도 역시 많았는데
그래도 추석 연휴 가족들과 즐거운 시간을 보내는 와중에도
나름 시간을 내서 공부도 하고 개발을 할 수 있어서 만족스러웠다고 생각한다.
그리고 이것을 시작으로 이것저것 프로젝트를 해보면 되는거니까
결과를 떠나서 내게 있어 하나의 발판이 되어주지 않을까 생각한다.
코육대라는 기회로 내게 작은 프로젝트를 완성 해볼 수 있게 해준
항해 플러스에 대해 감사드리고
앞으로 계속해서 열심히 해볼 수 있도록 다짐을 하며 이번 프로젝트를 마무리 해본다.
- 게임 해보기
https://kthss01.github.io/HHP_DodgeGame/
-> github pages를 이용해서 구현해보았다.
이동 방법 : 화살표키를 이용한 이동
게임 승리 조건 : 발사된 총알 모두 피하기
- 제1회 코육대 이벤트 페이지
https://hanghaeplus-coyukdae.oopy.io/