회고

[회고] 2021년 회고

한비 2022. 3. 20. 06:20
반응형
언제 봐도 예쁜 우리 학교

2021년은 본격적으로 개발에 발을 담근 첫 해였다. 2021년 1월과 2022년 3월의 나를 비교해보면 정말로 상상했던 것 이상으로 많이 성장했다는 생각이 든다. 결코 모든 궤적이 완벽했던 것은 아니지만 대부분의 도전이 좋은 성과를 가져다 주었다. 뿌듯한 마음을 담아 회고글을 남겨본다.

1월 ~ 2월

1학년 겨울방학, 처음으로 코더로서 프로젝트에 참여하게 되었다. 2D PC 멀티 슈팅 게임 <아르마딜로 대시> 프로젝트였는데, 유니티와 포톤2로 개발했고 깃허브를 통해 협업했다. 1학년 1학기 때 유니티 스터디에서 무작정 강의를 따라해본 이후 처음으로 사용해보는 유니티였는데, 까먹은 부분도 많았지만 전에 스터디할 때 정리해둔 워드 파일이 있어서 참고하며 차근차근 공부했다.
기능 단위로 파트를 분배했기 때문에 내가 담당한 부분을 구현하는 튜토리얼을 열심히 구글링해서 찾아보고 그래도 안 나오면 유투브에서 영어 튜토리얼을 찾아 코드를 작성했다. 사실 이때는 1학년이 끝난 직후라 전공기초 C언어 수업과 교양 파이썬 수업을 들은게 내 코딩 실력의 전부였어서 모든 코드를 완벽하게 이해하지 못했다. 그렇지만 코드 한 줄 한 줄 분석해가며 최대한 구조와 원리를 이해하려고 노력했고 튜토리얼의 코드를 프로젝트에 맞게 변수값이나 구조를 조금씩 수정해서 완성해나갔다. 기능단위 분배였고 코더가 많았기 때문에 일정 자체는 크게 빡세지 않았던 것으로 기억한다.
하지만 깃허브 사용이 처음이어서 프로젝트 내내 엄청 헤맸다. 풀리퀘를 넣었는데 충돌이 나서 식은땀을 흘리며 두시간동안 해결책을 구글링하고 어찌저찌 아톰으로 충돌된 부분을 수정해서 다시 올리고... 깃허브를 완전히 이해하지는 못한 상태였기에 지금 생각해보면 좀 깃허브를 요상하게 활용했던 것 같은데(충돌이 무서워 다른 분의 작업을 가져올 때까지 기다리거나 작업 후 커밋을 깜빡해서 똑같은 작업을 여러번 함), 그때 깃허브를 써봤던 경험이 있었기에 이후 프로젝트에서 깃허브를 다룰 때 크게 겁내지 않을 수 있었다.
1월에는 플레이어(아르마딜로)의 움직임 코드와 전반적인 애니메이션 작업을 담당했고, 2월에는 포톤2를 이용한 서버 작업에 참여했다. 유니티도 겨우겨우 쓰는 수준인데 포톤을 다루려니 정말 어려웠다... 이 게임은 로비에서 룸을 생성하거나 참여하고 룸에서 인원이 찰 때까지 대기한 후 게임을 시작하는 형식이었는데 이때 정말 포톤 튜토리얼이란 튜토리얼은 다 본 기억이 난다. 포톤2와 포톤은 몇 가지 부분에서 코드가 꽤 차이가 났는데 대부분의 튜토리얼이 포톤으로만 되어있어서 정말 진땀을 빼기도 했다. 튜토리얼 프로젝트를 다운받아가며 코드와 프로젝트 구조를 뜯어보고 나름 최선을 다해 코드를 작성했는데, 룸 생성에서 뭔가 이상하게 작동했던 부분을 팀원분이 마법처럼 완벽하게 고쳐주셨던 것이 아직도 생생하게 기억난다.
첫 프로젝트였어서 정말 일주일에 몇번씩 PM이신 선배님께 장문의 카톡을 보내며 질문을 드렸었는데, 모두 친절하고 자세하게 답변해주셔서 엄청 감동받았었다. 후반부에 밸런스 조정을 할 시간이 모자라 최종발표 전날 새벽부터 발표 직전까지 수정을 했었는데 조금 더 테스트해볼 기간이 있었으면 하는 아쉬움이 남았다. 게임 시연 시간에 많은 사용자가 몰렸고 무료로 포톤2 서버를 사용하다 보니 렉이 많이 걸리기도 했지만 기획대로 완성된 결과물을 보니 뿌듯했다. 첫 프로젝트였지만 1인분을 해낼 수 있어서 다행이었다.

https://github.com/Armadillo-Project

Armadillo-Project

with club activity. Armadillo-Project has 3 repositories available. Follow their code on GitHub.

github.com

3월~6월

사실 3-1에 교환학생 파견가는 것을 목표로 하고 있었기에 겨울방학에 토플 공부를 하려고 했으나 프로젝트만으로도 너무 벅차서 공부를 거의 하지 못했다. 그래서 3월 초에 잡아둔 시험을 취소했는데 웬걸, 응시료의 50%만 환불해줘서 100달러를 그냥 날리게 되었다. 그냥 일정 연기를 해서 60달러 정도의 추가금을 냈으면 됐는데 너무 바보같았다고 한참 속상해했던 기억이 난다. 학기 중에 토플 공부를 병행하는건 어렵다는 생각이 들었고, 결정적으로 3-1에 교환을 다녀왔다가 3-2를 휴학하면 1년 쉬고 복학해도 4학년으로 학적이 처리된다는 얘기를 들어 3-2 파견으로 계획을 수정했다.
2학년 1학기에는 취미로 하던 동아리의 임원을 맡게 되었는데, 동아리를 위해 집에서 학교를 통학하다 보니 시간 소모와 체력 소모가 꽤 컸다. 그와 더불어 패기 넘치게 21학점을 신청한데다가 팀플인 전필과 영강인 전선이 있어 험난한 한 학기를 보내게 되었다.
한 가지 기뻤던 소식은 1학년 학점을 잘 받아둔 덕에 시에서 주는 장학금을 받았다는 것이다. 면접이나 다른 절차 없이 오로지 학점으로만 등수를 매겨 주는 장학금이었는데, 아슬아슬하게 컷에 걸려 장학금을 받을 수 있었다. 4.5 만점에 4.41이었던 것으로 기억한다. 코로나로 인해 성적 컷이 전년도에 비해 확 올라갔는데 운 좋게 컷 안에 들어갈 수 있었다.
5월에는 1-2주 공부한 실력으로 토플을 봤는데 생각보다는 점수가 잘 나와서 기뻤다.

7월~8월

2학년 여름방학에는 코더로 3D PC 방탈출 게임 <큐브 이스케이프> 프로젝트에 참여했다. 사실 원래 공포게임은 엄두도 내지 않는 심약한 멘탈의 소유자인데, 무슨 용기가 솟아났는지 모집발표를 듣고 참여하고 싶다고 연락을 드렸다. 결론적으로는 개발의 공포로 공포게임의 공포를 이겨낼 수 있었다. 이번에도 유니티로 개발했지만 협업 툴은 깃허브 대신 유니티 콜라보레이트를 활용했다. 유니티 콜라보는 엄청 느렸지만 깃허브보다 사용과 동기화가 간편해서 좋았다.
몇개월 유니티 안 다뤘다고 또 까먹어서 이번에도 열심히 구글링하고 튜토리얼을 참고했다. 2학년 1학기에 자바를 배웠는데, 자바를 배우고 C# 코드를 다시 보니 술술 이해가 돼서 전보다 훨씬 수월하게 코드를 작성할 수 있었다. 하지만 이번에도 고난은 있었다. 저번 프로젝트는 기능 단위로 일정을 분배했고 일정이 빡세지 않아 천천히 진도를 나갈 수 있었는데, 이번에는 코더 한명이 하나의 스테이지 전체를 온전히 개발하는 식이어서 작업량이 확 늘어났다. 부품을 천천히 제작하다가 갑자기 로봇 전체를 완성하라고 하는 느낌... 게다가 각 스테이지를 만드는데 주어진 기간은 기획을 포함하여 2~3주로 결코 넉넉하지 않았다.
내가 첫번째로 작업한 스테이지는 스테이지 1이었는데, 정말 품이 많이 들었다. 초반 인트로의 눈 깜빡이는 연출을 위해 클립스튜디오를 켜서 애니메이션 작업을 하고, 대화 씬도 작업하고, 사이사이 효과음을 찾아 넣고, 장면을 전환하고 ... 초반에는 코루틴과 업데이트문을 제대로 이해하지 못한 상태에서 코드를 짜다 보니 효과음이 무한재생되어 지지직 소리가 나고 에코가 들리고 아주 총체적 난국이었다. 모든게 엉망진창으로 작동해서 3일 내내 밤낮없이 유니티와 씨름하고... 중간에 친구가 불러서 잠시 산책을 하러 나갔는데 복잡했던 머리가 비워지면서 코드의 수정 방향이 떠올랐다. 그때 휴식의 중요성을 온몸으로 느낀 것 같다. 그렇게 하나하나 고쳐나가다 보니 얼추 기획 의도대로 작동하기 시작했다. 방탈출 게임이다 보니 이벤트의 선후관계가 중요했고 스테이지마다 흐름이 정해져 있었는데 그걸 구현하는 게 꽤 어려웠다. 하지만 하나의 스테이지를 완성하고 나니 그 다음 스테이지들은 수월하게 작업할 수 있었다.
많은 시간을 투자해야 했지만, 그만큼 얻어가는 것도 많았다. 기능 단위로 작업하던 때와 달리 스테이지의 흐름을 구성하는 것부터 필요한 3D asset을 찾아 적용하는 것, 스테이지에 맞는 BGM과 효과음을 찾는 것, 또 그걸 적용하는 것, 화면의 UI를 필요에 맞게 구성하는 것까지 정말 A to Z를 혼자 작업해볼 수 있었다. 초반에 모든 스테이지에서 공통적으로 사용할 기능은 파트를 나눠 작성하고 공유하기도 했지만, 아무래도 스테이지별로 사용하는 트릭이 다르다 보니 개별적으로 작업한 부분이 훨씬 컸다. 또, 다른 분이 작성해주신 공용 코드도 적용을 위해서는 완전히 이해해야 했다. 예를 들어 이 게임은 기본적으로 마우스 커서가 한 곳에 고정되어 있는데 키패드를 입력하거나 하는 경우에는 마우스 커서 이동 잠금을 해제하고 입력이 끝나면 다시 잠금을 활성화해야 했다. 이 부분이 마음대로 되지 않아서 해당 코드를 작성하신 팀원분께 질문을 드리고 이후에도 한참을 혼자 씨름해서 해결했던 기억이 있다. 하지만 결국 고생한 시간만큼 성장할 수 있었으니 후회없는 프로젝트였고 좋은 도전이었다. 이 프로젝트를 끝내고 기록의 필요성을 크게 느껴서 이 블로그를 만들었다. 그래서 9월 근처에 유니티 글이 몇 개 있는 것... ㅎㅎㅎ
https://github.com/Cube-escape

Cube escape

2021 Ewha king Summer game making project. Cube escape has 5 repositories available. Follow their code on GitHub.

github.com

첫번째 스테이지를 완성하고 두, 세번째 스테이지를 작업할 때는 조금 시간적 여유가 있어서 8월부터는 미뤄둔 토플 공부를 시작했다. 나는 집에서 공부가 안되는 인간이라는 걸 깨닫고 2-3년만에 스터디카페를 다니며 공부했다. 한달 바짝 벼락치기한 것 치고는 나쁘지 않은 점수를 받았다. 개강 직후에 한번, 10월 말에 한번 총 두번을 봤는데 9월 시험은 rd lc를 만점에 가깝게 보고 sp wr이 낮았던 반면 10월 시험은 wr은 많이 올랐는데 rd lc 점수가 확 떨어져서 결국 9월 점수로 교환학생 신청을 했다.
그리고 8월 중순부터는 운동을 시작했다. 혼자였으면 절대 등록 안했을텐데 같이 해주는 친구가 있어서 무려 주 3회 오전 운동을 등록했다. 매일 아침이 전쟁이었지만 어떻게든 일어나서 학원에 갔다. 새로운 환경이니 걱정을 많이 했는데 시설도 좋았고 선생님도 친절하셔서 기분 좋게 다닐 수 있었다.

9월~12월

개강 초 학교 커뮤니티를 둘러보는데 GDSC 홍보글이 있었다. 그때 GDSC의 존재를 처음 알게 됐는데, 좋은 기회라는 생각이 들어 촉박한 일정이지만 열심히 서류를 써냈고 면접 연락을 받았다. 면접 일정을 신청하라는 메일을 늦게 봐서 선택권이 별로 없었고, 결국 나는 그날 오전 10시에 토플 시험을 보고 오후에 GDSC 면접을 보게 되었다. 그때 한창 체력이 좋았던 때라 면접 끝내고 놀러 나가기까지 했던 기억이 난다. 면접은 오랜만이라 살짝 긴장을 했는데 워낙 친절하게 대해주셔서 면접이라기보다는 대화 같은 느낌이었다.
내가 주 관심사를 게임 개발과 웹 프론트엔드로 써서 냈는데, 프로젝트도 게임 개발 위주로 적어 내다 보니 GDSC에서 게임 개발 분야는 다른 분야보다 많이 다루지 못할 수도 있는데 괜찮겠느냐 하는 질문을 주로 주셨다. 그래서 지금까지 게임 개발만 해왔기에 다른 분야에 도전하고 싶었고 GDSC가 그러한 도전을 하기에 아주 좋은 기회라고 생각해서 지원하게 되었다, 이번에는 웹 개발 공부를 하고 싶다, 게임 개발에 이러이러한 과정을 통해 도전하고 성장한 경험이 있으며 웹 개발도 지금은 시작하는 단계이지만 이러이러한 도전을 통해 배워나갈 수 있을 것이라고 생각한다~ 하고 답변했다. 완벽하게 준비된 상태에서 진행한 면접은 아니었지만 나름대로 최선을 다해 잘 답변했다고 생각한다. 결과는 합격~~
그런데 여기서 멋진 우연이 있었다. 여름방학 프로젝트의 PM분이 GDSC에 같이 합격한 것! 이전에 게임 배포를 웹 페이지로 하기로 결정한 상태였기에 GDSC 프로젝트로 둘이서 배포용 웹 페이지 개발을 하면 어떻겠냐 연락을 드렸고, 좋다는 답변을 받을 수 있었다. 결국 겨울방학에 둘이서 배포용 웹 페이지를 완성했다!!
학기 중에 GDSC는 세미나와 스터디 위주로 진행되었는데 나는 웹 기초 스터디에 참여했다. 웹 공부는 정말 처음이었는데, html css js부터 git, node.js, mongoDB, react까지 다루는 최고의 커리큘럼 덕분에 웹 기초를 제대로 배워볼 수 있었다. 매주 강의를 듣고 정리본을 제출하는 형식이었는데, 처음에는 평소 애용하는 워드 문서로 제출했다가 다른 분들이 노션이나 블로그를 쓰시는 걸 보고 그 다음부터는 노션 페이지를 만들어 제출했다. 이 스터디 덕분에 써봐야지 써봐야지 하고 한없이 미루던 노션에 적응할 수 있었다. 심지어 최근에는 모든걸 노션에 쓰고 있다. 익숙해지니 이만한 툴이 또 없더라.
GDSC는 굉장히 다양한 관심사를 가진 분들이 모인 곳이다 보니 웹 프론트/백, 앱, VR/AR, 머신러닝과 인공지능, 보안 등 여러 분야의 세미나를 들을 수 있었다. 게임 개발 한 우물만 파던 나에게는 시야를 확 넓힐 수 있는 소중한 경험이었다. 그리고 인턴 경험이나 프로젝트 경험, 혹은 지금까지의 개발 일대기 등 다양한 스토리 세션도 있어서 큰 도움을 받을 수 있었다. 정말 열심히 사는 분들이 많아서 긍정적인 자극을 많이 받았고, 정보도 많이 얻어갔다.
2학년 2학기에 이룬 또 다른 성과가 있는데, 바로 4.3 만점에 4.3을 받았다는 것이다. 성적 마감일까지 성적 공개를 미루시는 교수님들 덕분에 마지막까지 정말 긴장의 끈을 놓을 수 없었지만, 학점을 후하게 주시는 천사 교수님들 덕분에 올 A+을 받아볼 수 있었다. 솔직히 한 과목 성적이 그렇게 높지 않아서 반쯤 포기한 상태였는데 그 과목 A+이 떴을 때 정말 기뻐서 방방 뛰어다녔다.
종강 후에는 게임 해커톤 MaKING JAM 2회에 참여했다. 2020년 1회 때는 1학년 때라 정말 코딩에 자신이 없어서 그래픽으로 참여했는데, 그때 정말정말 재밌었기에 이번에는 코더로 신청해 해커톤에 참여했다. 2020년에는 대면으로 진행했는데 2021년에는 코로나 상황이 워낙 안 좋아서 게더타운과 디스코드를 통해 비대면으로 진행되었다. 등수를 매겨 상금을 주던 1회와 달리 2회는 모두가 함께 즐기는 해커톤으로 진행되었고 정말정말 풍부한 웰컴 키트와 굿바이 키트 등 다양한 상품을 받을 수 있었다.
유니티 프로젝트는 세번째지만 학기 중 공백이 있었고 또 워낙 단기간에 완성해야 하다보니 걱정이 많았는데 생각보다 수월하게 작업할 수 있었다. 초반 기획에 시간이 좀 걸렸는데, 비대면으로 진행하다 보니 대면으로 했을 때보다 의사소통이 원활하지 못헀던 것 같아 아쉬웠다. 첫날은 필요한 공통 기능을 정리하고 파트를 분배하여 다음날 오전까지 각자 맡은 파트의 코드를 완성해 오는 것으로 하고 회의를 마쳤다. 첫날은 좀 여유가 있어 잠을 넉넉히 잘 수 있었다.
하지만 이틀차가 정말 빡셌다. 오전 10시부터 2~3시간 간격으로 회의를 하며 진행 상황을 보고하고 의견을 공유했다. 중간중간 기획분 및 사운더 겸 그래픽 분과도 피드백을 주고 받고 전체 회의를 하기도 했다. 우리는 인원 제한으로 인해 그래픽 팀원분을 모셔오지 못했는데, 사운더 분이 그래픽도 맡아주셔서 무사히 진행할 수 있었다. 하루종일 코딩하고 구글링하고 코딩하고 구글링하고 하다 보니 시간이 무섭게 흘렀다. 1시간 반인가 2시간 정도 잤던 것 같다. 마지막 날은 오전 8시부터 제출 마감인 오후 3시까지 노트북 앞에서 한발짝도 움직이지 않고 작업만 했다. 스테이지 전환을 제출 직전에 작업했는데 처음 빌드본에서 오류가 나서 땀을 뻘뻘 흘리며 후다닥 수정해 제출했다. 워낙 일정이 촉박하다 보니 게임을 끝까지 완성하지 못한 점, 테스트를 거의 못 해보고 제출해서 예상치 못한 오류와 마주한 점이 정말 아쉬웠다. 너무 아쉬워서 제출 후에도 오류 수정을 계속했다. 그 후 행사가 마무리 되어가는 저녁 6시쯤 첫 끼를 먹었는데 정말 밥이 순식간에 사라졌다. 그날 저녁에는 정말정말 기절잠을 자고 싶었으나 10시에 겨울방학 프로젝트 첫 회의가 있어서 아등바등 버텼던 기억이 난다.
게임에 필요한 기획도 얼추 다 나왔고 그래픽도 거의 다 완성되었으며 뼈대가 되는 코드도 다 있는데 그 모든 것을 조립할 시간이 모자라 완성하지 못한 것이 너무 아쉬웠다. 그래서 1월 중에 틈틈이 작업하여 거의 다 완성했는데, NullReference 오류 등 몇 가지 에러가 있어 아직 최종본을 빌드하지는 못했다. 나중에 에러를 다 고치면 엔딩 씬의 일럿스트도 작업해서 프로젝트를 완성하고 싶다는 야망이 있는데 과연 언제 끝날지는 정말 모르겠다. 올해 안에는 완성하는 것을 목표로...
https://github.com/sunnyineverywhere/MaKingJAM

GitHub - sunnyineverywhere/MaKingJAM

Contribute to sunnyineverywhere/MaKingJAM development by creating an account on GitHub.

github.com

마치며...

이렇게 쭉 돌아보니 2021은 열심히 살았다고 당당하게 말할 수 있을 것 같다. 사실은 알고리즘 공부를 왜 미리 해두지 않았나 후회하는 마음에서 쓰기 시작한 회고록인데, 2021년에 내가 뭘 했는지 하나 하나 적어두고 나니 그래 이만하면 최선을 다했다 ... 하는 생각이 든다. 2022년은 알고리즘 공부와 웹 프론트엔드 공부에 매진하는 것으로 하자. 교환도 건강하게 잘 다녀오고!! 항상 행복하게 지내길 바라며~

반응형