| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Garbage Collecter
- Gc
- CustomPropertyDrawer
- 커스텀에디터
- Zenocide
- 유니티 #UI 늘리기 #이미지 재사용
- Unity
- 가비지 컬렉터
- 에디터 개조
- GC 원리
- 개발공부
- 유니티 #공전 #유니티회전고정
- 유니티
- 할나 후기
- 할로우 나이트 엔딩
- SerializeReference
- 마개조
- 유니티 세이브
- C#
- Hollow Knight
- 유니티 렉
- CustomEditor
- 커스텀프로퍼티드로어
- SerializeField
- 할나 엔딩
- 유니티 에디터
- 할로우 나이트
- 가비지 컬렉션
- 개발지식
- 할로우 나이트 분석
- Today
- Total
가을의 개발 일지
공부를 한다는 것은 본문
서론

이번엔 개모임으로 하루만 공부하고 A 받는 법이란 제목의 발표를 진행했다.
개모임의 참여도 독려할 겸, 시험 기간에 진행한 발표인데, 그 덕인지 사람도 꽤 많이 몰렸다.
목차는 아래와 같다.

발표하게 된 이유
발표를 진행한 가장 큰 이유는 <함께 자라기>에 다음과 같은 구절이 있어서다.
주변의 전문가로부터 전문성을 뽑아내는 것은 자신의 전문성을 빨리 높일 수 있는 방법이다. 이때 중요한 것은 “프로그래밍 언어를 빨리 배우는 비결이 무엇인가요?”라고 묻지 않는 것이다. 이러한 질문은 형식적인 답변을 받을 가능성이 매우 높다. 대신 구체적인 사건에 대해 말하도록 유도하면 전문가가 구체적인 기억들을 상기하면서 의미 있는 내용을 얻을 수 있다. 결국 무언가 잘하고 싶다면 이미 잘하는 사람을 관찰하고 인터뷰하는 것이 큰 도움이 된다.
전문성을 빨리 높이는 방법은, 전문가를 관찰하는 것이다. 비결을 묻는 대신, 그 사람이 실제로 어떻게 하고 있는가를 간접 체험하는 게 가장 효과가 좋다. 나도 읽으며 꽤 공감했던 내용이었다.
적어도 내가 공부라는 영역에선 나름 전문가라고 생각했다. 단순히 학점이 높고, 시험 점수가 높은 걸 떠나, 좀 더 근본적으로 공부를 잘하는 편이라고 생각한다. 어릴 때부터 그래왔고, 지금도 별반 다르진 않다. 그렇기에 내가 평소에 어떻게 공부하는지, 어떤 의식의 흐름을 거치는지 (최대한) 있는 그대로 보여준다면, 좋은 인사이트가 될 것이라 생각했다.


개모임은 동아리 내에서 진행하는, 인당 10~20분의 짧은 발표 모임이다. 주로 자신이 공부한 내용, 배운 내용을 공유하는 자린데, 고학년이 주로 참여하다보니 내용이 꽤나 전문적인 게 장점이자 단점이었다. 그러나 원래 취지는 가볍고 누구나 하는 발표였기에, 특정 분야를 넘어, 모두가 재밌게 들을 수 있는 발표를 하고 싶었다.
게임 개발을 넘어, 프로그래밍을 넘어, 동아리 후배들에게 좀 더 넓게 도움될 만한 내용을 전하고 싶었다. 그래서 주제를 모두가 관심 있어할 공부 자체에 초점을 뒀었다.
이제, 그 내용을 함께 살펴보자.
우리는 왜 공부가 재미 없을까?

나는 어릴 적, 정확히는 초등학교에 다닐 때부터, 주변 친구들에게 항상 이런 소릴 들어왔다.
"아, 공부하기 싫다."
"재미없는 거 왜 해야 하는지 모르겠다."
"그냥 게임이나 하고 싶다."
그땐 사교성의 일종으로 저런 말들에 맞장구를 쳐줬고, 한때는 나도 그렇게 생각하게 된 적이 있었다.
하지만, 게임 개발을 시작하고, 좋은 게임을 만들기 위해 개발로도, 기획으로도 공부하다 보니, 근본적인 의문점이 들었다.
왜 게임은 재미있고, 공부는 재미없을까?
얼핏 보면 당연해 보이는 저 말들에 의문을 갖게 된 건, 바로 다음 이유에서다.


많은 게임들을 분석하고, 유튜브도 게임 디자인 분석 영상들을 많이 보다 보니 알게 된 것은, 게임의 근본은 학습에 있다는 것이다.
우리가 좋아하는 그 어떤 게임, 나아가 스포츠를 가져와도, 배우지 않고 할 수 있는 것은 없다. 야구 룰을 모른 채 야구를 할 수 없고, 조작키를 모른 채 할로우 나이트 엔딩을 볼 수 없다.
룰에서 나아가, 게임의 핵심 재미 역시 학습과 연결된다.
탐험 게임에서, 흥미로운 곳을 탐사하는 것
추리 게임에서, 사건의 진상을 파헤치려 단서를 얻는 것
대전 게임에서, 더 잘하기 위해 유튜브를 찾아보며 공부하는 것
그 모든 과정과 즐거움은, 내가 궁금한 것들이 해소되는 즐거움, 내가 몰랐던 것들을 알게 되는 즐거움을 기반으로 하고 있다.
게임 속에서, 내가 무엇인가 궁금한 게 생기고, 궁금증을 해소하려 노력하며, 끝내 알아내면 쾌감을 얻는 것. 게임은 이 3단계를 기본 법칙으로 작동한다. (조금 더 나아간다면, 성공적으로 수행해 냈을 때의 재미와, 응용했을 때의 재미도 있을 것이다.)
왜 공부는 재미없을까?

다양한 이유가 있겠지만, 나는 가장 큰 차이는 궁금하지 않은 것이라 생각했다.
무릇 게임이 그렇듯, 잘 만든 게임이 있으면 아쉬운 게임도 있다. 그리고 대부분의 아쉬운 게임들은, 충분히 플레이어의 흥미를 끌지 못한다.
아무리 넓은 맵이 있고, 수천 개의 퀘스트가 있다 한들, 게이머가 그걸 하고 싶지 않아 하면, 무슨 재미를 줄 수 있겠나? 특히 숏폼 콘텐츠가 주력이 된 요즘 시대엔, 지루한 걸 참고 엔딩까지 봐야 재밌는 콘텐츠는 아무 의미 없다고 생각한다.

그리고, 대부분의 교재와 강의 역시 정보 전달에만 중점을 둘 뿐, 그 사람이 정보를 얻고 싶어 하는가? 는 중점을 두지 않는다. 어쩌면 이는, 교재의 목적이 정보의 전달이기 때문일지도 모르겠다.
그렇다면, 궁금해하자.
서론이 좀 길었는데, 관련없는 이야기를 한 것 같지만 사실 여기서 모든 게 출발한다.
난 사실 공부법이랄 게 특별할 게 없다. 아니, 사실, 특별할 게 없는 걸 넘어 그냥 없다.
내용을 궁금해하는 것, 그게 전부다.
(하지만 아래에 공부법이 있으니 뒤로가기는 잠시 참아주자.)
언제부턴가, 공부란 것은 내 의지와 관계없이 내 눈 앞에 놓였다. 거기에 거부감을 느끼는 것 역시 당연할 지도 모른다.
눈 앞의 강의들을 의무가 아닌 콘텐츠로 보는 것. 이게 내 공부의 핵심이다. 그렇기에, 지루하게 만드는 요소들을 차단하고 산다.
좀 역설적인데, 그래서 나는 시험을 신경쓰지 않는다. 보통의 사람들이 취업을 하기 위해 학점을 잘 받으려하고, 학점을 잘 받기 위해 공부를 열심히 한다.
나는 정반대다. 사실, 내 목표는 취업에 있지 않다. 돈에 있지 않고, 대기업에 있지 않다. 취업이 목표가 아니니 학점을 잘 받을 필요가 없고, 학점을 잘 받을 필요가 없으니 도서관에 12시간씩 억지로 있지 않는다.
그렇다면 공부를 안 하는 걸까? 그건 아니다. 내겐 공부 자체가 목표가 된다. 내게 있어 새로운 강의는 새로운 DLC 콘텐츠고, 그 안의 내용들은 시험을 위해 외울 것들이 아닌, 내가 즐겨나갈 재밌는 지식들이 된다.
공부를 하다보면 시험을 치고, 시험을 치면 학점이 나온다. 학점과 내가 해온 활동들을 바탕으로 취업을 할 것이고, 취업한 곳에선 또 게임 개발과 관련해 배울 것이다. 그런 말도 있지 않나. 돈은 자연스레 따라오는 것이라고.
아직 취업은 못 했지만, 학점에서 이러한 삶을 실천 중이다. 단 한 번도 대학에서 '시험을 잘 쳐야지'란 생각을 하지 않았지만, 4.3이라는 준수한 학점을 유지 중이니.
내가 공부하는 방법
모종의 사건으로, 내 뿌리와도 같은 호기심을 잃은 채 남들과 비슷하게 공부했던 적이 있었다. 평생 안 썼던 요약 노트를 만들고, 최대한 많은 문제를 풀어보고, 내가 얼마나 이해했는지가 아닌, 얼마나 많은 종이를 넘겼는지에 중점을 둔 적이 있었다.
그러나 최근엔, 다시 나만의 공부법을 정립하며 싹 바꿨는데, 가장 큰 특징은 아래와 같다.
- 필기하지 않는다.
- 수업 시간 외에 공부하지 않는다.
- 시험 전날에만 복습한다.
지금부터, 이걸 가능케 하는 나의 공부법을 같이 따라가보자.

오늘의 주제. 멀티플렉서를 함께 공부해보자.
1. 무엇이 궁금해지는가?
가장 먼저, 저 단어를 보고 어떤 질문을 떠올렸는가? 아마 사람마다 다른, 많은 질문이 있을 것이다.
내가 가장 먼저 떠올리는 건, 저 단어의 뜻이 뭘까?다.


그렇기에, 보통 나는 수업 시간에 가만히 교수님 말을 듣고 있다가, 가끔 휴대폰을 켜서 검색하는 게 전부다. 필기? 하지 않는다. 어차피 강의자료에 요약되어 있는데, 괜히 필기하다 흐름을 놓치면 더 큰 손해 아닌가.
멀티플렉서는 Multiplex + er의 형태고, Multiplex는 영화관에서 나온 단어로, 다양함을 표현할 때 사용한다.
발표 중간에 한 선배는 "아, 영화관의 그 멀티플렉스관?"이라며 답해주셨는데, 나도 비슷한 흐름이다. 나는 멀티플렉스란 말을 자주 듣지 못했지만, 보통은 일상생활 중에 듣던 단어들이 자연스레 연결된다.
즉, 멀티플렉서는 단순히 다양하다는 걸 넘어, 영화관과 비슷한 원리의 무언가라고 유추할 수 있다.
개념을 넘어, 코드 한줄에도, 함수명과 변수명에도 만든 이의 의도가 숨어 있다. 예를 들어 리눅스의 mkdir 명령어가 Make Directory라서 폴더를 생성하고, C의 stdio.h가 Standard I/O 헤더파일이라서 표준 입출력 관련 함수가 모여 있듯 말이다.
2. 그 다음엔 어떤 질문을 하는가?
단어 뜻을 알게 되면, 그 후엔 왜 이걸 만들었는가? 를 질문한다.
많은 학술 자료들엔, 특히 컴퓨터공학과엔 의미없이 만들어진 물건은 없다. 작업 도중 무언가 불편함이 발생했고, 그 불편함을 해소하기 위해 만들거나/적용하며 이름이 붙여진다.
그럼 보통 구글에 멀티플렉서 사용 이유나 탄생 배경 등을 검색한다. 요즘은 AI도 많이 발전해서, 제미나이와 챗지피티에게 물어본 후 검증하기도 한다.

하지만 아쉽게도, ADC(아날로그 - 디지털 컨버터) 같은 와닿지 않는 예시만 나왔다. 이런 경우엔 우선 다음으로 넘어가고, 다시 돌아와 역으로 추리하는 과정을 거친다.
그럼, 다음 질문은 무엇일까?
3. 무엇을 하는 물건인가?
어쩌면 2번과도 통하는 질문. 저게 뭐하는 물건인가?다.
그럼, 멀티플렉서는 뭐하는 물건일까?

멀티플렉서의 뜻을 찾아보면 여러 개의 입력 신호 중 하나를 선택하여 단일 출력선으로 내보내는 장치라고 한다.
하지만, 처음 배우는 사람이 글만 읽어 이해하기엔 너무 어려운 내용이다.
이때, 난 보통 일상생활 속 비슷한 예시를 찾아본다. 여기선 TV랑 리모컨이 거기에 해당됐다.


TV는 우리가 입력한 채널의 영상을 틀어준다. 이처럼, 여러 개의 입력 신호(채널별 영상들) 중, 하나를 선택(리모컨으로 채널 입력)하여, 단일 출력선(TV의 화면. 하나니까 단일)으로 내보내는 장치가 곧 멀티플렉서다.
이처럼 나는 공부할 때 유추를 자주 사용하는데, 여기엔 많은 장점들이 있다.
1. 기본 지식을 배경으로 새로 배운 지식을 검증할 수 있다.
TV의 경우, 방송국은 내 TV를 향해 모든 채널의 영상들을 계속 쏴주고 있을 것이다. 내가 리모컨으로 요청하면, 그때 내 집으로 저격해서 쏴주진 않을 것이니까.
즉, 내가 어떤 채널을 골랐는지와 관계없이, 내 TV는 항상 모든 채널의 정보를 갖고 있다.
멀티플렉서는 어떨까? 멀티플렉서도 모든 입력에 값이 들어온다. 그중 내가 특정 인풋을 선택하면, 해당 인풋의 값을 그대로 출력해준다. 이말은, TV와 비슷한 방법으로 동작한단 뜻이다.
만약 우리가 멀티플렉서에 대한 글만 보고 외우기만 했다면, 모든 입력 경로엔 항상 값이 전달된다. 같은 명제엔 참인지 거짓인지 답할 수 없다. 하지만 우리가 알던 것들에 빗대보고, 비교하면서 책에 없는 내용에도 답할 수 있게 됐다. 나는 최소한 이 과정까진 거쳐야 이해라고 표현한다.
2. 다양하게 응용해볼 수 있다.
위에서 우린 만들어진 이유, 사용 예시를 건너뛰었다. 하지만 우린 이제 어디에 쓰는지 생각해볼 수 있다. TV처럼, 여러 가지 정보 중 하나를 고르는 곳. 좀 더 넓게 추상화하면, 철도나 회로처럼 경로를 선택하는 모든 곳에 쓰인다 볼 수 있다.
이렇게 공부하면 자연스레 추상화 능력이 길러진다. 비슷한 성질이 있는 것들을 묶어보고, 환경에 맞춰 선택할 수 있다. 이는 역으로 창의성을 기르는데도 도움이 된다. 특정한 성질을 가진 다양한 물건들을 떠올리고, 그 원리를 하나씩 대조해볼 수 있으니까.

여기까지만 해도, 기본적인, 추상적인 이해는 마쳤다.
4. 어떻게 동작하는가?
그리고 나서야 멀티플렉서의 동작 원리를 궁금해하게 된다. 멀티플렉서는 어떻게 저걸 실현했을까?

멀티플렉서 내부엔 AND 게이트와 OR 게이트, NOT 게이트가 모두 쓰인다. 그러나, 각 게이트의 의미를 우린 생각해볼 수 있다.
멀티플렉서의 목적은 무엇이었는가? 선택한 인풋의 입력을 그대로 출력하는 것이다. 그렇기에
NOT 게이트: 경로 선택을 담당한다. S가 0이면 Input_0이 켜져야 하고, 1이면 Input_1이 켜져야 한다. 이때 Input_0 쪽으로 가는 길에 NOT 게이트를 달아 0일 때 1이 되게 했다.
AND 게이트: NOT 게이트와 함께 경로 선택을, 정확히는 경로를 켜고 끄는 역할을 담당한다. AND 게이트에 Input이 아닌 쪽이 0이라면, Input의 값과 상관없이 0이 나온다. 이는 해당 경로를 꺼버린다는 의미다.
OR 게이트: Input_0이든 Input_1이든, 어느쪽이든 켜진 쪽의 값이 출력에 나오게, 길을 하나로 모아주는 역할을 한다.

이번엔 4x1 MUX를 보자. 자칫 복잡해보이지만, 각 게이트의 역할은 2x1과 동일하다.
그러나 큰 차이점이 2개 있다.
- AND 게이트의 다리가 3개로 늘었다.
- S의 개수가 2개로 늘었다.
AND 게이트의 다리가 늘어난 이유는, 더 정확히 말하면 S의 개수 + Input 값이 연결된 것이다. 2x1에선 S가 1자리 였기에 1+1=2개였고, 이번엔 S가 2자리여서 2+1=3개가 되었다.
그럼, 왜 S가 2개로 늘었는가? 이또한 단순한데, 이는 논리회로고, 모든 값은 0과 1로 이루어진다. 즉, 이진수를 쓰고 있다.
경로 선택에 이진수가 쓰이니, 4개(0~3)를 표현하기 위해선 2자리 이진수가 필요했다.
5. 응용은 자연스럽게
이렇게 하고 나면, 여러 응용들을 자연스레 할 수 있게 된다.
만약 8x1 MUX를 만들려면? 8까지 표현하려면 S가 3개로 늘어날테고, 그럼 각 AND 게이트엔 다리가 4개, OR 게이트엔 8개가 붙을 것이다.
OUTPUT이 2개가 될 순 없을까? 이는 그려보면, 결국 구조상 2개의 MUX가 입력(I)과 선택(S)을 공유하는 형태가 될 것이다. 혹은, 단순히 출력에 선 하나 더 이어서 제공할 수도 있을 것이다.

많은 사람들이, 시험에서 책에 나오지 않은 내용이 나오면 어려워한다. 필자도 개념 자체가 책에 없던 경우가 있어 그걸 말하는 줄 알았는데, 대다수는 개념 응용 문제 얘기였다.
응용이 되게 거창한 것이라 생각하지만, 사실 시험에서 나오는 응용이란 건 기껏해봐야 어디까지 살펴봤는가를 묻는 정도에 그친다. 나는 이미 3번과 4번에서 이 개념을 다채롭게 해부해봤기에, 응용 문제가 나와도 조금만 생각해보면 알 수 있었다.

대학 시험, 그리고 자격증은 끽해봐야 개념을 묻는 수준이고, 이정도의 공부만으로도 학교 시험은 쉽게 칠 수 있다.
6. 시험 전날 가볍게 훑어보기
이 공부법의 장점은 기억이 매우 오래 간다는 점이다. 실제로 발표에서도 즉석으로 예를 들었었는데, 지구과학 시간에 배운 금성이 뜨는 시각과 위치, 이유, 샛별과 개밥바라기별의 어원 정도를 가볍게 설명했다. 하나의 개념을 다양한 방법으로, 만물에 빗대어 이해하다보니, 키워드 하나만 던져지면 관련된 기억들이 전부 떠오른다. 아마 10년 후의 나도, 멀티플렉서란 단어엔 "그게 뭐더라?"라고 할 수 있지만, 구조도를 보거나 "TV 같은 거"란 설명이면 이 포스트의 모든 내용을 설명할 수 있을 것이다.
그렇기에, 수업 시간에만 휴대폰과 함께 이해해보고, 시험 전날 훑어보며 기억만 되살리면 시험 준비는 끝난다. 수학이 아니라면 문제를 풀어보지도 않고, 당연히 족보는 구경도 한 적 없다.
그렇기에 나는 가성비가 좋다고 표현한다. 재밌고, 시간이 적게 들고, 성적은 준수하다. 수업 시간과 과제할 시간만 제외하면 남는 시간은 꽤 많고, 그 시간을 전부 게임 개발에 투자할 수 있다. 학점 4.5가 필수적인 과가 아니라면, 특히나 컴공처럼 자유로운 활동이 장려되는 곳이라면 이 공부법이 더더욱 유용할 것이다.
결코 만능이 아니다.
그러나 이 공부법이 결코 무적은 아니다. 가장 큰 단점은 바로 문제푸는 데 시간이 오래 걸린다는 것이다.
대부분의 시험은 3번 검증하고도 시간이 남지만, 특히 수학의 경우엔 추가적인 공부가 필요하다. 나는 이를 시험용 공부라고 부른다.
그럼 평소엔 시험 공부를 안 하시나요? 그렇습니다.

때론 개념 이해를 넘어, 숙련이 필요한 영역이 있다. 롤이 그렇고, 다크 소울이 그렇고, 수학이 그렇고, 코딩 테스트가 그렇다.
여기서 숙련이란 실제로 문제를 풀어보는 것을 뜻한다. 보통은 양치기로 승부하는 대신 패턴을 파악하고, 파훼법을 찾는 데에 시간을 더 쓰는데, 롤이라면 챔피언별 콤보 패턴과 언제 딜교환을 해야 하는지가 될 것이고, 코딩 테스트라면 지문에서 문제 분류를 찾아내고, 해당 방법을 바로 사용할 수 있을 정도로 익히는 게 될 것이다.
이러한 문제들의 공통점은 시간이나 정확도를 요구한다는 것이다. 아무리 공략 영상을 많이 봤다한들, 다크 소울을 처음 하면서 한 대도 맞지 않고 클리어하긴 어렵다. 머리로 아는 것과, 몸으로 체득하는 건 다르니까. 그러니 당신이 깨려는 보스(시험)가 이 영역에 있다면, 익숙해질 때까지 계속해서 도전하고, 깨져보자.
그럼에도, 하진 않는다.
그러나, 앞서 말했듯 난 수학이 아닌 한 시험용 공부까진 하지 않는다. 이유는 단순하다. 공부에 시간을 더 써서 전부 A+를 받는 것보다, 적당히 A만 받고 시간을 벌어 게임 개발에 쓰는 것을 내가 좋아하기 때문이다. 그런 것치곤 지금껏 만든 게임이 고작 9개 뿐이지만, 적어도 난, 내가 하려는 일에 있어 계속해서 성장 중이라 자부한다. 기획적으로도, 개발적으로도, 과거에 비해 많이 발전했으며 앞으로 더 발전할 것이다.
내 목표는 성적표의 글자가 아닌 의미 있는 게임이기에, 오늘도 난 게임을 만든다.
마무리
오늘은 내가 어떻게 공부하는지, 어떤 마음가짐으로 공부 중인지 같이 알아봤다. 비록 넓은 세상엔 나보다 더 뛰어난 사람이 넘치겠지만, 그럼에도 이런 사람도 있다는 것이, 여러분에게 작은 인사이트라도 되었으면 한다.
여담으로, "공부가 재미없는데 어떻게 재밌게 생각해"라는 사람도 있을 것이다. 하지만, 내가 지금껏 경험했던 바로는 억지로라도 좋아하려 해보는 것이 꽤 중요했다. 과거 나는 사람을 싫어했고, 대화를 무가치하게 여겼다. 하지만 전역 후, 억지로라도 옆 사람에게 인사하고 말을 걸어보자 다짐했고, 지루한 대화를 재밌다 생각하려 노력했다. 그 결과, 지금은 대학에 친한 사람도 많이 생기고, 동아리에선 부회장도 했었다. 사람을 만나는 걸 재밌어하고, 스스로 대화를 즐겨 하게 되었다. 그리고, 그 모든 것에 후회가 없다.
이 글을 읽는 여러분도 더 행복해지길 기도한다.
'개발론' 카테고리의 다른 글
| “프로그래밍 언어도 언어다.” - 코드 가독성을 높이려면 (6) | 2025.07.03 |
|---|
