아크로폴리스

제목소융과 게임콘텐츠 커리큘럼의 문제점 및 대안 제시2019-10-01 23:55:10
작성자

엄청 과격(?)하게 글을 작성하기는 했습니다만 그부분은 귀엽게 봐주시고 진지하게 읽어주시길 바랍니다.


당연히 소융과가 타 대학(청강대, DigiPen)과 다른 부분이 있고, 게임 분야에서도 추구하는 분야가 다르겠지만, 그럼에도 불구하고 문제점이 많이 있습니다... 솔직히 저희가 뭐 체감형기술이나 가상/증강현실기술 배워봤자 게임 개발에 제일 기초가 되는 부분에서 흔들리면 말짱 꽝 아니겠습니까...



이 글은 교수님들이 읽으셨으면 함.


제일 큰 문제

- 게임 개발 경험이 있는 교수님이 없다 -> 수업할 때 출구가 없다. 본인 경험이 없으니 이렇게 해야한다, 이렇게 코딩을 해야한다 이런게 없고 본인도 책 보고, 공부하고 한 거를 토대로 가르치신다. 코딩이나 이론적 기반은 압도적으로 학생들보다는 좋겠지만, 정작 게임 개발 경험은...

본인이 스스로 ppt만들고 게임 개발 가르칠 수 있는 교수가 없다... 스스로 매뉴얼을 만들 수가 없다...

그러니 커리큘럼도 개판...


1. 게임프로그래밍입문


경희대학교에서 가르치는 게임 프로그래밍 입문의 문제점

a. 우선 교재부터 문제가 있다. 교재 읽어본 사람 있으면 알겠지만 설명이 정말 잘 안되어있다.

b. 교재 작성자를 보자. Joseph Howse와 Alejandro Rodas de Paz다. Joseph Howse 검색해보면 OpenCV 전문가라고 나온다. Alejandro Rodas de Paz는 Telefonica라는 통신회사에서 지금 일하고 있다.

둘 다 게임 개발자도 아니고, 게임 전공도 아니다. 그나마 Alejandro가 딱 대학생 때 1년 게임 디자인 배우고 결국엔 통신회사 가셨다. 이런 사람들이 만든 교재를 게임프로그래밍입문이라고 쓰고 있다.

c. 수업 초반에 파이썬을 가르친다. 이거 시간 낭비다. 파이썬은 이미 알거라고 예상하고 바로 진도를 나가는 것이 시간 낭비 안하고 바로 본론으로 가는 게 나을 듯

d. 이대호 교수님도 마찬가지로 인공지능 전문가지 게임 개발자가 아니다. 그럼에도 수업 맡아주시는게 감사하지만, 그래도 솔직히 조금 아쉽다. 현업에서 어떤 식으로 하는지 모르실 것 아닌가.


DigiPen과의 경우

a. DigiPen은 애초에 게임 디자인과 학생들 마저 C/C++ 언어를 수강하고 자체 게임 엔진을 사용해서 코딩을 한다. 아니, 애초에 이들의 수업 커리큘럼을 보면 게임 프로그래밍 입문이라는 강의 자체가 없다. 그나마 유사한게 1. Game Implementation Techniques 이다. 과목 설명을 읽어보자:

"본 강의에선 게임 개발 기술들과 엔진 아키텍쳐를 가르친다. 학생들은 게임 아키텍쳐의 근본적인 개념들(game-system component separation 및 game flow 등)을 탐색하고, game state manager, input/output handler, frame rate controller와 같은 핵심적인 내용들을 학습한다. 본 강의에선 Windows 프로그래밍, state machine, collision detection algorithms를 소개한다. 이 내용들을 토대로 학생들은 고전게임을 리메이크한다. 게임 개발의 일환으로, 학생들은 그들만의 collision, vector, matrix 라이브러리를 구축하고 확장하며, 이를 통해 간단한 물리 엔진을 구축한다. 또한 학생들은 space partitioning, particle systems, map editors와 같이 게임 기술 및 엔진 아키텍쳐의 고급 개념들을 간단하게 학습한다."


b. 당장 2학년 1학기 과목이다. 경희대의 수업과는 많은 차이가 난다.

c. 게임 프로그래밍 입문에서 collision detection, input/output handler, 다 비슷하게는 한다. 근데 이 수업만큼 본격적으로, 실무적으로 할까? 그건 의문이 든다. 애초에 직접 학생들이 본인의 라이브러리를 만들어 물리엔진을 구현하는 거부터 엄청 큰 차이가 난다고 생각한다.


결론: 게임 프로그래밍 입문을 어떤 언어든, 어떤 라이브러리를 사용하든, 학생들로 하여금 위에도 소개된 기초적인 개념들을 학습할 수 있도록 스스로 코딩을 하여 물리엔진 정도는 구축할 수 있는 수준까지 끌어올리는 수업으로 만들자. 선수과목으로 웹/파이선을 하든 객프를 하든 그것은 언어에 달린 문제. DigiPen에서는 C/C++로 수업한다.


2. 게임 UI/UX 디자인

a. 솔직히 강의계획서만 읽었을 땐 이게 UI/UX 디자인인지 유니티 수업인지 모르겠다.

b. 애초에 게임 콘텐츠 트랙이 어떤 언어/프로그램을 중심으로 가르치는지 줏대가 없으니 이런 문제가 발생하는 듯. 학과 차원에서 아예 유니티든, 언리얼이든, Godot Engine이든, DigiPen처럼 깡 C/C++ 코딩이든 밀어서 이런 불상사를 방지해야한다.

c. 1번과 마찬가지로 게임 개발 경험이 없는 교수님이다.


결론: 애초에 선수과목을 설정하거나, 강의계획서에 유니티 기초 지식을 갖고 들으라고 쓴다.

더 좋은 결론: 그냥 아예 게임콘텐츠에서 개발 언어/툴을 하나로 정하도록 하자. 오픈소스 좋으면 Godot Engine 나쁘지 않다고 생각한다. C++도 되고, C#도 되고, 전용 스크립트 언어인 GDScript도 파이썬이랑 비슷해서 웹/파이선 들은 학생들 입장에선 괜찮다.


3. 게임그래픽프로그래밍


경희대

a. 그나마 현재 게임콘텐츠 프로그래밍 강의 중 제일 낫다. 정확하게 무엇을 배워야하는지 딱 딱 딱 찝어서 잘 가르치시는 것 같다

b. 그래도 여전히 게임 개발 경험이 전무한 교수님이 가르치기는 한다

c. 수업 안내 사항에도 딱 C++ 못하면 듣지 마라라고 정확하게 말해준다

d. 게임 제작까지 한다. very good

e. 근데 이거 수업 하나가 끝이다. 게임 그래픽은 여기서 더 배울 수가 없다. 그나마 컴퓨터그래픽스라는 컴공 수업이 있긴한데 그래도 딱 두 개다. 게임은 그래픽 프로그래밍이 정말 중요한데 여기서 끝이다.


DigiPen

a. 아예 컴퓨터 그래픽스라고 따로 과목 네이밍이 정해져있다.

b. 컴퓨터 그래픽스 1라는 2학년 1학기 수업이 있다. 경희대의 게임그래픽프로그래밍과는 다르게 한 학기를 2d에 할애한다.

d. 컴퓨터 그래픽스 2. 2학년 2학기 수업에선 3d 모델을 2d에 출력하는 3d graphics pipeline을 공부한다.

e. 고급 컵퓨터 그래픽스 1. 3학년 1학기 수업. GPU 아키텍쳐, 그래픽스 API (OpenGL, DirectX) 등 및 텍스쳐, illumination models, transparency, 쉐이딩 알고리즘, 매핑 기술(bump mapping, environment/reflection mapping 등등), 그림자 등을 공부한다.

f. 고급 컴퓨터 그래픽스 2. CPU GPU, 즉 하드웨어 수준까지 고려해주는 단계다. spatial data structure(binary space-partitioning trees, octrees, kd-trees, grid data structures), object-culling methods(occlusion, viewport, portal), bounding volumes 및 이를 이용한 충돌탐지, 기타 관련된 기하학적 연산 등... 배운다...

e. 당장 DigiPen의 경희대로 치면 게임콘텐츠 컴퓨터심화 학생들은 2학년 때부터 컴퓨터 그래픽스 1, 2, 3학년 땐 고급 컴퓨터 그래픽스 1, 2까지는 듣는다.


결론: 게임 그래픽 프로그래밍을 두 가지로 나누어 좀 더 세분화해서 가르쳤으면 한다. 게임 2d 그래픽 프로그래밍, 게임 3d 그래픽 프로그래밍 이렇게 나누던지, 게임 그래픽 프로그래밍, 고급 게임 그래픽 프로그래밍 이렇게 나누던지...


4. 게임엔진프로그래밍


경희대

a. 이거 도대체 뭘 가르친다는건지 모르겠다. 엔진 만드는 법을 가르치는건지... 유니티 엔진을 쓰는 법을 가르치겠다는건지...

b. 강의 설명에는 뭐 오픈소스 게임엔진 Steam이라고 써있는데 도대체 무슨 엔진인지 모르겠다. 설마 게임 스토어 플랫폼 Steam을 의미하는건가?

c. 강의 계획서 보니까 게임에 사용되는 최신 기술인 AR/VR, sound, network, AI 기술을 주로 배운다고 적혀있는데... 게임 엔진이랑 도대체 무슨 상관인지...

d. 강의계획서의 교재도 게임 디자인 교재랑 유니티 교재가 전부다...


DigiPen

a. 무려 게임 엔진 프로그래밍은 5학년 수업이다...(즉 대학원생이나 졸업 이전에 들으라는 소리...)

b. 선수과목으로 "Fundamentals of Game Development. 5학년"와 "Advanced Computer Graphics. 5학년"이 있다.

c. Fundamentals of Game Development: 2d / 3d 게임 엔진 아키텍쳐, 게임 개발 환경, 실무에서 사용하는 여러 기술들(공간분할, 인공지능, 파티클, 충돌), 물리엔진 등...이를 통해 다양한 게임에 필요한 기술들을 개발하는 법을 배움

d. Advanced Computer Graphics: 1) 오브젝트 외관에 디테일을 추가해주는 기술들(라이팅, 쉐이딩, 텍스쳐 매핑, bump 매핑, environmental 매핑, 그림자 알고리즘) 2) 보이지 않는 다각형/오브젝트를 지워주는 알고리즘(BSPTree, occlusion, portal 등)
e. 게임엔진프로그래밍 수업에서는: 데이터관리, 렌더링, 네트워크, dynamics, 입력제어기, 오디오, editing tools, modeling tools, 저수준 그래픽스를 다루는 것을 피하기 위한 고수준 API.

f. 당연히 5학년 수업이니까 게임이 안된다.



결론: 차라리 게임 엔진 프로그래밍이 아니라 게임 엔진 아키텍쳐라고 강의 이름을 바꾸고, 교재는 그 유명한 Jason Gregory의 Game Engine Architecture (번역본도 있음)을 사용해야한다. 적어도 게임 엔진의 구조는 이해하게 해주던가...


청강대학교랑도 한 번 비교해보겠습니다. 옆에 <> 이건 경희대 비슷한 과목과 비교.

청강대학교 게임 커리큘럼 (프로그래밍)

1학년 1학기 -> 게임프로그래밍기초<웹파이선프로그래밍-게임프로그래밍입문>, 게임프로그래밍실습

1학년 2학기 -> 객체지향프로그래밍<객체지향프로그래밍>, 윈도우프로그래밍, 게임자료구조<자료구조>, 게임네트워크기초<컴퓨터네트워크>

2학년 1학기 -> 프로그래밍 언어의 이해, 게임 그래픽 프로그래밍<게임그래픽프로그래밍>, 게임 알고리즘, 게임 네트워크 프로그래밍<컴퓨터네트워크>, 게임 데이터베이스<데이터베이스>

2학년 2학기 -> 게임 그래픽 엔진 기초<게임엔진프로그래밍>, 게임 엔진의 이해와 활용, 게임 인공지능, 온라인 게임 프로그래밍, 소프트웨어공학<소프트웨어공학>

3학년 1학기 -> 그래픽 엔진 활용1,2, 게임엔진 실습, 쉐이더 프로그래밍

3학년 2학기 -> 게임그래픽엔진연구, 게임프로그래밍포트폴리오, 게임프로그래밍최적화기법, 게임운영체제, 시스템프로그래밍, 애플리케이션제작실습


뭐 당장 과목만 나열해도....... 과목의 양에서 밀린다... 옆에 <> 괄호 없는 과목이 도대체 몇 개나 되는 건지...



솔직히 현재 소융과 겜콘 수업 다 들으면 도대체 무슨 프로그래머가 되는 건지 모르겠다

그래픽스 프로그래머? 겨우 한 학기 갖고?

클라이언트 프로그래머? 클라이언트/엔진의 구조도 모르는데?

툴 프로그래머? 엔진 프로그래밍에서 안가르쳐주는데?

게임플레이 프로그래머? 그나마 이게 가깝긴 한데....

게임 서버 프로그래머? 그나마 이성원 교수님 계서서 이건 가능할 듯?

인공지능 프로그래머? 게임 인공지능 과목이 없는데? 뭐 머신러닝 쪽으로 해서 수업 들으면 가능은 하겠다만 전통적인 인공지능 분야는 알아서 공부해야할듯



3줄요약

1. 게임 개발 경험 있는 교수가 없다

2. 그래서 교과목들 상태가 타대학에 비해 심각하다

3. 이거 뭐 사실상 게임 프로그래밍은 스스로 공부해야댐;;


경희대 소융과에 제안하는 제안점 (개인적인 제안)


1. 게임콘텐츠트랙의 커리큘럼을 심각하게 재고한다.

2. 정확하게 선수과목을 정하거나, 애초에 강의계획서에 C++이든 뭐든 알고 오라고 공지한다

3. Godot Engine을 기반으로 모든것을 공부한다. (디자인심화)

3.1 Godot Engine의 스크립팅 언어를 이용한 게임 프로그래밍 입문 (게임플레이 프로그래밍)

3.2 Godot Engine를 배웠으니, 이를 기반으로 UI/UX 디자인이든 한다.

3.3 Godot Engine을 통해 엔진 아키텍쳐를 배운다

3.4 Godot Engine의 경우 OpenGL이랑 Vulkan 쓰니깐 게임그래픽프로그래밍 수업 때 예시로 들면 될 듯.

4. 아니면 애초에 C/C++로 정말 깡 코딩한다. (컴퓨터심화)

4.1 게임프로그래밍입문 정도는 뭐 Godot Engine 사용하고

4.2 그래픽스 분야를 엄청 늘려야한다. 2학년 때부턴 그래픽스에 빠져 살게

4.3 C/C++도 객프 하나로는 불충분할 듯? 적어도 유명 C++ 책들은 전부 공부하게 만들어야하지 않나... 솔직히 객프 수강생 중 C의 자료형을 기반으로 라이브러리 없이 자신만의 string 클래스 구현해보라고 하면 할 수 있는 사람이 몇이나 될까? 해도 백퍼 메모리 누수날 듯.

4.4 어차피 C/C++로 이 정도 할 줄 아는 사람이면 진짜 어딜 가든, 어떤 엔진 쓰든지 간에 다 통달할 듯.

5. 아니면 웹파이선 수업 외로 C# 수업을 개설해서 디자인 심화 친구들은 유니티로 처음부터 끝까지 가던가...

 

댓글
자동등록방지
(자동등록방지 숫자를 입력해 주세요)