본문 바로가기
개발/회고록

[개발] - 게임인재원 6기 1학기(프로그래밍) 후기

by 수인분당선 2024. 5. 28.
반응형

안뇽하세요.

프리스쿨에 이어 1학기를 마치고 돌아왔습니다...

1학기에 관한 간단한 리뷰와 함께 스스로를 반성해보고자 글을 작성합니다..

혹여라도 다음 게임인재원 지원을 희망하시는 분들에게 

커리큘럼에 관한 정보가 도움이 되기를 바라며,,

 

1. 정규 수업

정규수업은 보는 바와 같이 매주 해당 시간표에 맞춰 진행됩니다.

오전 10시~오후 1시까지 세시간동안의 연강이 있고, 

1시~2시까지 점심시간을 가진 후에

2시~5시까지 오후 수업을 진행하게 됩니다.

 

컴퓨터개론

컴퓨터에 관한 기본적인 개념을 배웁니다. 쉽게 운영체제, CS에 관한 이론을 배운다고 생각하면 됩니다.

저는 전공자지만, 운영체제가 학교 전공 커리큘럼에 포함되어 있지 않는 전공이어서 이 운영체제들이나 컴퓨터의 개념적인 부분에 대해 많이 약했고, 배우고 싶은 마음이 컸었습니다.

이 수업은 그런 부분을 채워줄 수 있었던 좋은 수업이었다고 생각합니다.

너무 방대한 양을 짧은 시간안에 배워야했기 때문에 수업에서는 핵심적인 부분만을 휘리릭 보고 지나갑니다. 

그래서 버겁다고 생각되기도 했지만 덕분에 하나하나 스스로 찾아보고 공부할 수 있었어서 저에게는 알맞는 수업방식이었습니다.

 

이 컴퓨터개론 수업을 들으며 내가 더 배워야하는 부분이 어떤 것인지 어느 정도 깨달을 수 있었습니다.

차후에 여유가 된다면 이 수업에 관한 내용과 나아가 심화적인 부분을 더 상세하게 공부해보고 싶습니다.

 

디지털 모델링 기초

블랜더를 통한 디자인을 공부합니다. 

블랜더를 배운다고 말하면 다른 사람들이 항상 프로그래밍을 공부하면서 왜 블랜더를 배우고 있느냐고 저에게 물은 적이 많았습니다.

초반엔 저도 당최 이유를 모르겠어서 대답하기가 어려웠습니다.

하지만 계속해서 블랜더를 배우고 사용해보면서, 프로그래머로써 디자이너와 소통을 하는 과정에서나, 어떤 식으로 디자인이 구현되어있느냐에 따라 코드적으로도 구현 방식이 달라진다는 부분에서 블랜더의 기본적인 소양을 배워두는 것이 상당히 요긴하게 쓰일 것 같다는 생각이 들었습니다 ,물론 아직 예측입니다..

 

안타깝게도 다들 재밌어하는 수업이지만 저는 조금 괴롭습니다.. 

왜 제가 손만 대면 애들이 괴물이 되는거죠? 마음이 아픕니다..

미술은 이래서 안돼..

프로그래밍 기초(C/C++)

프로그래밍의 기초인 언어에 관하여 배웁니다.

사실 저는 C언어를 비롯한 고급 C언어, C++프로그래밍 등 기본적인 C언어와 C++에 대한 수업을 학교에서 수강한 경험이 있었습니다.

그렇기에 수업과 중복되는 내용이 상당히 많았고, 배운 내용을 다시 들어야 했기에 저에게는 조금은 지루하다는 느낌을 많이 받았습니다.

하지만 여기서 배우는 수업에서는 기본적인 내용 뿐만 아니라 세부적인 기능, 게임에서 다룰 수 있는 다양한 내용들을 다루기도 했고,

학교에서는 간단하게 이론만 보고 넘어갔던 내용을 실제로 적용하고 응용하기까지 하며 심화적으로 내용을 공부했습니다.

그래서 이 수업은 제가 이번 학기에 가장 아쉬운 수업이라고 생각합니다.

 

이 과목도 여유가 될 때 조금이라도 다시 부족한 부분을 체크해보고 공부해야할 것 같습니다.

 

게임 수학

게임에서 사용되는 수학에 관한 내용을 다룹니다.

이번학기에서는 수학적인 깊이 있는 내용을 다루기 보다는 수학이 게임에서 어디에 어떻게 사용되는가, 수학이 어떤 부분에서 중요한 역할을 하는가와 같은 간단한 이론과 필요성 정도를 배웠습니다.

아직까지는 배운 내용이 크게 깊지 않아 잘 따라갔지만, 다음학기는,, 다다음학기는 어떻게 될 지 잘 모르겠습니다 수학 싫어인간이라서,,

하지만 하라면 해야죠..

전임 특강

전임 특강 시간은 크게 정해진 것이 없고, 그때그때 학생들에게 필요한 내용을 보충해주거나 상담을 진행하는 등 전임 교수님의 판단에 따라 교육생들을 지도하는 시간입니다. 

이번 학기에 미니 프로젝트를 진행해야 했기에 전임 특강시간에 WinAPI에 대한 사용법이나 이론을 이 전임특강 시간을 활용해서 많이 배웠습니다.  

그래서 전임 특강에 대한 후기보다는 WinAPI에 대한 수업의 후기를 남겨보자면.. 정말 하얀 도화지에서 그림을 그리는 것같은 느낌이었습니다. 현재 상용화된 다른 프레임워크들이 라이터로 불을 붙인다면 WinAPI 부싯돌로 불을 붙이는 듯한 느낌이 들었습니다.

하지만 그만큼 제가 코드를 작성하는 데에 정규화된 형식 없이 자유롭게 코드를 짤 수 있었습니다. 물론 그 때문에 최고로 못생긴 코드들이탄생했지만,,

하지만 한 번 쯤은 이런 경험을 해 보는 것도 기초적인 프로그래밍적 사고를 키우고, 게임 프레임워크를 이해하는 데 아주 큰 도움이 되었을거라고 생각됩니다.

정말 필요한 경험인 것 같습니다!

하지만 다시 하고 싶지는 않습니다!! 경험은 한 번이면 충분....!

자습

자습 시간은 각자 부족한 내용을 채우고 과제를 하는 등의 말 그대로 자습시간입니다. 

개인적으로 진행하고 있는 프로젝트도 있고 알고리즘, 과제 등 여러모로 할 공부들이 많았어서 큰 도움이 되었습니다.

확실히 너무 속도감있게 수업하는 방식보다는 이런식의 개인 자습시간이 있어 각자의 부족한 부분을 더 공부할 수 있었던 게 도움이 많이 되었습니다.

자료구조와 알고리즘(기초)

이 시간에는 교수님께서 간단하게 알고리즘 또는 자료구조에 관한 이론을 가르쳐주신 후, 주어지는 문제를 배운 내용을 활용하여 해결하는 방식으로 진행이 되었습니다. 

구조를 처음부터 만들고 뜯어보면서 해당 라이브러리와 함수를 활용하는 방법에 대해 조금 더 알 수 있었습니다.

사실 이 수업도 학교에서 데이터구조라는 수업을통해 수강했었지만, 파이썬을 통해 구조를 구현했었기에

수월할 것이라고 예상했지만 예상과 다르게 C++로 다시 구현하고자 하니 포인터 등의 문제로 인해 어려움을 조금 느꼈던 것 같습니다.

그래서인지 이 수업을 들으면서는 자료구조나 알고리즘에 대해서 더 공부해야한다는 생각보다는 C++, C언어의 기초적인 개념을 다시 확립해야한다는 생각을 또 한번 했던 것 같습니다.

유니티로 배우는 게임 수학

이 과목에서는 유니티를 배운다기보다는 이름 그대로 유니티를 활용하여 게임에 들어가는 수학에 대해서 배우게 됩니다.

게임 수학과의 차이점은, 게임 수학은 보편적으로 사용되는 게임 속 수학의 이론에 대해서 배운다면

이 과목에서는 게임에 사용되는 수학의 활용 방법을 실제로 코드로 구현한다는 점입니다.

벽을 튕겨 반사하는 원리나, AABB를 통한 두 개의 오브젝트 간의 충돌 검사, 중력과 벡터 등의 값을 고려한 점프 구현 등등..

사실 이 수업은 조금 난이도가 있었다는 생각이 들었습니다.

유니티를 거의 처음 배우는 시점(?) 에서 유니티의 기능을 익숙하게 사용하기가 조금 버겁기도 했고, 수업자료가 영어라던지, 수포자라던지,, 아무튼 저에게는 조금 어려웠습니다.

하지만 다시 떠올려봤을 때 배웠던 내용들이 후에 큰 도움이 될 것 같다는 생각이 들어

이 과목의 이론적인 부분은 블로그에 기록하면서 다시 공부해볼 예정입니다.


전체적으로 이번 학기의 수업은 모두 게임에 대한 내용을 배우기 전 알아야할 기초적인 능력을 닦고, 게임인재원 생활을 적응하기 위해 짜여진 듯한 느낌이었습니다.

확실히 덕분에 적응이 훨씬 수월했다고 느껴집니다. 

이제 적응을 다 한 만큼 다음 학기 수업은 배울 부분이 많은 새로운 과목들이 많았으면 좋겠고, 수업에 조금 더 열정적으로 임하고 싶다는 생각이 들었습니다.


2. 미니 프로젝트 회고..

간단하게 정규 수업은 2달간 진행되었고, 이후 2주간 미니 프로젝트가 진행되었습니다.

이 미니프로젝트가 시작 되기 전에는 각자 WinAPI를 활용하여 작은 미니게임을 만들어보는 과제가 주어졌었고, 이를 통해 어느정도 프로젝트를 하는 데 있어 필요한 기술들을 익히고 배웠습니다.

 

어찌어찌 프로젝트 팀이 구성되고,, 프로젝트를 시작합니다.

프로젝트 기간 동안에는 정해진 시간(오전 10시~ 오후5시)에 등원과 하원을 진행하는 것 빼고는 자율적으로 프로젝트에 임하면 됩니다. 

저는 프로그래밍 팀의 팀장을 맡아 프로젝트를 진행하였습니다.

 

프로젝트를 진행하고 난 뒤 다시 돌이켜보면 생각보다 많은 부분에서 성장할 수 있었던 것 같습니다.

 

개발 협업 문화의 중요성

협업을 한 경험은 다수 있기에 어느 정도 익숙했지만, 사실상 제가 진행해온 프로젝트에서는 프론트엔드, 백엔드로 분야가 나뉘어 있고, 혼자 프론트엔드를 담당하는 경우가 대부분이었습니다. 

굳이 다른 사용자를 고려하지 않고 저만 알아볼 수 있게 코드를 짜도 무방했고, 코드를 작성한다해도 충돌하는 등의 문제가 발생할 확률은 극히 드물었습니다.

이번엔 하나의 프로젝트를 다함께 작업하는 경우였고, 이 상황에서 저는 왜 사람들이 깃허브를 통해 브랜치로 각자의 작업 공간을 분류하여 작업하는지, 역할을 분담할 때는 또 어떻게 해야하는지 등에 대해서 배울 수 있었습니다.

2주동안 작업을 하면서 초반에는 독립적으로 각자 역할의 코드를 작성하며 큰 문제가 발생하지 않았지만, 시간이 지날수록 서로의 코드가 엉키고 섥혀서 난감했던 경험을 겪으며, 왜 가독성있는 코드를 작성해야 하는지, 어떤 방식으로 역할을 분담하고 지시해야 코드의 충돌을 최소한으로 할 수 있을지, 깃허브에 visual studio 프로젝트를 업로드할 때에gitignore가 얼마나 중요한 역할을 하는지 등 사소한 것들부터 핵심적인 부분까지 그냥 협업이 아닌 개발 협업이라는 것을 배울 수 있었습니다.

코드의 효율성과 재활용성

이 부분이 제가 이번 프로젝트를 하면서 가장 많은 생각이 들게했던 부분인 것 같습니다.

2주간 프로젝트가 진행되고 네명이서 코드를 개별적으로 작성하다보니 같은 기능을 하는 코드를 작성하는데도 불구하고 각자 독립적으로 함수를 만들고 코드를 짜는 상황이 발생했습니다.

같은 기능인데도 다른 코드로 작성되다보니 가독성이 떨어지는 것과 동시에 불필요한 코드들이 수두룩이었습니다.

이러한 부분들을 보완하기 위해서 엔진이라는 기반이 사용되는 것이구나,,라는  깨달음을 얻었고, 엔진에 대해서는 잘 모르겠지만

버튼이나 스크린 관리, 리소스 관리자등의 공통적인 역할을 진행할 수 있는 기능들을 따로 클래스로 분리하여 다른 팀원들이 함께 사용할 수 있도록 안내했습니다.

확실히 클래스로 공통적인 코드를 활용하여 코드를 작성하니 중복되는 코드를 줄일 수 있었습니다.

급한대로 클래스로 코드를 작성하긴 했지만 아직 오버라이딩, 오버로딩, 추상화 등의 코드를 더 간결하고 효율적으로 짜는 방법이 많이 남아있다는 걸 느꼈고 아직 그런 기술들의 개념들만 알지 어떤 부분에 어떻게 사용해야할지에 대한 응용력이 아직 부족하다는 것을 깨달았던 것 같습니다. 

다음에 프로젝트를 하게 된다면, 또는 시간이 남는다면 이렇게 하나의 프로젝트를 완성하는 데 있어서 코드의 재활용성을 고려하여 조금 더 보편적이고 사용이 용이한 코드를 작성할 수 있도록 신경을 기울이며 프로젝트를 수행해보고 싶습니다.

 

이 두가지 부분들을 고민하고 생각하게 했다는 점만으로도 이 프로젝트는 저에게 큰 도움이 되었다고 생각합니다.

앞으로는 이러한 부분까지 충족하여 만족스러운 코드를 작성할 수 있도록 하고싶습니다. 


처음 입학 당시에는 이곳을 단지 지식 습득을 위한 학원 정도로만 생각하며 들어왔습니다.

하지만 평일기간의 오전10시부터 오후5시까지 같은 목표를 가진 다른 교육생들과 함께 지내면서 어느 정도 농담을 주고받은 사이가 되어  등원이 조금 더 즐거워졌습니다.

서로 경쟁심으로 더 열심히 공부하게 되기도 하고, 함께 공부하며 새로운 코드 작성 방법에 대해서 꺠닫게 되면서 여러모로 생각보다 더 많은 것들을 배울 수도 있었습니다.

또한, 정규 수업시간 외에도 자율적으로 오후 10시까지 작업이 가능했기 때문에 좋은 작업 장비들로 프로그래밍을 진행하며 훨씬 더 효율적이고 편하게 작업할 수 있어서 이 부분도 게임인재원의 큰 장점으로 꼽을 수 있을 것 같습니다.

여러 우여곡절도 많고, 어떨 때에는 인재원을 나가고 싶다고도 생각했지만 남아있길 잘했다고 생각한 순간이 아직은 더 많은 것 같습니다.

다음학기에는 더 성장했길 바라며,, 세달뒤에 다시 2학기 후기로 돌아오도록 하겠습니다.

그럼안 녕

반응형

 

반응형