청년취업사관학교 새싹에서 풀스택 웹 융합 개발자 양성 과정을 들은 지 벌써 4개월 정도가 지났다. 그 전에도 팀 프로젝트를 진행했었는데, 그 팀 프로젝트는 React를 사용하지 않고 EJS와 JS를 사용해서 만든 프로젝트였다. 그리고 이번에 React를 사용해서 팀플을 진행할 수 있는 기회가 왔다. 그 프로젝트는 회고록을 작성하지 않았지만, 이번 프로젝트의 회고록을 작성하는 이유는 재미있는 프로젝트였기 때문이다. 그 전 프로젝트는 그저 잘 해야겠다라는 생각으로 했지만, 이번 프로젝트는... ㅋㅋㅋㅋ 일단 돌아가기만 하면 된다라는 마인드로 했기 때문이다. 우리의 팀 마인드는 파이팅 하지 말고 힘 내지 말고 건성건성 하자. 이 말이 독이었을까... 프로젝트 발표 전날은 거의 아비규환이었다... 그래서 뭘 만들었냐고? 우리는 Socket.io 를 메인으로 한 마피아 게임을 웹으로 만들었다. 마지막엔 거의 기도 메타였음...

내가 한 페이지의 모습이다. 나는 FE 을 맡았고, 저기까지 오는 것만 해도 다사다난한 일들이 많이 있었다. 리액트를 처음 써 보기도 했고, Socket.io도 리액트로 처음 써 보는 것이었기 때문에 너무 어려웠었다. 심지어 내가 맡은 GamePage는... 우리 프로젝트의 메인이었기 때문에... 하얗게 불태웠어.
초반에는 몰랐지만 Redux에 저장해 놓는 것이 엄청나게 중요한 것이라는 것을 알았다.
const initalState = {
/** wait(게임 시작전), playing(게임 중), end (게임 종료) */
gameStatus: 'wait',
/** dayDiscussion(낮 토론 시간),dayVote(낮 투표 시간),dayFinal(최후변론), dayFinalVote(찬성반대투표시간), night(밤) */
timeStatus: 'day',
/** alive(살아있음), dead(죽음) */
myStatus: 'alive',
};
const initState = {
/** 방 번호 */
roomID: '',
/** 유저 목록 */
userList: ['', '', '', '', '', '', '', ''],
/**유저 nickname 목록 */
nameInRoom: [],
/** 직업 목록 mafia 마피아 */
jobList: [],
/** 내 직업 */
myJob: '',
/** 내 소켓 아이디 */
mySocketId: '',
/** 지목 투표 많이 당한 사람 */
finalistId: '',
/** 죽은 유저 목록 */
killedUserList: [],
/** 마피아가 고른 사람 */
mafiaPickId: null,
};
이렇게 Redux로 정리한 것들을
const { gameStatus } = useSelector((state) => state.status);
const { userList, myJob } = useSelector((state) => state.room);
이런 식으로 가져와 쓰면 된다는 것이 얼마나 편하던지... 초반에는 아무것도 몰라서 그저 한 Components에 다 때려박고 Props로 가져오면 되겠지? 라는 식으로 생각했다. 하지만 그것은 진짜 멍청한 생각이었다는 것을... 친구에게 SOS를 쳤었는데, Redux 사용 법을 알려 주었었다. 그 이후로 나는 신세계를 체험했다. Redux가 없는 상태로 코딩을 했던 나는 이걸 진짜 어떻게 해? 했는데, Redux가 있는 상태로 코딩을 했던 나는 코딩이 처음으로 재미있었다.
발표까지 그저 게임 페이지만 돌아가면 된다고 생각하면서 처음 회의 때 팀원들과 나눴던 모든 직업들을 다 빼고, 마피아와 시민만 넣었었다. 그래서 아직도 우리의 마피아 게임은 ㅋㅋㅋ 시민과 마피아 밖에 없다. 심지어 6번 째로 입장한 사람은 무조건 마피아가 되는... 이것도 코드를 다시 짜면 아예 랜덤으로 돌릴 수 있는데...
게임개발자가 왜 야근을 하는지 알게 된 프로젝트... 그리고 게임을 만들다 보니 유난히 버그가 많았는데, 이게 진짜 웃긴게 자려고 누우면 어떻게 해 봐야겠다라는 게 생각이 난다는 것이다.

이 짤이 진짜였어...
그래도 뭔가 진짜 배운다! 라는 느낌을 이번 팀플을 진행하면서 느꼈었다. 진짜 내 코딩인생 중 제일 보람찬 시간이었을지도. 제대로 작동하는 게 게임페이지 밖에 없어서 아직 미완성인 프로젝트... 직업을 조금 더 추가하고, 로그인도 카카오 로그인 네이버 로그인이 아닌, 일회성 로그인으로 바꾸고 싶다. 팀플은 끝났지만, 나 혼자라도 진짜 완성해 보고 싶다는 생각이 들었다.
