4번째로 오신 유니티 과외 일지 타래! 코딩은 C를 최근에 배우셨고 포인터 까지 아신다. 그리고 어느정도 유니티 지식은 아는 상태.

 

 

1일차

 

유니티 지식과 코딩은 어느정도 아시기 때문에 기초부분은 굉장히 스무스하고 빠르게 넘어갔다. 그래서 하루만에 1.5주치를 다 배우셨다. 생각보다 이해가 빠르시고 호응도 잘 해주셔서 과외 하면서 제일 재미 있었던 ㅋㅋㄱㄱㅋㅋ

기본적인 유니티 인터페이스. 오브젝트를 움직이는 코드. 오브젝트를 움직이는 코드를 활용해 사용자 버튼을 받아 방향을 정해 움직이는 코드. 벡터의 덧셈 , 뺄셈. Transform과 transform 의 차이 까지 했다. 와 너모 많아...

 

 

2일차

 

벡터의 뺄셈 개념까지만 해서 벡터으 뺄셈을 이용해 적 오브젝트를 플레이어를 향해 돌진하도록 만들었다. 그리고 코드를 짜면서 필연적으로 지역변수 전역변수 때문에 버그가 나는데 이 부분의 개념을 PPT로 정리 해놔야겠음 지역전역을 비전공자분은 여기에서 어려워 하시는게 느껴지는데 아시는 분은 아~ 하면서 쿨 하게 넘어가는걸 보고 느꼈다. 일단 전역 지역변수를 여기서 다져야겠다. 그리고 학생분이 전역변수랑 Static이랑 헷갈려 하셔서 Static 개념을 잡아드렸다. 문제는 Static은 싱글톤 할 때 다뤄야되서 예전에 쓴 코드들을 가지고 예제를 삼는데 너무 빨리 Static을 다루는 바람에 예제가 없어서 좀 애먹었다 ㅋㅋㅋ 그래서 충돌하고 에너미 생성까지 했다. 다음시간에 예전에 만든 충돌 비교 프로젝트로 예시를 보여드리기로 했다. 그리고 진도 넘 빠름 돌겠구만~~~~~

 

 

3일차

 

드디어 그 구간... 여태까지 배운걸 토대로 스스로 코딩하기... 여태까지 했듯 코딩하는걸 옆에서 지켜봤는데 안좋은 습관들이 보여 조언해줬다.

 

첫번째 버그가 나는게 무서우신지 코드 실행하기전에 너무 오래 생각하신다. 그래서 여태까지 이해도 잘 하셔서 금방 뚝딱뚝딱 하실줄알았는데 생각보다 오래 걸리셨다. 그래서 어느정도 막힐때는 그냥 돌려보고 버그를 내는게 좋다고 조언해드렸다. 계속 생각만 하면 답이 안보이니까

 

차라리 버그를 내고 그 곳을 중점으로 생각해보고 디버그 찍어보면서 값이 어떻게 변하는지 파악하는게 더 빠르게 개발 가능하다고 말씀드렸다

 

4일차

 

쉐이더와 메테리얼의 개념을 알고 텍스쳐 롤링기법을 사용해 배경이 자동으로 움직이게 해보았다. 겟컴포넌트를 사용해 컴포넌트에 접근하는 방법을 배웠고 메테리얼은 컴포넌트가 아니기 때문에 매쉬 랜더러에 있는 메테리얼으로 접근 해야한다는것을 일부러 버그 내서 보여줬다 그리고 오브젝트 풀링을 해보기 전에 개념을짚고 넘어 갔고 배열과 리스트가 어떤 상황에서 유용하게 쓰이는지 상황별로 보여주며 이해시켰다. 아 다음에 복습하면서 자료구조 앱 그거 보여줘야겠다 그리고 시간이 애매해서 요까지 하고 끝남. 계속 생각해봤는데 이 분은 지금부터

개인적으로 게임개발 해보라고 시키고 싶다. 오늘 한번 이야기 해봐야겠음

 

 

이 이후부터는 안쓰게 되었다. 이유는 패턴이 똑같아서 쓸 필요성을 잃었기 때문이다! 자유 과제때는 패턴 또 달라질거같으니까 그때부터 다시 쓰겠지

 

2019년 7월에 처음으로 쓰게 된 과외 일지다. 

 

간단하게 메모형식으로 적으면서 무엇이 부족했고 무엇을 보완해나갈지 적었었다.

그 메모들을 이 블로그로 옮겼다. 

 

 

새로오신 분 유니티 과외 교육 일지 이번엔 오프라인이 아니라 온라인 강의이다. 프로그래밍은 하나도 모르시는 분!

 

 

1일차 :

 

구글에서 만든 코딩과 유사한 퍼즐게임인 Blockly Game을 9단계 까지 해 보았다. 어떻게 문제를 해결해 나가는지 잘 보면 나중에 디버그를 어떻게 할지 감이 잡힌다. 감을 잘 잡으시는거 같으시면서도 헤매시는 부분들이 있었는데 그 부분들을 잘 기억해놔야겠다.

 

분명 코드 짤때도 비슷하게 실수 하실거 같다. Blockly Game 좋다. 자연스럽게 If문 for문의 필요성을 알게 해주기 때문이다. 그리고 유니티의 기초적인 인터페이스나 지식들을 알려드렸다. 한번에 좀 많은 내용들을 다뤄서 당연히 몇가지는 까먹을 수 있으니 다음 강의 때 잠깐 복습을 하고 넘어가야 겠다! 과제는 자신의 방을 유니티 기본 도형으로 구현해 보도록 했다. 이렇게 하면 유니티 다루는게 익숙해 지기 때문에 매번 첫 과제는 자신의 방을 만드는거로 한다.

 

2일차 :

 

과제 잘 해오셨다.너무 아기자기해서 넘 귀여웠음. 복습으로 저번에 했던거 쭉 훑으면서 상기 시켜줬다. 오늘 좀 많은걸 배웠는데 먼저 IF문! 브록키 코드로 IF문을 배우고 그대로 유니티 가서 IF문을 만들어 좀 더 이해하기 쉽게 IF문을 알려줬다. 둘이 비교해보면 비슷해 이해하기 쉽다

 

그 다음엔 클래스와 변수와 함수를 알려줬다. 클래스와 함수는 원으로 비유하고 변수는 선으로 비유했다. 그리고 각자 역할을 설명했다. 그리고 transform.Translate(Vector3.right * 5 * Time.deltaTime); 이 코드가 뭔지는 모르겠지만 아무튼 적용시켜보니 오브젝트가 오른쪽으로 움직이는걸 볼 수 있게 해줬다. 이러면 딱 감이 오니까. 그리고 뭔지는 모르겠지만 왼쪽으로 움직이게끔 해보라고 유도 했다. 역시나 right를 Left로 바꾸셨다. 역시 다들 눈치가 좋으셔 그리고 해당 코드를 하나씩 하나씩 설명해줬다.

 

이번 시간은 조금 내 자신이 못마땅 했다. 전달력이 별로였던거 같음. 설명도 잘 한거같지도 않다. 온라인으로 강의해서 그런가 좀 맘에 안든다. 그리고 PPT 예전에 자신있게 만든건데 지금보니 매우 맘에 안든다. 싹다 고쳐버릴까. 흐름도 맘에 안들고 디자인도 맘에 안듬

 

지금 과외생은 플밍 기초는 다 알고있어서 이거 모를거 같아 조목조목 설명하다가 학생이 형 저이거 알아요 하면 아 그래?? 머쓱 하고 이젠 그냥 이거 알지? 하면 ㅇㅇ 알아요 하고 슥 넘어가게 되니 이젠 기초적인거 설명할때 더 머리아프네... 기초 부분 다시 만들어야겠다 ㄹㅇ 맘에 안듬

 

3일차 :

 

벡터에 대해 더 자세히 알아보기로 했다. 벡터 덧셈을 이용해서 사용자 키를 받아 플레이어를 움직이게 했고 벡터 뺼셈을 이용해 적을 만들기로 했다. 벡터 뺄셈으로 오브젝트 간의 거리를 구하고 적이 플레이어에게 박치기 하도록 했다. 크게 적을껀 없어보인다..!

 

4일차 :

 

전전 수업까지 복습 후에 다음 수업으로 넘어갔다. 복습은 저번 수업때 썼던 코드들 쭉 보면서 함수 주석으로 필기하고 왜 이런식으로 썼는지 원인과 결과를 중점적으로 봤다. 그리고 2번 복습후에 3번째 때는 직접 나한테 설명 해보라고 해야겠다. 나만 알려주니까 내가 다 외워버려서...ㅎ

 

그리고 진도는 충돌관련 컴포넌트 적을 일정한 시간마다 생성하기 위해 생성코드, 타이머 까지 구현했고 시간땜에 프리펩은 아직..!

 

5일차 :

 

다시 복습...! 적응이 잘 안되시는 듯 하다... 유튜브에 플밍강의 보시면 좀 나아지시려나

 

6일차 :

 

여태 썼던 코드들을 나한테 리뷰해보도록 했다. 어떤 지식을 누군가한테 설명 하려면 자세하게 알아야하고 무엇을 잘못 이해하고 있고 모르는지 금방 파악이 가능하다. 오늘을 위해 계속 복습했는데 그 덕분인지 전체적으로는 파악을 하고 계셨는데 자세하게는 아직 낯선듯하다.

 

그리고 다음 수업에는 드디어 스스로 코드 짜는 부분이다... 호호호.. 수많은 버그가 기다린다...

 

 

 

 

// 이 다음 부터의 메모는 없었음 

 

 

2019년 8월에 처음으로 쓰게 된 과외 일지다. 

 

간단하게 메모형식으로 적으면서 무엇이 부족했고 무엇을 보완해나갈지 적었었다.

그 메모들을 이 블로그로 옮겼다. 

 

 

유니티 과외 3일차 :

 

원래 코딩 배운애라 습득이 빨라서 과외생한테 일부러 버그 내놓고 고쳐보라고 시켜봤음 그리고 버그 찾을때 쉽게 찾는 방법을 알려줬다. 그리고 버그 찾을 때 옆에 붙어 어떻게 고쳐나가는지 보고 노트에 미리 써둔 후 문제가 되는 부분들을 짚어 줬다 1:1 과외라서 이런식으로 짚어주니까 알려줄수있는게 많은데 1: 다수면 이런식으로 짚어줄수없는게 아깝네

 

유니티 괴외 4일차 : 

 

충돌체크 세팅하는게 헷갈려 하는거 같아서 예제 프로젝트 만들어서 하나하나 비교해줬음 그 프로젝트 따로 백업해놔야겠다 나중에 써먹게 그리고 지금까지 배운거 활용해서 새로운 기능 혼자서 만들어 보라고 시켜봤음 역시나 여기저기에서 헤매는게 보이지만 결국 잘 해냄

 

유니티 과외 5일차 :

 

오브젝트 풀링을 알려줬음 원래 배열이랑 리스트 알고 있는지 금방금방 설명해서 원래 이틀 걸릴꺼 하루만에 끝냄 그래서 또 자료 만들어야함 ㅠㅠㅠ 배열 리스트 모르는 학생 가르킬땐 2~3일 정도 걸릴듯 하다.

 

6일차 :

 

프로젝트 퀄리티를 올리기 위해 무료에셋으로 모델링 , 파티클 , 효과음을 다운받아서 적용 시키고 해당 컴포넌트 사용법이랑 코드 제어하는 방법을 알려줬다. 에셋스토어에 올라온 에셋들 파악, 사용 하는 방법을 알려줬다. 생각보다 로딩하고 적용시키고 거기서 안되는것들이 몇 개 있어 서 조금 시간이 지체 됐었다. 다음부턴 미리 에셋 찾아놓고 그 에셋 어찌 쓰는지 알아놓고 수업을하는게 좋을거같다.

 

7일차 :

 

오브젝트 풀링을 플레이어 총알로만 구현했었다 이걸 Eneny로 적용시켜보라고 시켜봤다. 역시나 막히는 부분이 많았다. 그래도 저번보다는 더 나아졌는데 초보적인 실수들이 자주 보였다. 그 부분들은 계속 지적해주되 논리적인 부분들은 지적하지 않고 버그가 생기게 나뒀다. 이렇게 하면 삽질을 하게되고 경험이 된다. 다만 너무 돌아가지 않게 너무 벗어나는 경우엔 올바르게 잡아주었다. 그리고 원래 플레이어는 객체가 하나라서 풀링을 구현하기에 부담이 없었는데 적 생성 객체는 하나가 아니라서 풀링을 해당 스크립트에 바로 하게되면 굉장히 복잡해지게 된다. 이 경험으로 매니저의

필요성ㅈ을 느끼게 해주었다. 여기서! 매니저를 만들었다면?? 싱글턴까지 알려주기 너모 자연스럽다. "필요성에 의해 기능을 알려주자"는 나의 교육 모토랑 완벽하게 딱 들어맞는 자연스러움이다!!

 

8일차 :

 

스코어 매니저를 만들었다. UI를 간단하게 배워서 만들었고 스코어가 오를 때 마다 자동으로 UI를 갱신되게 해야 하기 때문에 프로퍼티를 배울 필요성이 생겼다. 프로퍼티를 사용해 캡슐화도 배웠다.

 

9일차 :

 

싱글턴을 알려주기 위해 Static에 대해 알려줬다. 스태틱을 왜 사용하는지 사용했을때 어떤 편리함이 있는지 어떤 제약이 있는지 직접 해보며 느끼게 해줬다. 그리고 이 특성을 이용한 디자인 패턴 싱글턴을 알려줬다. Ppt 하루 꼬박 만들었는데 48분만에 격파당함 꺼흑마이갓

 

10일차 :

 

진짜 심플한 슈팅게임을 하나 만들고 있는데 2개월차 부터는 이걸 자신이 기획해서 점점 업그레이드 해나가도록 지도해줬다. 요오즘 애들은 슈팅게임을 안해봐서 장르 특성을 모르더라.. 그래서 킹갓겜 동방프로젝트 요정대전쟁 해보라고 파일 주고 기획서 써오라고 과제를 줬다. 해보니까 대 충 감은 잡더라 ㅋㅋㅋ 역시나 기획서 첨 써봐서 미숙한 부분들이 많이 보였다.일단 지금 기획서를 쓰는건 크게 중요한건 아니지만 의문이 들지 않게 서술할 수 있는건 자세히 서술하라고 했음. 그러고 몇가지 잔기술좀 알려줬다. 오브젝트들이 나를 따라오게해서 유체화? 같은 느낌을 내보도록 러프

사용했는데 내가 아직 미숙해 이해가게 설명을 못하겠어서 다음 시간에 더 자세히 다루기로 했다. 그 이후 정적 프로퍼티 만들어서 플레이어 hp 관리하게 만들었다. 확실히 스태틱 쓰면 편해ㅎㅎ \

 

 

11일차 :

 

지금 과외 받고 있는 친구는 이 과외 끝나고 친구들이랑 게임을 만들 생각이라서 기획서 쓰는 것 , 회의 하는 방법 , 마일스톤 기타 등등을 알려줬다. 절대 처음 프로젝트 부터 크게 잡지말고 최대한 작게 하라고 충고했는데 그냥 크게 벌릴 생각인듯 ㅋㅋㅋ

 

12일차 :

 

Lerp의 이동과 translate 이동의 차이점을 직접 보여줬다 . 둘을 직접 비교하면서 어떨때 저 둘을 써야할지 느끼게 해줬다. 그리고 기획서 다듬어서 마무리 지었음... 그래도 아직 많이 미숙해 보이지만 그건 프로젝트 하면서 어떤 부분에서 기획서가 부족한지 느끼게 해줘야 할듯하다

 

14 ~16일차 : 

 

학생한테 저저번주까지 프로토타입 만들어오라고 했는데 잘 수행하지 못해 예상보다 더 만들지 못함... 먼가 애매... 기능 하나 알고리즘을 생각못해서 같이 구현 해보기로 했다. 확실히 좀 쉬어보였는데 막상 또 하니까 조금 복잡해서 이건 내가 구현해서 알려주기로 했다.

 

내가 짠 코드를 리뷰하는건 또 오랫만이라 기부니가 묘했음.. 코드만 보여주는게 아니라 원노트 이용해서 그림으로 먼저 어떤 로직인지 보여주고 그 담에 코드를 리뷰했다. 이게더 알아먹기 쉬움

 

 

 

 

 

 

 

저번에 외주했던 PD님이 삼성에서 주최하는 "2019 드림락서" 라는 행사 ( 삼성 공식 기사 ) 를 진행하시는데 내 전공,직업을 중고등학생들한테 소개해주는 역할이 있는데 해보지 않겠냐고 하셔서 참여해봤다. 내가 게임 프로그래머가 되고 싶다고 마음먹은 계기가 중학생때 NC에서 게임 프로그래머분이 학교에 오셔서 이 직업을 소개해주셔서이다.

 

덕분에 게임을 즐기는것 뿐만 아니라 제작도 하고 싶어졌고 그 분 덕분에 지금 나는 지옥의 길(?)을 걷고 있다 ㅋㅋㅋㅋ 그때 그 개발자분이 수학 물리 영어 국어를 열심히 공부하라고 하셨다. 구체적인 예를 들어가며 설명은 안해주셔서 아무튼 열심히 하라고 해서 열심히 하긴 했는데

 

수포자,영포자가되었었...다.. ㅋㅋㄱㄱ..ㅋㅋ..ㅋ.. 그래도 나중에 재미 붙어서 다시 꾸역꾸역 하긴했는데 지금와서 개발과 공부 둘다 해보니 그때 그 말이 너무 와닿았다. 그래서 내가 그대로 느낀것들 포프TV에서 봤던 지식들 둘이 잘 섞어서 구체적으로 예시를 들어주며 알려줬다.

 

과거 내가 중학생일때 그 개발자분 덕분에 진로 잘 찾아서 지금 내가 스스로 공부하고 개발하는것처럼 오늘 알려줬던 애들도 진로 설정에 도움이 되어 지옥의 길을 걸으면 좋겠구만!!

 

아 그리고 2시간 반동안 호소력있게 떠드니까 진짜 뒤지는줄알았네 목 너무 아픔 ㅠㅠ

유니티 쉐이더 스타트업 처음 읽었을때 빵 터졌던 부분이 RGB 서브픽셀들이 따로 존재하고 있어도 이건 흰색이라고 제발 믿어달라고 했을 때였다. 그만큼 매번 가르치실때 학생들이 "아니 서브픽셀이 따로 존재하고 있는데 왜 흰색임??" 하면서 뇌정지가 왔기 떄문 아닐까

그래서 나는 그걸 이렇게 풀어봤다. 저번에 집구석 이불안에서 트위터하며 열심히 시간을 FLEX 하고 있을때 본건데 되게 RGB 서브픽셀들과 비슷한 원리 라고 생각되서 호다닥 주워놨다.

 

 

그래서 이런식으로 풀어서 설명 해봤다. 나름 쌈박하다고 생각중 자꾸 아이디어가 생각나서 이부분만 3번째 수정중;; 너훟ㅇ훙우ㅠㅠ윻ㄹ유

튜터링을 끝내고 최종 보고서를 학교에 제출해야 한다. 

그 보고서를 올려본다. 

 

와!!!!!!!! 튜터링!!!!!!!! 종강!!!!!!!!!! 마지막 날이라서 무언가를 알려주기보다 우리가 뭘 배웠는지 정리 하면서 뭘 배웠는지 쭉 훑어ㅏ봤다. 그리고 쉐이더 UV 를 안다뤄서 UV 꼭 공부하라고 알려줬고 UV로 불 만드는 예제도 보여줬었음.

 

그리고 내가 팀 빌딩하고 게임 개발 하면서 느끼고 후회했던거 4개를 정리해서 말해줬다.

1. 사람을 믿지마라. 그 사람의 작업물을 믿어라

2. 자신의 작업물에는 스스로 책임감을 가지며 지켜나가라

3. 과몰입하지말고 게임개발은 즐겁게!!!

4. 기술에 집착하지말고 재미에 집착해라

 

나 처럼 이상한 짓 하지말라고 꼭 이 말들 좀 해주고 싶었음 해주면서 왜 이렇게 생각했는지도 말해줬는데 이건 지가 직접 삽질해보고 후회해야 느끼는거라 잘 와닿았을지는 모르겠다. 아무튼 나중에 개발할때 많은 도움이 되었으면 좋겠음.

카툰쉐이더의 마지막 부분인 스펙큘러를 다루게 되었다. 그중 블린 퐁 개념을 짚고 넘어갔다. 이번엔 PPT없이 칠판에 그려가면서 했는데 역시 아직은 동적으로 그려가면서 설명하는건 안익숙해... 진짜 확실하게 알고있는 내용 아니면 알려주면서 뇌정지가 온다...

 

새삼스레 또 나의 부족한점을 느끼는 순간이였는데 그래도 잘 넘어...간거같...다.. 일단 이건 나중에 다시 PPT만들어둬야 나중에 후배들이 복습할떄 이해할수있을거같고 과외 하면서 어차피 이거 또 다루기 때문에 종강이후에 PPT만들어 놔야겠다.

 

스펙큘러 연산 다 한거 그대로 넣으니 스펙큘러 크기가 너무 넓어서 쩅한 느낌이 강해서 제곱을 해주는 이유를 짚어준다든가 그런식으로 작업 하나씩 할떄마다 그게 어떻게 표현되는지 보여주고 알려주면서 진행했다. 그렇게 진행하면서 버그 터지는것도 봐주면서 천천히 진행하니 시간은 금방 갔다.

 

그리고 마지막으로 저 블로그에서는 스펙큘러 크기와 단계별음영은 프로퍼티로 안만들어놨었다. 그래서 단계별음영이랑 스펠큘러 조절하는 프로퍼티를 만들어 보라고 했다. 곧잘 잘하는 친구들도 있고 못하는 친구도 있었는데 시키길 잘 한거같다.

 

이렇게 하니까 코드 어느 부분에서 단계별음영 처리를 하고있는지 스펙큘러 연산처리를 하고있는지 파악을 해야되는데 그것을 할 수 있다는 거 자체가 이제 쉐이더 코드를 읽을 수 있다는 거잖아! 와!!! 그럼 내가 4주동안 고생하면서 수업 준비한 보람이 있지!!

 

사실 어려워 하는 친구들이 많았고 별 이상한 버그가 터질때마다 옆에 붙어서 1:1로 짚어주는데 기억에 남는 친구가 하나 있다. 안되면 " 어헝ㅇ헝 이거 안대요 ㅠㅠㅠㅠ " 하면서 부르는데 약한 소리 하면서 모르는건 모른다고 이야기 해주고 그럼 내가 그부분을 다시 설명해주고 그래도 모른다고 하면 비교,비유 하면서 알 때 까지 설명해줬다. 이런식으로 그 친구는 질문하고 이해는 꼭 하고 넘어갔다. 좋은 태도이고 덕분에 내 실력도 늘었다. 그리고 유니티 C#코드에서 쉐이더 코드에 접근하는 방법이 궁굼하다고 해서 아까 프로퍼티로 만들었던 단계별음영의 갯수 변수에 접근해 시간이 지날수록 음영의 객수가 늘어나는 기능을 만들어봤다. 이렇게 해서 쉐이더는 끝!!!

 

다음주 화요일 11일차를 마지막으로 튜터링 종강!@!@!#@$!@~!~ㅇ이야호우!!!!!!!!!! 마지막이니까 뭔가를 알아보기보다 내가 팀빌딩하면서 삽질했던 부분 , 앞으로 뭘 공부하는게 좋을지 , 우리가 배운걸로 뭘 할 수 있을지 , 이런것들을 정리해서 이야기 해볼 생각이다.

+ Recent posts