실전프로젝트 회고
남들과 다른 프로젝트 만들기
우리는 다른 팀과 다른 색다른 프로젝트를 하고싶은 사람들이 많아 시작은 알람어플을 만드는 것으로 기획을 구성하였다.
기획 후 기능에 필요한 기술을 파악하는 과정에서 리액트만으로 알람 어플을 만드는것은 불가능이라는 답변 혹은 만들어 보진 않았지만 굉장히 어려울 수 있다는 답변이 많았다.
멋진 기획 아이템인 알람어플을 뒤로 한채 다시 기획을 구성 하는 중
게임을 만들어 보자는 의견에 마피아 게임을 구현해보자는 의견이 더해져 실행하기로 했다.
이 게임은 실제로 만들어본 사람들이 있었으며 S사의 수강생들이 만들었던 프로젝트도 있었다.
실시간 소통을 위한 Websocket, WebRTC를 메인으로 구축하고 단순 마피아 게임보다 컨셉을 맞춰 산업 스파이라는 제목으로 구성하였다.
기본뷰 틀을 구축하고 서버연결하면서 그동안 협업 할 때 제대로 성공하지 못한 api연결을 혼자 해봤던 경험이 생겼다.
나를 제외한 프론트분들은 고수가 되어 내 질문에 답변을 주시고 그로 인해 내 실력도 쌓여갔다.
실시간 영상통화를 위해 WebRTC를 선택했으나 인원이 많아지면 버퍼링걸리는 단점으로 다른 라이브러리를 찾았고
openvidu라는 라이브러리도 채택되어 적용하였다.
내가 맡은부분은 아니라 정확하지 않으나 라이브러리에서 제공하는 튜토리얼를 토대로 진행하였고 css적인 문제는 FE - BE - OpenVidu를 통해 해결했다.
게임 로직 부분에도 많이 힘들었다.
로직 구현방법 1 : setTimeout만 주면서 차례대로 실행하기
하지만 이 방법은 원하는데로 실행 되지 않았으며 각 타임마다 떠야할 투표창이나 status가 변경되지 않음
로직 구현방법 2 : setInterval로 status 상태값을 확인하며 state 변경시 다음 모달 노출되도록 구현 시도
위 방법도 초반 state는 확인되나 이후 실행이 되지 않아 실패
로직 구현 방법 3 : socket.io를 사용하여 실시간 상태값(state)를 확인하고 switch case문 사용하여 다음 함수 실행 시도
로직 구현에만 6주 중 5주를 썼다고 해도 이상하지 않을 만큼 많은 실패를 겪었으며 그 실패 중 마지막 방법이 성공하여 그대로 진행하였다.
물론 위 3번째방법에도 setTimeout가 들어가며 각 함수 마다 clear도 하였다.
이렇게 다른 조는 프로젝트 끝내고 배포 했을 때 우리는 제일 마지막까지 로직 구현에 힘쓰다 배포를 완성하였다.
마피아 게임이라고 해서 단순하게 투표창을 시간에 맞게 노출하고 그 투표값을 기준으로 죽었는지 살았는지 확인하면 될거라는 생각과 달리
게임을 만드는게 이렇게 어려운것인 줄 처음 알게되었다.
내가 이 프로젝트에 기여한 바는 새발의 피 정도로 적었으나 다른분들 덕분에 팀의 소중함과 그들이 있어 배우는 점이 더 많은 것을 느꼈다.
위에 작성하지 않았지만 더 많은 기능과 페이지들도 구현하면서 힘든점이 있었으며 개인적으로 힘들었던 기능은 따로 작성해두었다.